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.
When the extension is uninstalled, it automatically cleans up its own data from your saved chats and settings. The fetch interception only acts on the delete-this-extension request and passes everything else through unchanged.
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() calls with a dynamic execution sink (window.fetch reassignment). The fetch calls in postJson target local SillyTavern API endpoints only ('/api/chats/get', '/api/chats/save', '/api/chats/group/get', '/api/chats/group/save', '/api/chats/search'). installUninstallHook monkey-patches window.fetch to detect when this specific extension is being deleted via '/api/extensions/delete' and then runs wipeThreadKeeperData to strip ThreadKeeper metadata from all chats and remove its settings entry. The hook delegates all other fetch calls to the original implementation unchanged, only parsing the body when the URL matches the extensions delete endpoint and the extensionName matches. This is a legitimate self-cleanup mechanism proportional to the project's stated purpose; no external destinations, credential exfiltration, or concealed execution are present.
The extension fetches chat data from SillyTavern's own local API and injects extracted facts into prompts, which is exactly what it is designed to do. No external data flows or hidden execution were found.
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() calls with prompt-injection sinks. The fetch calls (e.g., fetchGroupChatFile via '/api/chats/group/get') target local SillyTavern backend endpoints only, not external servers. The 'execution sink' is setExtensionPrompt and onChatCompletionPromptReady, which inject fact text into the LLM prompt — the explicitly stated purpose of the ThreadKeeper extension. getTokenCountAsync measures token counts. No external network destinations, credential handling, obfuscation, or concealed execution are present in the supplied code. The data flow is local chat data → fact extraction → prompt injection, all proportionate to the project's stated purpose.
The extension fetches other chats from the same group through SillyTavern's local API to carry facts forward, which matches the documented continuation feature.
Technical assessment
maybeSeedGroupContinuation uses fetchGroupChatFile to read group chat metadata from the local '/api/chats/group/get' endpoint, selects the most recently active chat with ThreadKeeper data, and copies its facts into the current chat. All fetch destinations are local SillyTavern API routes. No external endpoints are contacted.
The extension intercepts all network requests by replacing the browser's fetch function, but only acts on the one request that deletes this extension. While this is a broad technique, the actual behavior is safe and limited to cleanup.
Technical assessment
installUninstallHook replaces window.fetch with a wrapper that inspects every fetch response. The guard checks response.ok, URL inclusion of '/api/extensions/delete', and payload extensionName before acting. All other requests pass through to the original fetch unchanged. While monkey-patching a global is a broad interception pattern, the actual trigger is narrowly scoped to the extension's own uninstall event and the behavior is cleanup-only. No external network calls or data exfiltration occur.