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.
A security scanner flagged a line that looks like it might contain a shady link, but the line just creates a simple text status message. There is no link or network request anywhere near it.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. The match applies to this repository.
Contextual assessment: The 'shady-link' scanner signal at line 259 matches a line that constructs a status string with template literals ('- Active hides (${activeHides.length}/17): ${activeHides.join(', ')}'). No URL, domain, or external link exists at this line or in the surrounding code. The JS-X-Ray rule likely matched the backtick string concatenation pattern without a verified malicious link. No network fetch or external resource reference is present.
The scanner worried about fetching data and then doing something dangerous with it. But the fetch goes to SillyTavern's own backend (not the internet), and the response is just read as text to display AI responses. No code is run from the response.
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 signals correlation between a network retrieval (fetch to '/api/backends/chat-completions/generate' at line 230) and a 'code execution sink' (parsing the streaming response body). The fetch targets SillyTavern's internal backend proxy, not an external domain. The response is parsed as newline-delimited JSON chunks; only text content is extracted and appended. No eval(), Function(), innerHTML assignment, or any dynamic code execution exists. The 'sink' is purely text accumulation. This is the intended design of an AI assistant that sends messages to the user's configured chat completion API.