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.
The flagged line is part of the code that reads streaming AI responses. The 'data:' text is the standard format for server-sent events, not a suspicious link.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. The match applies to this repository.
Contextual assessment: Line 267 contains `line.indexOf('data:') !== 0`, which is part of a standard SSE (Server-Sent Events) stream parser. The 'data:' prefix is the protocol-defined field prefix for SSE messages per the HTML specification. The parser reads streaming responses from OpenAI-compatible endpoints, parsing JSON deltas from each data line. There is no outbound link, redirect, or suspicious URL construction. The scanner's shady-link signal is a false positive triggered by the 'data:' string literal used in SSE parsing.
The code is clearly readable and well-documented with plain English comments. There is no obfuscation. The scanner flag is a false positive, likely triggered by SVG icon path data that looks like encoded strings to automated tools.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code. The match applies to this repository.
Contextual assessment: Line 1 begins a standard JavaScript comment block. The file file is plainly readable source code with extensive English comments, clear variable names, and straightforward HTML template literals. The scanner's obfuscation signal at low confidence is most likely triggered by the SVG path data strings (e.g., 'M9 4H4v5M15 4h5v5') embedded in the BAR_HTML template, which can superficially resemble encoded or packed strings to static analysis. No eval, atob, String.fromCharCode chains, hex encoding, or other obfuscation techniques are present. The code is transparent and matches the stated UI-building purpose.
The extension calls AI model APIs over the network, which is its core purpose. The flagged code execution is just a timeout mechanism that cancels requests after two minutes, not anything dangerous.
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 fetch() network calls with a setTimeout-based AbortController pattern in lines 36-42. The withTimeout() function creates an AbortController and sets a timer to abort the request after 120 seconds. setTimeout calling controller.abort() is a standard timeout-cancel pattern, not dynamic code execution (eval, Function, etc.). The fetch calls are to user-configured OpenAI-compatible endpoints or ST's Connection Manager profiles, matching the extension's stated purpose of connecting to AI model backends. No untrusted input flows into any code execution sink.
The regex identifies local network addresses so the extension can route them through SillyTavern's built-in proxy for CORS handling. This is a normal pattern for extensions that connect to local AI backends.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex. The match applies to this repository.
Contextual assessment: Line 32 defines LOCAL_HOST_RE, a regex matching localhost, 127.0.0.1, private IP ranges (192.168.x.x, 10.x.x.x, 172.16-31.x.x), and similar local addresses. The regex uses alternation with bounded character classes and no nested unbounded quantifiers that would cause catastrophic backtracking (ReDoS). Its purpose is to detect local endpoints so requests can be routed through ST's /proxy/ CORS proxy, as documented in the file header. This is proportionate and expected for an extension supporting local backends like koboldcpp and LM Studio.