TavernKeeper Scan Report

brasen56/merged_world_tracker

Commit 5a74e6f 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 20 low

What this review found

No material or immediate-danger item was identified.

Minor cautions

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
world_state/provenance.js:47

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
core/api.js:516

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
chronicle/snapshots.js:56
Deterministic technical evidence (4)
  • zizmor reported unpinned-uses · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/ci.yml:36

  • Dependency advisory GHSA-2v37-7h3g-55p8:pkg:c301f7c72c558e741e2a83a0 applies · osv-scanner 2.4.0

    A dependency has a published security issue, though this scan does not show that the project exposes it to an attacker.

    Policy reason: osv-structured-advisory · Execution scope: unknown

    Source: package-lock.json

  • zizmor reported unpinned-uses · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/ci.yml:39

  • zizmor reported artipacked · zizmor 1.28.0

    The code has a known weakness, though this scan does not show that anyone can exploit it here.

    Policy reason: zizmor-known-workflow-rule · Execution scope: automation

    Source: .github/workflows/ci.yml:35-36

Contextual expected matches (12)

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code is plainly written and easy to read—no hiding, no scrambling, no secret operations. It does exactly what the extension's documentation says: gathers your story context and sends it to an AI model you configured to generate plot suggestions. The scanner's flag appears to be a mistake.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal at line 1 with low confidence. The supplied source is clearly readable, well-commented ES module code that builds LLM prompts from chat history, existing story arcs, world state, chronicle entries, and user direction hints, then calls a user-configured API via resolveApiCall. Data flows are internal to the extension's stated Story Planner purpose. No encoded strings, eval, dynamic import, concealment, or unexpected destinations are present. The signal 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.xray.obfuscated-code
File role
production
Source
story_planner/generation.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code is plainly written and easy to read — there is no hiding or scrambling of code. The scanner's flag appears to be a mistake based on a superficial signal.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal at line 1 with low confidence. The supplied source is clearly readable, well-structured JavaScript with JSDoc comments, named exports, explicit imports, and conventional variable names. No obfuscation patterns (encoded strings, hex literals, eval chains, minified identifiers) are present. The code implements a backup/restore UI panel with proper escapeHtml usage for user-supplied content. This is a false positive from the static scanner.

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
backup/render.js:1

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The flagged text is a standard identifier used when drawing SVG graphics in the browser. It is not a web address that the code connects to or downloads from. The scanner mistook it for 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: The scanner flagged a shady-link signal at line 1778, which corresponds to the SVG namespace constant string used as an argument to document.createElementNS for constructing SVG DOM elements. This is a standard W3C namespace identifier, not a network endpoint. No fetch, XHR, WebSocket, or navigation occurs. The two occurrences are the same constant declared in separate graph-drawing functions. This is a false positive from URL-pattern matching on a namespace string.

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
knowledge/render.js:1778

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner flagged this file as possibly obfuscated, but the code is straightforward and well-documented. It contains helper functions for accessing SillyTavern's internal state, which is normal for an extension. Nothing is hidden or disguised.

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 flagged this file with low scanner confidence. The supplied source is transparent, readable JavaScript with detailed JSDoc comments and clear function names. It provides SillyTavern context access helpers: getContextSafe, getChat, getRecentMessages, getPlayerNames, getUserNames, getChatMeta, setChatMeta, getSetExtensionPrompt, escapeRegex, sendDateToMs, and estimateTokens. These are standard utility functions for a SillyTavern extension. No obfuscation, encoded strings, eval, or dynamic code execution is present. The functions access SillyTavern's context object, chat array, and metadata in expected ways consistent with the project's stated purpose.

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
core/context.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner flagged this file as potentially containing hidden or obfuscated code, but the actual code shown is plain, readable, and well-documented. It is a normal interface file for the extension that builds UI elements and handles user actions like saving and importing. There is no hidden or disguised code present.

Technical evidence

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

Contextual assessment: The scanner reports an obfuscated-code signal at line 1 with low confidence. The supplied source context shows a clearly readable ES module file with standard imports, descriptive function names, inline comments, and no obfuscation techniques such as eval, hex-encoded strings, character code manipulation, or minified identifiers. The file performs UI rendering, event wiring, editor persistence, archive/import, revert/diff, and provenance display for a World State module. No concealed execution, encoded payloads, or obfuscated data flows are present in the evidence.

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
world_state/render.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

This file creates the on-screen interface for the story planning tool—buttons, cards, and menus. The code is straightforward and readable, with no hidden or scrambled behavior. The scanner's flag is a false alarm.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal at line 1 with low confidence. The supplied source is readable, well-commented UI rendering and event-wiring code for the Story Planner module. It uses escapeHtml on all interpolated arc data, builds HTML templates, creates modals, and wires delegated DOM events. All data stays local to the extension's UI layer and matches the stated project purpose. No obfuscation, concealed execution, or unexpected network calls are present.

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
story_planner/render.js:1

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension sends prompts to an AI model API and receives text back, which is exactly what it is designed to do. The scanner flagged the combination of a network request and what looked like code execution, but the network request is a normal API call and there is no actual code execution happening with the results. This is normal, expected functionality.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. 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.download-to-execution
File role
production
Source
core/api.js:93-188

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code is normal, readable programming with clear comments and structure. There is no hidden or scrambled code. The scanner flag is a mistake.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal at line 1 with low confidence. The supplied source is transparent, commented JavaScript implementing Chronicle UI rendering. It uses descriptive function names, JSDoc headers, explicit imports, and consistently applies escapeHtml when interpolating user or model content into HTML. No obfuscation techniques are present. This 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.xray.obfuscated-code
File role
production
Source
chronicle/render.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner thought it saw something suspicious, but the actual code is clearly written and easy to read. It is normal extension code that draws and manages a user interface for tracking NPCs and lorebook entries. Nothing is hidden or disguised.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscation signal at line 1 with low confidence, but the supplied source is plain, readable, well-commented JavaScript with standard ES module imports, descriptive function and variable names, and clear control flow. There is no minification, encoding, eval, hex string assembly, or concealed logic. The file performs standard UI rendering and DOM event wiring for a SillyTavern knowledge-tracker extension tab, importing only local project modules. User-supplied content is passed through escapeHtml before insertion into innerHTML, which is appropriate defensive practice. No obfuscation or concealed behavior is present in the demonstrated code.

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
knowledge/render.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The code is plainly written and easy to read — there is no hiding or scrambling of code here. The scanner's flag appears to be a mistake.

Technical evidence

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

Contextual assessment: The scanner flagged an obfuscated-code signal at line 1 of file with low confidence. The supplied source is clearly readable, well-commented ES module JavaScript with descriptive identifiers, explicit imports, documented constants, and straightforward settings initialization. No encoded strings, eval chains, hex literals, packed payloads, or concealment techniques are present in the visible code. The signal is a false positive with no demonstrated obfuscation or hidden behavior.

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

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner flagged this file as possibly obfuscated, but the code is clearly written and well-organized. It creates settings forms and floating UI buttons for the extension. The API key handling is normal: it reads from a password field and escapes values for display. Nothing is hidden or disguised.

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 flagged this file with low scanner confidence. The supplied source is readable, well-commented JavaScript that renders API settings form fields as HTML template literals and creates a floating button bar with drag-and-drop positioning. The template literals containing HTML may have triggered the heuristic, but they are plainly readable markup with no encoding or obfuscation. The readApiSettingsValues function reads an API key from a password-type DOM input field, which is expected for an extension that manages model-provider credentials. Values are HTML-escaped via escapeHtml before insertion. No eval, dynamic code execution, encoded strings, or obfuscation techniques are present. All functionality is consistent with the project's stated purpose of providing a unified settings UI for multiple tracker modules.

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
core/ui.js:1

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The scanner flagged this file as possibly obfuscated, but the actual code is clearly written, well-documented, and easy to read. It simply registers slash commands and macros for the extension. There is nothing hidden or disguised here.

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 flagged this file with low scanner confidence. The supplied source is plain, readable, well-commented JavaScript that registers SillyTavern slash commands (wt-refresh, wt-snapshot, wt-scan, wt-plan, wt-beat, wt-thoughts, wt-inject, wt-state, wt-reset-buttons) and macros (worldstate, chronicle, lastchronicle, storyplan). There is no encoded strings, eval, dynamic code generation, character-shifting, or any other obfuscation technique present. All function names, variable names, and control flow are transparent. The code calls expected SillyTavern APIs (registerSlashCommand, macroRegistry.registerMacro) and internal module methods, all consistent with the project's stated purpose.

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
core/commands.js:1

Related contextual observations

SVG namespace string misidentified as network link

low risk · high confidence

This is a required technical identifier for drawing vector graphics, not a clickable web link or download address.

Technical assessment

The constant is the standard SVG XML namespace required by the DOM API to create SVG elements programmatically. It is passed only to createElementNS and setAttribute calls for graph rendering. No network request is initiated using this value.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity