TavernKeeper Scan Report

its-a-unixsystem/SillyTavern-msgcompact

Commit 9ed526c 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 2 low

What this review found

No material or immediate-danger item was identified.

Contextual expected matches (1)

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension downloads its own settings panel file from its local folder and uses standard UI-building code to display it. There is no evidence that it downloads remote content and runs it as code. The model text it handles is shown safely on screen, not executed.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.

Contextual assessment: The scanner correlates a network retrieval primitive with a code execution sink across lines 61-309. The only fetch call (line 309) retrieves a local settings.html template from the extension's own MODULE_DIR and appends it to the settings panel, which is standard SillyTavern extension UI loading. The jQuery $() calls use static HTML template strings (BUTTON_HTML, buildBlock) and are not dynamic code execution sinks such as eval or new Function. User- or model-supplied content (mc.text, compaction results) is inserted via $.text() (line 195), which treats it as plain text, not as HTML. The generateRaw and ConnectionManagerRequestService.sendRequest calls are standard SillyTavern generation APIs that send a prompt and return text; they do not execute code. There is no data flow from a remote fetch into any execution sink. The scanner's correlation appears to stem from jQuery's $() overload being interpreted as a code sink combined with the local fetch, but no untrusted or remote content reaches an execution path.

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.download-to-execution
File role
production
Source
index.js:61-309

Related contextual observations

Model output inserted via safe text() method

low risk · high confidence

Model-generated compaction text is displayed using a method that treats it as plain text, preventing any embedded scripts from running.

Technical assessment

The compaction result text returned from the LLM is inserted into the DOM via $block.find('.mc_text').text(mc.text) on line 195, which uses jQuery's text() method. This safely escapes content as plain text rather than parsing it as HTML, preventing any script injection from model output.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity