No material or immediate-danger item was identified.
JavaScript analysis reported javascript.xray.unsafe-regex
Minor caution · medium confidence
A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
- 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
- tools/gd-test/lib/checks.mjs:113
JavaScript analysis reported javascript.xray.unsafe-regex
Minor caution · medium confidence
A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
- 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
- prompt-renderer.js:186
JavaScript analysis reported javascript.xray.unsafe-regex
Minor caution · medium confidence
A crafted input might briefly slow or freeze the local client, without showing broader security harm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.
Impact: low · Exploitability: plausible
Developer action: Bound the input length or replace the expression when practical.
- 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
- systems/variable-system.js:112
Contextual expected matches (17)
JavaScript analysis reported javascript.credential-to-network
Expected behavior · high confidence
This file contains a list of warning patterns that check user-uploaded files for risky code. It is a safety feature, not a threat. It does not steal cookies or send data anywhere.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network. The match applies to this repository.
Contextual assessment: The code defines an array of regex patterns used to scan user-uploaded JavaScript files for dangerous APIs including document.cookie. It does not read, send, or exfiltrate cookies itself. The pattern is defined for detection purposes only and is never invoked on the extension's own data. The scanner alert mistakenly treats the pattern definition as actual credential access and network transmission, which is not the case.
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.credential-to-network
- File role
- production
- Source
- systems/user-provider-loader.js:16-19
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The extension uses a security token (CSRF) to safely communicate with your local SillyTavern server. It only sends this token to your own computer, never to outside servers. This is a good security practice.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. The match applies to this repository.
Contextual assessment: The code reads window.csrfToken and conditionally includes it in HTTP headers only when the endpoint is localhost or 127.0.0.1. This is a security best practice: the CSRF token is only sent to the SillyTavern server itself, not to external APIs. The scanner 'shady-link' signal is a false positive; the behavior is intentional and safe.
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.shady-link
- File role
- production
- Source
- utils/custom-api.js:70
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
Same as group 3.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval. The match applies to this repository.
Contextual assessment: Similar to group 3, this is another instance of new Function('ctx', entry.code) in the message/round phase of the script executor. Same safeguards apply.
Impact: low · Exploitability: plausible
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- systems/script-executor-system.js:301
JavaScript analysis reported javascript.xray.serialize-environment
Expected behavior · high confidence
This file is a test helper that runs command-line tools using the same environment as the developer's computer. That's normal and expected—there's no secret stealing or suspicious behavior here.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment. The match applies to this repository.
Contextual assessment: The function `runCommand` in `file` defaults `env` to `process.env` and passes it to `spawn`. This is standard behavior for a utility that runs child processes with the host environment, especially in a development/test context. The file is part of the automated test platform (not shipped to end users) and does not exfiltrate or misuse the environment. The scanner signal 'serialize-environment' is a false positive in this context.
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.serialize-environment
- File role
- production
- Source
- tools/gd-test/lib/process.mjs:5
JavaScript analysis reported javascript.xray.serialize-environment
Expected behavior · high confidence
This is a test runner tool that reads settings from environment variables to control how tests are run. It does not steal credentials or send data anywhere.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment. The match applies to this repository.
Contextual assessment: The CLI test runner reads GD_TEST_SEED and GD_TEST_ST_ROOT from environment variables at lines 44-45 and passes them to child processes at lines 146-148. This is normal configuration for deterministic test execution and optional SillyTavern contract tests. No credential access or exfiltration; the environment variables are used only for test configuration.
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.serialize-environment
- File role
- production
- Source
- tools/gd-test/cli.mjs:43
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
The extension lets you write custom scripts to control how characters talk. This is a powerful feature that could be dangerous if you run scripts from untrusted sources, but the extension warns you and limits how long scripts can run.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval. The match applies to this repository.
Contextual assessment: The script executor uses new Function('ctx', entry.code) to run user-defined scripts during the decision phase. This is an intentional feature documented as 'custom agent and script executor'. The code includes safeguards: per-script timeouts (10s), error handling, cloned context to prevent cross-script mutation, and logging. However, new Function has access to the global scope, so untrusted scripts could access window/document. The risk is partially mitigated by user control (scripts are manually added via GUI) and the security scan in user-provider-loader.js that warns about dangerous APIs.
Impact: low · Exploitability: plausible
Developer action: Consider adding sandboxing (e.g., iframe or Web Worker) for user scripts to limit global scope access, if untrusted script execution is a concern.
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- systems/script-executor-system.js:203
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
The extension fetches a list of AI model names from a server you provide. It then shows these names in a menu for you to pick from. It never runs or executes the data it receives.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.
Contextual assessment: The fetchModels function performs an HTTP GET to list models from a user-configured endpoint. The response is parsed as JSON and used to populate a dropdown list. No eval, Function constructor, innerHTML with script, or any other dynamic execution mechanism is applied to the fetched content. The scanner's correlation of network retrieval with code execution is not substantiated by the actual code flow.
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
- ui/sections/agents.js:45-67
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
This file has a safety checker that looks for dangerous functions in uploaded files. It does not actually run those functions or download anything. It is a protective measure, not an exploit.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.
Contextual assessment: The code defines regex patterns for fetch, eval, and other APIs as part of a static analysis scanner for user-imported modules. It does not perform any network retrieval or dynamic code execution itself. The patterns exist only in a constant array and are used by the scanSource function to warn users. The scanner alert incorrectly correlates these definition patterns with actual network retrieval and code execution, which is inaccurate.
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
- systems/user-provider-loader.js:16-22
JavaScript analysis reported javascript.xray.serialize-environment
Expected behavior · high confidence
This test helper reads a seed value from the environment to make random tests repeatable. It does not access or transmit any sensitive information.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment. The match applies to this repository.
Contextual assessment: The code reads process.env.GD_TEST_SEED at lines 9 and 49 to seed a deterministic random generator for property-based tests. No environment serialization or credential exposure; the env var is used solely for test reproducibility and is optional.
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.serialize-environment
- File role
- test
- Source
- tests/harness/property.mjs:9
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
This code downloads a character card and world book from files that come with the extension and installs them into your SillyTavern. It does not run or execute any of the downloaded content.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.
Contextual assessment: The gdAssistant section fetches static assets (character.json, avatar.png, world-book.json) from the extension's own bundled asset directory. It then posts them to SillyTavern's internal API endpoints (/api/characters/create, /api/characters/edit-avatar, /api/worldinfo/import) using proper CSRF tokens. No dynamic code execution, eval, or innerHTML injection occurs. The scanner's correlation is a false positive.
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
- ui/sections/gdAssistant.js:5-18
JavaScript analysis reported javascript.xray.obfuscated-code
Expected behavior · high confidence
This file contains simple helper functions to clean up and extract JSON from text. The code is clear and readable, not hidden or scrambled. There is no security concern.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code. The match applies to this repository.
Contextual assessment: The file contains straightforward JSON parsing and sanitization utility functions. There is no obfuscated code; the functions are well-commented and use standard string manipulation and regex. The scanner 'obfuscated-code' signal is a false positive with low confidence.
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
- utils/json-utils.js:1
zizmor reported artipacked
Expected behavior · high confidence
This is a standard test report upload. There are no secrets or passwords involved.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked. The match applies to this repository.
Contextual assessment: The workflow uploads test result JSON files as CI artifacts. No credentials or secrets are included in the artifact path or content. The zizmor 'artipacked' rule flags artifact uploads that could potentially leak secrets, but this workflow has minimal permissions (contents: read) and only uploads non-sensitive test reports.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/gd-test.yml:23-24
JavaScript analysis reported javascript.xray.serialize-environment
Expected behavior · high confidence
This is a test file that looks for an environment variable to know where SillyTavern is installed. It's only used during testing and doesn't have any malicious behavior.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment. The match applies to this repository.
Contextual assessment: The test reads process.env.GD_TEST_ST_ROOT to locate the SillyTavern source directory for a contract test. No serialization, credential access, or exfiltration occurs; the environment variable is used only for conditional test setup and skipped when absent.
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.serialize-environment
- File role
- test
- Source
- tests/contract/sillytavern-event-source.test.mjs:8
JavaScript analysis reported javascript.xray.data-exfiltration
Expected behavior · high confidence
This alert is not a real security issue. The code simply imports a standard Node.js function to get a temporary folder for running tests. No data is being stolen or sent anywhere.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.data-exfiltration. 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.xray.data-exfiltration
- File role
- test
- Source
- tests/unit/gd-test-checks.test.mjs:3
Credential access and network transmission in one file
Expected behavior · high confidence
This code sends NPC character information to SillyTavern's own server to create a new character card, using a required security token. It is not stealing credentials or sending data to an attacker.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: The fetch call on line 143 sends NPC character data to the SillyTavern internal API endpoint /api/characters/create along with a CSRF token obtained from the same origin via /csrf-token. This is a core feature of the extension: importing an NPC as a character card. The token is used only for server-side CSRF protection, not exfiltrated. No credentials, API keys, or sensitive data are sent to an external destination. The scanner alert misidentifies this legitimate same-origin API interaction as credential exfiltration.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 5
- Rule
- credential-exfiltration
- File role
- production
- Source
- systems/npc-system.js:143
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
The extension loads its settings page from its own files on your computer. It doesn't download anything from the internet or run any code from the network. This is the normal way extensions show their settings.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.
Contextual assessment: The renderSettingsTemplate function fetches an HTML template file from the extension's installed directory. This is a standard pattern for loading UI templates. There is no dynamic code execution. The network retrieval is to a local path and is directly related to the extension's settings UI initialization.
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
- ui/settings-init.js:11-65
Credential access and network transmission in one file
Expected behavior · high confidence
The extension includes a safety check that looks for dangerous code in files the user wants to import. It doesn't do anything bad itself—it's a watchdog, not a thief.
Technical evidence
Scanner reason: A credential source and an outbound network operation were detected in the same file.
Contextual assessment: This file defines DANGEROUS_PATTERNS containing regex patterns to detect credential theft and network exfiltration APIs. The code never accesses document.cookie, localStorage, or makes network requests itself; it scans user-provided JavaScript source code for these patterns as a security warning mechanism before import. The scanner alert misinterprets the pattern definitions as actual credential access.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- tavernkeeper 5
- Rule
- credential-exfiltration
- File role
- production
- Source
- systems/user-provider-loader.js:16