TavernKeeper Scan Report

mokimoko/SillyTavern-ScenarioCrafter

Commit 0481582 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 6 low

What this review found

No material or immediate-danger item was identified.

Contextual expected matches (5)

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension asks SillyTavern itself for the user's own lorebook content so it can be included in the writing prompt, exactly as advertised. Nothing downloaded is ever run as code, and no data is sent anywhere outside the user's own SillyTavern setup.

Technical evidence

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

Contextual assessment: Detailed technical wording was omitted by the public report safety filter.

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
src/generator.js:631-654

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This is straightforward interface code for the extension's popup window. Nothing is hidden or encoded, and it doesn't do anything the documentation doesn't describe.

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 raised a low-confidence obfuscation signal, but the supplied source is a plainly written modal UI class. It builds form controls with a jQuery template, caches element references, populates dropdowns from the SillyTavern context, and escapes character display names before inserting them into option markup. There is no obfuscation, encoded content, hidden execution, or data flow beyond the documented UI and generation features.

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
src/modal.js:1

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension asks SillyTavern for the lorebook entries the user already has on their own machine and shows them in a picker dialog so the user can choose which ones to include in a generated scenario. It only talks to the local SillyTavern server, does not run or evaluate anything it receives, and properly sanitizes the displayed text. This matches the feature the extension advertises, and the automated scanner's warning is a false alarm from seeing both a download and interface-building code in the same file.

Technical evidence

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

Contextual assessment: The flagged region contains a fetch to a same-origin SillyTavern endpoint that loads the user's own world info book entries, first attempting the host context's loadWorldInfo method and falling back to a POST to the local world info API with host-supplied request headers. The retrieved data is parsed as JSON and used only to build the world info selection modal; text fields are passed through an HTML escaping helper before insertion, and no dynamic evaluation, script injection, external destination, or persistence occurs. This is a direct, proportionate implementation of the project's documented World Info entry-picker feature, and the correlation between a network primitive and a DOM-building sink does not constitute a download-to-execution path. The unescaped entry identifier interpolation is a minor hygiene note at most, since the values originate from the user's own locally stored world books rather than an attacker-controlled source.

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
src/worldinfo-selector.js:182-210

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The file looks like ordinary, human-readable code for a roleplay scenario extension. Despite the scanner's automated suspicion, nothing here is hidden or disguised, and every action it takes is described in the project's documentation.

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 an obfuscation signal at low confidence, but the supplied source is plain, readable JavaScript. It imports SillyTavern core modules, registers slash commands, adds a UI button, lazily imports local project modules, and exposes a small public API on the window object. There is no encoded payload, eval, minified blob, string deobfuscation, or concealed behavior; all capabilities are disclosed in the README and match the extension's stated purpose.

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
index.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file handles the extension's preferences screen and saves your choices on your own device. The code is completely open and readable, and it does only what the project's documentation says it does.

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 an obfuscation signal at low confidence, but the supplied source is readable settings-management code: default configuration values, a settings panel injected into the SillyTavern extensions drawer, event listeners that update and persist settings to localStorage via the host's debounced save function, and a slash-command-driven profile listing. No obfuscation, encoded payloads, hidden network calls, or concealed execution exist. Persisted data is user-authored configuration stored locally, matching the documented Settings feature.

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
src/settings.js:1

Related contextual observations

World book entry identifier interpolated into HTML without escaping

low risk · medium confidence

Most of the text shown in the picker is cleaned before being added to the page, but the small identifier number for each entry is not. In practice these identifiers come from the user's own data and are safe, but cleaning them too would be a simple consistency improvement.

Technical assessment

When rendering each entry row, most text fields are passed through the HTML escaping helper, but the entry identifier is interpolated directly into a template string that is then appended to the document. World book entry identifiers are normally server-generated and not attacker-controlled, so this is not a demonstrated exposure; however, applying the same escaping to every interpolated value would make the rendering uniformly defensive against malformed or unexpected identifier values.

Impact: low · Exploitability: unlikely

Developer action: Apply the same HTML escaping helper to the entry identifier when building the entry row template.

Sources:

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity