TavernKeeper Scan Report

N0819/Sonder_Engine

Commit 09985af Reviewed

No material or immediate-danger concern was identified in this review.

This advisory report describes what the named tools and review process found at one exact commit. Unknown or unobserved behavior may still exist.

0 immediate danger 0 material 7 low

What this review found

No material or immediate-danger item was identified.

Deterministic technical evidence (3)
  • zizmor reported artipacked · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/ci.yml:77

  • zizmor reported artipacked · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/ci.yml:38

  • zizmor reported artipacked · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/ci.yml:115

Contextual expected matches (2)

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner suggested this code might be obfuscated, but the actual code is completely readable and well-documented. It simply creates settings dialogs for the application. There is nothing hidden or deceptive in it.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code. The match applies to this repository.

Contextual assessment: The scanner flagged this file with an obfuscated-code signal at low confidence. The supplied source is plain, readable JavaScript with clear variable names, descriptive comments, and straightforward DOM construction calls. It builds UI modals for chat settings by calling a local api helper and el/modal helpers. There is no encoded data, no eval or Function constructor, no string obfuscation, no hex or unicode escaping of identifiers, and no concealed execution. The code's behavior is fully transparent and matches the project's stated purpose of a local interactive-fiction engine frontend.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.obfuscated-code
File role
production
Source
static/js/settings.js:1

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The scanner flagged a regular expression as potentially unsafe, but the expression is simple and bounded. It only matches a fixed list of tag names and an optional color name made of letters. There is no risk of it causing performance problems or any other security issue.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.

Contextual assessment: The flagged regex matches a fixed alternation of literal tag names (i, em, b, strong, u, s, mark, sup, sub, code, font) with an optional quoted color attribute restricted to lowercase letters. There are no nested quantifiers, ambiguous alternations, or backtracking-prone constructs that could cause catastrophic performance. The pattern is used via matchAll on prose text to identify a closed allowlist of emphasis tags, which is proportional to the project's stated purpose of rendering inline emphasis from model output without exposing innerHTML. No unsafe regex behavior is demonstrated.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
static/js/chat.js:234

Related contextual observations

Emphasis-tag allowlist regex is bounded and safe

low risk · high confidence

The regular expression the scanner flagged is straightforward and cannot cause the performance problems the scanner was checking for. It is used to recognize a small, fixed set of formatting tags in story text.

Technical assessment

The regex at line 234 uses a finite alternation of literal strings for tag names and a single character class with a plus quantifier for the optional color attribute. This structure cannot produce exponential backtracking on any input. The surrounding code confirms it is applied only to prose text to extract a closed set of emphasis tags, and all resulting DOM nodes are created via createElement and createTextNode, never innerHTML.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

settings.js is readable, unobfuscated UI code

low risk · high confidence

The code is entirely straightforward and readable, with no attempt to hide what it does. The scanner's low-confidence obfuscation flag is a false positive.

Technical assessment

The file opens with a comment header and proceeds to define event handlers that fetch and save chat configuration via API calls. All identifiers are meaningful, all string literals are plain text, and all logic is direct DOM manipulation through helper functions. No obfuscation constructs are present.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity