TavernKeeper Scan Report

kikyoicecream/next-choices

Commit 3c16657 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 (2)

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension fetches its own settings panel HTML file from its local installation folder and displays it. This is a standard pattern for SillyTavern extensions. The fetched content is a bundled local file, not something from an external or attacker-controlled source, so there is no real download-and-execute risk.

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 correlated a network retrieval primitive (fetch) with a code execution or HTML injection sink. The fetch in loadSettingsHtml retrieves settings.html from a hardcoded same-origin local path (scripts/extensions/third-party/next-choices/settings.html) — the extension's own bundled file. The fetched text is passed to $(html) and appended to the settings DOM in initSettingsPanel, which is standard for SillyTavern third-party extensions that load their settings UI dynamically. The other potential sink, $btn.html(formatted) in renderChoices, injects output from ctx.messageFormatting(), which per the code comments is SillyTavern's own DOMPurify-sanitized formatting pipeline. Neither sink receives attacker-controlled data from the fetch; the fetch destination is a trusted local bundled file, and model output goes through ST's sanitizing formatter. No demonstrated attacker-controlled path to code execution exists.

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:407-471

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The extension's source code is clearly written and readable with helpful comments. There is no hidden or scrambled code. The scanner's alert appears to be a false positive triggered by ordinary patterns in the file.

Technical evidence

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

Contextual assessment: The JS-X-Ray obfuscated-code signal (scanner confidence low) does not correspond to any actual obfuscation in the supplied source. The file is a well-structured IIFE with clear variable names (MODULE_NAME, CONTAINER_ID, DEFAULT_SETTINGS), extensive comments explaining design decisions, and straightforward control flow. There are no encoded strings, eval of obfuscated payloads, packed code, or concealed logic. The code reads SillyTavern context, builds prompts, sends raw generation requests through standard ST APIs, renders UI via jQuery, and persists settings through ctx.saveSettingsDebounced — all visible and proportional to the stated purpose of generating suggested player responses.

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

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity