No material or immediate-danger item was identified.
Expected scanner matches (131)
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This code checks that provider URLs use secure connections or local addresses, which is normal for this kind of app.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The URL validation logic in normalizeRemoteApiBase is part of the expected configuration of provider API endpoints. The regex patterns enforce HTTPS or localhost-only connections, which is appropriate for an application that allows users to set custom base URLs for AI providers.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:493
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This regular expression checks that uploaded image data is in the correct format. It works predictably and quickly, even on large images. There is no risk of the program freezing or crashing from a specially crafted input.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex /^data:image\/[a-z0-9.+-]+(?:;[^,]*)?,/i is a simple linear-time validator for data URI format. It consists of a fixed prefix, a character class with no alternations or nested quantifiers, an optional group with a negated character class, and a literal suffix. No overlapping quantifiers or ambiguous branches exist that would cause exponential backtracking. The scanner likely flagged this conservatively due to the presence of + and * quantifiers, but the pattern is provably linear and not vulnerable to ReDoS.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:2505
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is just a test checking that old generated photos are stripped from exports. The 'data:' string is a fake image used for testing, not a real link or security concern.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 368 contains a base64 data URI ('data:image/jpeg;base64,generated') used as a test fixture in an assertion. The scanner flagged 'shady-link' based on the data: scheme, but this is a static test value with no runtime network destination or user-controlled input. The test verifies archive payload sanitization; the data URI is never sent to an external endpoint.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:368
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The file contains an image stored directly in the code, which is a normal way to include pictures in a game or story. It's not a suspicious link or a security threat.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI embedded in the world definition file. The data URI is a static inline image asset (character portrait or location background) with clearly identifiable metadata including a hash, creation timestamp, and a prompt describing the original AI-generated image. No external network destination, user-controlled variable, or exfiltration path is present. The data is loaded as an image source within the application's own interface.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:145
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
Detailed wording was omitted by the public report safety filter.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: The vm.runInNewContext call at line 97 is part of a test that executes a hardcoded snippet from the application source to verify behavior. It uses a predefined string extracted via app.slice, not user-supplied input. This is a standard and safe testing pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:97
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line just checks if the server address you typed is on your own computer (like localhost). If it isn't, the app warns you that your browser's security may block the connection. It's a helpful, normal feature, not a hidden danger.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The candidate at line 9119 checks whether a user-provided or default localhost URL is a loopback address ('localhost', '127.0.0.1', '::1', '[::1]'). This is part of a visible local connection tester feature that warns users if they attempt to connect to a non-loopback host. The code does not exfiltrate data, execute hidden network requests, or behave outside the app's stated purpose of testing connectivity to local AI model servers. No malicious or concealed behavior is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:9119
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line sets a default address for the app's built-in helper program. Since it only points to your own computer, there is no security concern.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The constant HORDE_MCP_BRIDGE_DEFAULT is a hardcoded loopback URL used as the default for the local MCP bridge. This is expected for a local-first application that communicates with a companion bridge process on the same machine.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:249
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is just test data for a companion's photo setting. It's a fake image string, not a real link or security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 276 contains 'data:image/jpeg;base64,identity' used as a test parameter for a companion object. This is a static test fixture image. The scanner's 'shady-link' signal is triggered by the data URI pattern, but no actual network request is made; it is only used in assertion comparisons.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:276
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a fake image used in a test to make sure the app sends only the right photo to the AI provider. It doesn't affect real users.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1123 contains a hardcoded data URI 'data:image/png;base64,DISPLAY_ONLY' used as a test fixture to verify that the code does not include the profile photo in image API requests. This is a static test value, not user-controlled or sent to any external service; it exists only within the Node.js test suite and poses no security risk.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1123
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test file uses Node's virtual machine to run small pieces of the main application in isolation. It only uses code from the app itself and does not let outsiders control what gets executed. This is a normal way to test parts of a program without causing side effects.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: This is a vm.runInNewContext call in a regression test file that extracts a function from the application source by slicing between known string markers. The context object passed is extremely restricted (containing only structuredClone, JSON, safeJsonClone, isPlainObject, bumpMemoryEpoch). The code being executed comes from the same application, not from user or network input, and the test validates behavior of the application's own functions. No mechanism exists for an attacker to control the parsed string or the context; any malicious injection would require prior compromise of the application source. The scanner signal flags vm use generically, but in this context it is a safe, common testing pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:130
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line cleans up a temporary audio URL after it's no longer needed. It's just normal housekeeping and not a security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line at 32082 uses URL.revokeObjectURL to clean up a blob URL from an audio preview player element. This is a standard browser API call for memory management and does not create a network request or expose data externally. The static analysis 'shady-link' signal is a false positive in this context; the code is part of the application's expected TTS audio playback flow, where blob URLs are created for generated audio and then revoked after use.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:32082
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 45 triggers on content inside a base64-encoded JPEG data URI. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:45
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 65 triggers on content inside a base64-encoded JPEG data URI. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:65
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A security scanner noticed a suspicious-looking link in the test file, but it's just a fake image placeholder used to test how the app handles photo references. No real data or network calls are involved.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a literal string at line 1355 as a 'shady-link' pattern. The actual code is a test that creates a mock companion object with a placeholder data URI ('data:image/png;base64,REFERENCE') as a fake photo. This is test data, not a real network destination or exfiltration attempt. The test confirms that reference images are omitted when includeReference is false. There is no data flow to an external server, no credential exposure, and no user harm. The rule fired on a completely benign test 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1355
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The code was flagged for containing a web address, but it is just the default address for connecting to a local AI model on your own computer. This is a normal and expected part of the app's settings.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line is a hardcoded default URL for the local text generation provider (Ollama). This is part of the application's documented provider configuration and is not used for exfiltration or malicious redirection. The scanner's 'shady-link' pattern does not distinguish between benign configuration defaults and actual suspicious links.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:32724
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just a default setting to connect to a local image-generation program (ComfyUI) running on your own computer. There is no security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1290 contains a loopback address (127.0.0.1:8188) used as the default ComfyUI URL. The code passes it through normalizeLoopbackUrl, which is consistent with the project's local-first design. The scanner signal 'shady-link' is a false positive because the destination is localhost, not an external untrusted host.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:1290
JavaScript analysis reported javascript.xray.sql-injection
Expected behavior · high confidence
A security scanner flagged a line of code as a possible SQL injection, but that line just logs a warning message. The code never talks to a database, so there is no actual security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.sql-injection in this repository.
Contextual assessment: The candidate flags line 20722 for SQL injection, but the line contains a console.warn statement that interpolates the 'detected' variable into a log message. The 'detected' value is a string derived from regex matching on narrative text (outfit descriptions) and is not used in any SQL query, database operation, or server-side context. The project is a browser-based frontend application with IndexedDB for storage; no SQL database is involved. This is a static-analysis 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
- Rule
- javascript.xray.sql-injection
- File role
- production
- Source
- app.js:20722
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · medium confidence
The code checks if an image is already saved as a data URL before trying to download it. That's normal for saving images in this app.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner identified a string comparison `startsWith('data:image/')` at line 31414, which is part of a legitimate fallback in `makeWorldVisualPortable`. The function fetches a provider-generated image URL (line 31409) and embeds it as a data URL. The flagged line simply checks if the fallback source already starts with the data URL prefix before throwing an error. No malicious link, concealed network target, or exfiltration is present. The fetch on line 31409 is the actual network operation and is an expected part of making a world visual portable.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:31414
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
The test uses a safe sandbox to run small parts of the main application in isolation to check if they work correctly. Only the program's own code is run, and no outside data can influence it. This is a normal and safe testing practice.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: vm.runInNewContext at line 47 is used to capture and execute a slice of the project's own file (captureWorldTurnState and restoreWorldTurnState) in a sandboxed context. The context provides only structuredClone, JSON, safeJsonClone, isPlainObject, and an empty bumpMemoryEpoch. No user-supplied or untrusted data enters the dynamically executed code. This is a standard unit-test pattern for isolating individual functions from a large codebase. The test file is not shipped to users and runs only during development.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:115
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 85 triggers on content inside a base64-encoded JPEG data URI. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:85
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This adds a header that OpenRouter requires when you use their service, which is standard for that provider.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The attributionHeaders function returns static OpenRouter-required headers (HTTP-Referer and X-Title) only when the OpenRouter provider is active. The source code comments confirm these are never sent to local servers, matching the expected API attribution pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:709
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is the same legitimate OpenRouter attribution header code.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Same attributionHeaders function as candidate 2b053600, with the same static URL strings. The duplication is from the bounded evidence window; it is the same legitimate feature.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:712
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a fake image used in a test to check that the app correctly reads image data from the AI's reply.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1227 contains a hardcoded data URI 'data:image/jpeg;base64,BBBB' used as a test fixture to verify GPTProto image response extraction from a JSON-like response. This is a static test value with no dynamic input or network destination in the test file.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1227
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The security scanner thought it found a suspicious link in a JavaScript file, but the actual content is just a long encoded picture used as background art in the Policy Panic game. There's no real link or security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded data string as a potential 'shady-link', but the evidence shows this string is generated AI image data embedded in a world-asset JavaScript file. The base64 content does not contain any actual network links or malicious references; it is a legitimate asset for the Policy Panic game within Horde Studio. The scanner signal is a false positive arising from static analysis pattern matching on encoded data.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:2
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
The test uses a safe sandbox to run small parts of the main application in isolation to check if they work correctly. Only the program's own code is run, and no outside data can influence it. This is a normal and safe testing practice.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: vm.runInNewContext at line 47 is used to capture and execute a slice of the project's own file (captureWorldTurnState and restoreWorldTurnState) in a sandboxed context. The context provides only structuredClone, JSON, safeJsonClone, isPlainObject, and an empty bumpMemoryEpoch. No user-supplied or untrusted data enters the dynamically executed code. This is a standard unit-test pattern for isolating individual functions from a large codebase. The test file is not shipped to users and runs only during development.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:47
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a test artifact: the line contains an example image string used to check how the app stores companion photos. It does not contact any website or network service.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line is inside a test case in a Node assertion-based audit script. The matching literal is a data-URI image string passed as a test fixture to a normalization function, verifying that a display profile photo stays distinct from a generation reference. No URL is dereferenced, no request is made, and no network data flow exists. The shady-link scanner signal is a static-match false positive on the data-URI string shape.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:443
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
Detailed wording was omitted by the public report safety filter.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: Line 125 contains vm.runInNewContext in a test that validates CSS-facing functions. The executed code is a static substring of the application source compiled at test time, not user or external input. The sandbox prevents any access to host globals beyond the explicitly provided context. No attacker-controlled data reaches this execution, and any failure only causes a test assertion error. This is standard test infrastructure, not a production attack surface.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:125
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line just cleans up a temporary audio link after a voice message finishes playing — like closing a file you're done with. There's no hidden behavior or danger.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 32164 calls URL.revokeObjectURL on a blob URL when the audio result has no persistent data URL. This is standard browser memory management to release the blob URL after playback ends. The code is part of playCompanionVoiceMessage, a function that plays voice messages in a local-first AI roleplay application. The blob URL is created earlier in the same function from a generated audio response. There is no evidence of exfiltration, phishing, or malicious redirection. The scanner signal 'shady-link' likely triggered on the revokeObjectURL call, but this is a benign cleanup operation fully in line with the project's stated purpose of playing TTS audio.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:32164
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a fake identity photo used in a test to confirm the app uses the right image when generating photos.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1155 contains a hardcoded data URI 'data:image/png;base64,IDENTITY' used as a test fixture to verify that GPTProto photo requests use the base photo instead of the profile photo. This static test value is only present in the test file and has no external exposure.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1155
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just another image stored directly in the code for the game's artwork. Not a security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI at this line. The surrounding context shows it is an inline location background image ('Break room') with associated metadata (hash, creation timestamp, generation model, and prompt). It is a static asset used for rendering the application's user interface, not a dynamic or attacker-controlled resource.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:115
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is test data for a photo generation test. It's just a placeholder image string, not a real link.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 299 contains 'data:image/jpeg;base64,identity' used as a test value in building an MCP generation request. This is a static test fixture embedded in assertion code. No runtime network access or suspicious behavior is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:299
JavaScript analysis reported javascript.xray.suspicious-literal
Expected behavior · high confidence
The scanner thought a line looked suspicious, but it's actually just a long text prompt for an AI character preset — harmless and normal for this kind of project.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.suspicious-literal in this repository.
Contextual assessment: JS-X-Ray flagged the file for a 'suspicious-literal' pattern, but the source code shows a static data structure containing long plaintext prompt strings used for an AI roleplay preset. No obfuscation, encoding, concealed execution, or external destination is present. The scanner heuristic likely triggered on the length or structure of the string literals, which is expected for this type of configuration file.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.suspicious-literal
- File role
- production
- Source
- presets.js:1
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This pattern reads story text to figure out where you're going. It only looks at short phrases so it cannot be abused to freeze your browser.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 20466 contains nested optional groups and alternations but uses explicit bounded quantifiers ({0,20} and {1,80}) that prevent catastrophic backtracking in practice. The scanner signal is conservative and does not identify a reachable vulnerability. The pattern is used for narrative location detection, matching the project's stated purpose.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:20466
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This line checks that an address entered for the local helper program only points to your own computer. The pattern used is safe and does not pose a risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex on line 257 is a static pattern that validates loopback URLs. It is not supplied by user input and does not contain nested quantifiers that would cause catastrophic backtracking. It is a safe and appropriate validation guard.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:257
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test runs several of the app's own functions together in a sandbox to confirm they work properly. It does not use any data from outside the test.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: The vm.runInNewContext call spanning lines 249-256 is inside a test that assembles multiple function sources from the application and passes them into a new context. All inputs are hardcoded strings from the app variable, not from any untrusted source.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:249-256
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · medium confidence
This part of the code cleans up AI messages by removing roleplay actions like *smiles* or *laughs*. The complicated-looking rule it uses is actually safe and won't let an attacker slow down or crash your browser.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 29766 is used solely in the `sanitizeCompanionTextReply` function to test whether a short substring (captured from markdown-like emphasis patterns, bounded to 140 characters) matches a defined set of action cues. The pattern is anchored with `^` and contains a flat alternation; the only potentially backtracking component is the final `[a-z]+ing\b`, which backtracks linearly through the input characters (O(n) worst case) and never exponentially. The `.test()` call returns as soon as any alternative matches, further limiting work. Even under crafted input, the maximum impact would be a negligible, transient local slowdown on the client device, which does not constitute material security harm in this threat model.
Impact: none · Exploitability: unlikely
Developer action: None required. The regex is not vulnerable to catastrophic backtracking as used. If desired, the final alternative could be simplified to `/^[a-z]+ing\b/i` with an explicit word-character check, but the current form is acceptable.
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:29766
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just the app reading the ComfyUI server address you provided in settings so it can connect to it. It's not sending your data anywhere suspicious.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 8870 reads the ComfyUI base URL from a settings input field and normalizes it via `normalizeLoopbackUrl()`, which enforces loopback/localhost addresses. The URL is a user-configured endpoint for their own local ComfyUI instance, not an external or unvalidated destination. The scanner's 'shady-link' signal is a generic heuristic triggered by string interpolation of URL patterns; no actual shady link or data exfiltration is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:8870
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This pattern finds AI-generated tool commands in chat text. It's a simple tag matcher and doesn't have any security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 29249 matches an opening XML-like tool tag with optional 'uncensored' prefix and flexible separators. It is used to parse AI model output for embedded function calls. The pattern contains no nested quantifiers or overlapping alternations that would cause catastrophic backtracking. The scanner's 'unsafe-regex' signal is a conservative false positive in this context; the regex is appropriate for the intended parsing task and does not introduce a realistic denial-of-service vector from model-generated input.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:29254
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A character portrait stored as data in the code. It is part of the game content, not a security threat.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI at this line. The context shows it is an NPC portrait image ('Nisha Patel portrait') with metadata indicating it was generated using OpenAI's image generator. This is a legitimate inline asset for the story application.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:125
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This code is reading a streaming AI response line by line, which is a normal part of how chat apps get responses from AI models. The 'shady link' warning was triggered by the word 'data:' which is not a link but a standard way to receive data from an AI service.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner rule 'javascript.xray.shady-link' flagged line 6804, but the code at that line is a standard SSE stream parser (`if (line.startsWith('data: ')) {`) used to consume a streaming chat-completion response from an AI API endpoint. This is normal behavior for an AI chat application; no shady link or network destination is involved. The signal likely matched the literal string 'data: ' which is an SSE protocol prefix, not a link. The project's stated purpose includes connecting to AI providers and handling streaming responses, making this parsing expected.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:6804
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This image is part of the game's backgrounds, stored in the code. It's not a harmful link.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI at this line. The surrounding context shows it is a location background image ('Reception lobby') with generated image metadata. This is a static asset used to render the game environment within the application.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:135
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This alert came from an automated code scanner that thought a line of code might contain a suspicious link. But the line just checks if a piece of streaming data starts with the word 'data:' — a normal step when the app receives AI-generated text in chunks. No real link or shady destination is present. It's a harmless false alarm.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line (3457) contains a standard JavaScript string-matching operation `line.startsWith('data: ')` used to parse Server-Sent Events (SSE) from an AI generation API. The JS-X-Ray 'shady-link' rule likely triggered on the string literal 'data: ' due to its resemblance to a protocol/scheme prefix, but this is a legitimate and well-known SSE parsing pattern. No actual URL, link, or network destination is embedded at this line; the fetch to OpenRouter is performed earlier and is expected behavior for an AI roleplay application. The static analyzer 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:3457
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This is a test that checks if character and world data validation works. It runs the app's own validation code in a sandbox, not anything from outside, so it is safe.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: Detailed technical wording was omitted by the public report safety filter.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:135
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This default setting points to a local image server on your own machine. No external network is involved.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1285 contains a loopback address (127.0.0.1:7860/v1) as the default local image server URL. It is processed by normalizeLoopbackUrl, confirming intended local-only use. The scanner's 'shady-link' classification does not apply to localhost destinations 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:1285
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a default setting for connecting to a local AI model running on your own computer. The code makes sure you can only connect to your own machine, which is safe and expected.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The default baseUrl on line 17 is a loopback address (127.0.0.1) for local inference, which is the expected configuration for a local-first AI studio. The normalizeLoopbackBase function strictly restricts all user-supplied URLs to known loopback hosts, preventing external network destinations. No malicious or unexpected data flow is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- labs-core.js:17
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · medium confidence
The code checks whether an image is already in data URL format to decide whether to download it. That's a normal part of saving images from providers.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner identified a string comparison `!data.startsWith('data:image/')` at line 31406, which gates the decision to fetch an external image URL. This is part of the expected `makeWorldVisualPortable` function that downloads a provider image and converts it to a data URL for offline embedding. The flagged conditional does not perform any network operation, send data, or introduce a remote target. It is a normal data-flow check for image embedding.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:31406
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is from a test that checks how the app handles photo requests. The 'data:' string is just a test image, not a real link.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 281 contains 'data:image/jpeg;base64,identity' used in a test assertion comparing an image request's output. This is a static test fixture. No actual network traffic or external link is involved.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:281
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
The code fetches data from a server and reads the reply as plain JSON text. It does not run any computer code from the reply, so downloading the content cannot turn into an attack. This is a normal and safe pattern.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution in this repository.
Contextual assessment: The file contains fetch() for HTTP POST requests (line 244) and then parses the response via JSON.parse or the custom parseJSON function, which only returns JSON objects. There is no dynamic code execution (eval, Function, innerHTML, document.write) that would allow an attacker to execute arbitrary code from the network response. The scanner correlation is a false positive; the parseJSON function only extracts structured JSON data and throws on malformed input.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.download-to-execution
- File role
- production
- Source
- labs-core.js:1-244
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This is a harmless regex that checks whether a string starts with a valid data URI format. It is simple and cannot be tricked into causing the browser to freeze or consume excessive CPU. The security scanner flagged it in error.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex /^data:image\/[a-z0-9.+-]+(?:;[^,]*)?,/i at line 30910 is a simple anchored pattern used to validate data URIs. It contains no nested quantifiers or overlapping alternatives that could cause catastrophic backtracking. The character class [a-z0-9.+-] is linear and the optional group (?:;[^,]*)? is followed by a required comma, giving the regex engine only one valid path per input. The scanner's 'unsafe-regex' signal is a false positive; this regex does not exhibit ReDoS vulnerability.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:30910
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line is part of the same test, providing a second example image string to verify photo handling. It performs no network activity.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line is the sibling fixture value in the same test case. It is a data-URI image string used as input to a pure normalization function and then compared against the profile photo value. There is no network destination, no fetch or XHR call, no exfiltration path, and no attacker-controlled data flow. The scanner rule matched the static literal shape but the surrounding code confirms this is ordinary test data processing.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:444
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This code connects to a local helper program that runs on your computer, which is a normal part of how the app works.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The mcpBridgeRequest function makes HTTP requests to the local MCP bridge, which is part of the project's architecture for coordinating with a local Python bridge. The path is concatenated from a user-configurable base URL, but this is expected for a local-first application that communicates with a local service.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:444
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The code is doing exactly what you'd expect: reading the AI's response as it comes in, line by line. The flagged line just checks if a line starts with 'data: ', which is the standard way AI streaming APIs send their responses. This is normal and safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 3238 is a standard Server-Sent Events (SSE) parsing pattern: checking if a line starts with 'data: '. This is the expected and visible mechanism to stream token-by-token responses from an AI chat-completion API (OpenRouter). No suspicious destination, concealed execution, or credential exfiltration is present. The scanner's 'shady-link' signal is a false positive; the line contains no URL or external reference, just a string literal used for stream parsing.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:3238
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just the app reading the local image server address you provided in settings so it can generate images. It stays on your computer.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 8865 reads the local image server URL from a settings input field and normalizes it via `normalizeLoopbackUrl()`, which enforces loopback/localhost addresses. The URL is a user-configured endpoint for their own local image generation service. The scanner's 'shady-link' signal is a generic heuristic on URL patterns; no actual shady link or data exfiltration is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:8865
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This code opens a browser popup so you can sign in to an AI service. The URL for signing in comes from your own computer's local helper program, not from a stranger. This is how online logins normally work, and it is safe here.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 8753 opens a child window to about:blank as part of a standard OAuth authorization flow. The window's location is subsequently set to an authorization URL (response.authUrl) returned by the local MCP bridge after a POST to /providers/{providerId}/connect. The bridge is a local Python service running on 127.0.0.1, and the provider configuration is hardcoded in HORDE_MCP_PROVIDERS. The response is generated by the trusted local bridge, so the URL is not attacker-controlled. If the initial window.open fails, a fallback uses window.open with a noopener attribute, which is a safe practice. The scanner detected window.open with a dynamic URL, but in this OAuth context the behavior is proportionate and expected.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:8753
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This pattern finds the closing tag of AI tool commands. It's safe and necessary for the app's functionality.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 29254 matches a closing XML-like tool tag with optional 'uncensored' prefix. It is used in conjunction with the start pattern to delimit tool call bodies. Like its counterpart, it contains no nested quantifiers and is not vulnerable to ReDoS. The signal from the scanner is a conservative false positive.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:29304
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This pattern recognizes when you type things like 'my outfit is a red dress'. It works on short phrases and is safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 20625 (matching 'my outfit is ...') uses a bounded quantifier {2,100} with no overlapping alternations, making catastrophic backtracking impossible. The scanner signal does not demonstrate any actual vulnerability.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:20625
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just a list of addresses where the app looks for local AI models on your own computer, like checking for Ollama or LM Studio. It's completely normal and not a security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The string at line 406 is a hardcoded localhost URL used in the discover() function to probe for local AI model servers. This matches the project's documented support for local endpoints such as Ollama at port 11434. No external or malicious destination is involved. The scanner signal is a false positive for this legitimate local network access pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- labs-core.js:406
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This test verifies that travel between locations works correctly. It uses a sandbox to run the app's own travel code, not any outside code, so it is not a security concern.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: Line 143 uses vm.runInNewContext to test movement logic. The executed string is built from the functionSource helper, which extracts code from the static application source. There is no attacker-controlled input at any point. The sandbox context is empty except for the tested functions. The only consequence of a misbehavior is a failed test assertion, which has no user-facing impact.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:143
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The app provides a default address for a local image-generation tool. It's only used on your own computer and is not a security threat.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line sets a default URL for a local image server (127.0.0.1:7860). This is a localhost-only endpoint used for configuring a user-controlled local service, not an external or shady destination. The scanner signal 'shady-link' is a false positive for this legitimate configuration default.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:9317
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This code looks for common network errors and shows a helpful message instead of a technical error.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex /Failed to fetch|NetworkError|Load failed/i is used solely to detect common fetch errors and display a user-friendly message. It does not process user input or have performance implications, making it 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
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:462
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test runs a specific part of the app in isolation to check that it safely handles dangerous HTML. It uses predefined code from the app itself.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: The vm.runInNewContext at line 135 executes a hardcoded slice of the application source for testing HTML escaping. The code passed is derived from app.indexOf and app.slice, not from any external or dynamic input.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:135
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
The test uses a safe sandbox to run small parts of the main application in isolation to check if they work correctly. Only the program's own code is run, and no outside data can influence it. This is a normal and safe testing practice.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: vm.runInNewContext at line 115 is used to capture and execute a slice of the project's own file (parseLoreKeywords and loreKeywordMatches) in a sandboxed context. The context provides only Set, RegExp, and String. No user-supplied or untrusted data enters the dynamically executed code. This is a standard unit-test pattern for isolating individual functions from a large codebase. The test file is not shipped to users and runs only during development.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:130
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
Another background image for the game. It's stored as data in the code, not a suspicious link.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI at this line. The context shows it is a location background image ('Main office bullpen') with metadata indicating it was AI-generated. This is a legitimate inline asset for the application's world rendering.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:95
JavaScript analysis reported javascript.xray.obfuscated-code
Expected behavior · high confidence
A scanner thought the file contained hidden code, but it's just a data file with pictures stored as text.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code in this repository.
Contextual assessment: The JS-X-Ray obfuscated-code signal at line 1 likely triggers on the large base64 embedded banner image. The file is a generated world data bundle containing standard base64-encoded JPEG images; it is not obfuscated 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
- Rule
- javascript.xray.obfuscated-code
- File role
- production
- Source
- policy-panic-world.js:1
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A test file includes a local address for testing purposes. It's not a real security issue.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 174 contains a hardcoded localhost URL used in a test context to simulate an embedded runtime environment. This is part of the project's cognitive audit test file and does not represent an actual network call to an external destination. The URL matches the project's expected local bridge address.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/labs_cognition_audit.js:211
JavaScript analysis reported javascript.xray.obfuscated-code
Expected behavior · high confidence
This file is a tool that packages images and story details into a single file for a roleplaying world. It's like a recipe that combines pictures and text. The code is easy to read and does exactly what it says—it doesn't hide anything or send data anywhere.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code in this repository.
Contextual assessment: The file is a build script for assembling a Horde Studio world definition. It reads PNG images from a local asset directory, converts them to JPEG, base64-encodes them, and constructs a large JSON world object with locations, NPCs, game rules, and narrative text. The code is fully readable, uses standard Node.js APIs (fs, path, sharp), and performs no network communication, no dynamic execution, and no credential handling. The 'obfuscated-code' signal is a false positive triggered by the presence of large embedded string literals (narrative prompts, dialogue) in an otherwise transparent script.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.obfuscated-code
- File role
- production
- Source
- scratch/build_policy_panic_world.js:1
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This test file uses JavaScript's built-in sandbox feature to run a portion of the game's quest engine in isolation. This is a normal and sensible testing practice—no user data or secrets are involved.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: The file file is a test script that uses vm.runInNewContext to isolate a static slice of the main file quest engine code for unit testing. The evaluated code is a hardcoded substring of the application, not user-supplied or attacker-controlled input. The context object is populated with mock functions and data structures, and no external data flows into the evaluated code. This is a standard and appropriate testing pattern using Node.js vm module for sandboxing; there is no dynamic execution of untrusted input, no exfiltration, and no persistence outside the test process.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/quest_engine_stress_test.js:55-66
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test checks that a time-calculation function in the app never produces negative values. It runs the function in a sandbox with fixed test data.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in 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
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:240
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This flagged line is a test that checks if the app's code has been written correctly. The pattern is searching through the app's own code, not through any user input. Even though the pattern could be slow on weird inputs, it only ever looks at the app's own files, so it cannot be triggered by an attacker.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The flagged regex at line 172 is a static pattern used in a test assertion to verify that a specific source code transformation exists in the project's own file module. The input to the regex (the `app` variable) is the project's own production code, not attacker-controlled data. While the regex contains a nested quantifier pattern that could theoretically cause backtracking on pathological input, no such input exists in this context. The test runs in a developer environment, not against user-supplied data. There is no demonstrated security exposure.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- scratch/authored_world_audit.js:172
JavaScript analysis reported javascript.credential-to-network
Expected behavior · high confidence
The app stores your API keys and sends them securely to the AI provider you choose, which is exactly how this kind of app is supposed to work.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.credential-to-network in this repository.
Contextual assessment: The application stores API keys for multiple providers in a state object and sends them via Authorization headers to the appropriate provider endpoints. This is the expected behavior of an AI client that needs authentication. The code shows a clear function providerAuthHeaders that selects the correct key based on the active provider. There is no evidence of sending credentials to an unexpected destination.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.credential-to-network
- File role
- production
- Source
- app.js:417-1379
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a fake profile picture used in a test to make sure the app doesn't accidentally send it when generating a new photo.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1154 contains a hardcoded data URI 'data:image/png;base64,PROFILE' used as a test fixture to verify that the GPTProto photo request does not include the profile photo. This static test value is only present in the test file and has no external exposure.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1154
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A security scanner flagged a line in the image-processing code, but the line just checks if the browser could encode the image. There is no hidden link or network call here.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner signal "shady-link" at line 2417 is a false positive. The flagged line is part of the optimizeImage helper and contains the literal string 'data:,' used to check whether canvas.toDataURL returned an empty placeholder. No external URL, network request, or suspicious destination is present. The code performs client-side image resizing and compression only.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:2417
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This is just a normal check to see if a user typed a number. The regular expression used is simple and cannot be tricked into crashing or slowing down the app. It's perfectly safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex `/^-?\d+(?:\.\d+)?$/` at line 34061 is used in `parseCompanionProviderOption` to validate whether a user-provided string is a numeric value before converting it via `Number()`. The pattern is simple, anchored, and contains no overlapping quantifiers or alternations that could cause catastrophic backtracking. It only matches an optional minus sign, one or more digits, and an optional decimal portion. This regex is not susceptible to ReDoS and performs safely on any input. The JS-X-Ray 'unsafe-regex' signal is a false positive for this pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:34061
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
The code has both network access and code execution capabilities, but they are not linked together. The code execution only happens in tests with predefined code, not with anything fetched from the internet.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution in this repository.
Contextual assessment: The file contains both a fetch-like primitive (via ndarray of modules) and vm.runInNewContext calls, but the two patterns are not connected in a data flow. The vm calls are all in test functions using hardcoded strings. The download-to-execution correlation is incidental; no evidence shows network data being passed to an execution sink.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.download-to-execution
- File role
- production
- Source
- scratch/engine_audit.js:97-419
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line is part of a test that checks whether the app correctly blocks connections to remote servers. Using a fake address like 'evil.example' is just to make sure the block works properly. There is no real security issue here.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 44 is an assertion in a test file that calls Labs.normalizeConfig with a remote URL and verifies it is rewritten to a local loopback address. This tests a security hardening feature that blocks remote cognition endpoints, not a vulnerability. The presence of the string 'evil.example' in a test assertion is a legitimate test input, not an actual shady link used in production.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/labs_cognition_audit.js:44
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test file uses Node's virtual machine to run a small piece of the main application in isolation. It only uses code from the app itself and does not let outsiders control what gets executed. This is a normal way to test parts of a program without causing side effects.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: This is a vm.runInNewContext call in a regression test file that extracts a function from the application source by slicing between known string markers. The context object passed is extremely restricted (containing only isPlainObject). The code being executed comes from the same application, not from user or network input, and the test validates behavior of the application's own functions. No mechanism exists for an attacker to control the parsed string or the context; any malicious injection would require prior compromise of the application source. The scanner signal flags vm use generically, but in this context it is a safe, common testing pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:47
zizmor reported artipacked
Expected behavior · high confidence
This workflow temporarily uses a GitHub token to upload the built app, but that token is not saved anywhere inside the uploaded file. The scanner warning about credentials being stored in artifacts does not apply here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The workflow uses ${{ github.token }} exclusively to authenticate the gh release upload command. The token is set as an environment variable for the run step and is never written into any file or artifact. The uploaded portable zip artifact contains only the built application; it does not contain credentials, the workflow definition, or any environment variables. No credential persistence mechanism is present in the supplied evidence.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/package-current-release.yml:13-16
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This regular expression helps the app pick out important story events from the AI's writing. It's safe and doesn't introduce a security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex on line 8135 is used to identify narrative events (death, destruction, etc.) in model-generated story text for world ledger extraction. The pattern uses simple alternation and a single optional group; it does not contain nested quantifiers or exponential backtracking. Input is derived from the AI model's response, not from attacker-controlled user input. No ReDoS vulnerability is demonstrated in the supplied context.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:8135
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The app provides a default address for ComfyUI, an image-making tool that runs on your own computer. This is safe and expected.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The flagged line sets a default URL for a local ComfyUI server (127.0.0.1:8188). This is a localhost-only default for a user-configurable service. The 'shady-link' signal is a false positive; the URL points to a local service that the user intentionally runs.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:9320
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This is a test that checks if the starting world configuration is correct. It runs a small piece of the app's own code in a sandbox, which is standard practice and not dangerous.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: Line 97 contains vm.runInNewContext in a test that validates the starter world preset. The code is a static string concatenation of a presets source and the assignment of DEFAULT_SYSTEM_PRESETS. No external data is involved. The sandbox prevents access to the host environment. The only harm from a flaw would be a test failure, not a runtime vulnerability.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:97
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This is a pattern used by a testing tool to clean up code before analyzing it. It only runs on the project's own source files, not on anything you type or upload, so there is no security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 193 is a static literal used to strip inline regex literals from a hardcoded source string (file) during source-code extraction for testing. It operates exclusively on developer-controlled input read from the local filesystem. No untrusted user input reaches this regex, so there is no viable ReDoS or injection path. The pattern is correctly scoped to a parsing utility and its complexity is proportional to the task.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- scratch/app_source.js:193
JavaScript analysis reported javascript.download-to-execution
Expected behavior · high confidence
This signal said the app might download and run code, but actually it only downloads normal data like chat messages and doesn't run anything dangerous.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution in this repository.
Contextual assessment: The correlation between network retrieval and code execution sinks is a false positive in this context. The code uses fetch() for data retrieval and JSON.parse() for data parsing, but does not dynamically execute fetched code via eval, Function, or similar. No unsafe code execution is present in the provided source segments.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.download-to-execution
- File role
- production
- Source
- app.js:417-7864
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is test data for a companion's reference photo. It's not a real link or security threat.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 328 contains 'data:image/jpeg;base64,reference' used as a test fixture in a companion object. The scanner's 'shady-link' is based on the data URI pattern. This is static test data with no network destination.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:328
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This is a test file that runs small pieces of the app's own code in a sandbox to check if they work correctly. It does not affect the app when you use it normally and cannot be triggered by a bad actor.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: The file 'file' is a test suite that uses Node.js's vm.runInNewContext to execute isolated slices of the application source for unit-testing purposes. The executed code at line 240 consists entirely of a hardcoded function name derived from the bundled application string; there is no runtime user or external input involved. This is a standard pattern for sandboxed function testing and does not introduce a runtime code-execution surface in the shipped application.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:240
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 15 triggers on the banner image data URI at the start of the world object. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:15
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The code checks the health of a local AI model server, which is a normal part of how the application works.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 211 makes a health check call to a local Ollama endpoint at localhost port 11434. This is a core expected behavior of the project, which is designed to connect to local model servers. No external data exfiltration or malicious network activity is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/labs_cognition_audit.js:174
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
The detection was a false alarm. The code uses a standard SVG namespace string to draw map visuals inside the page; it doesn't connect to any outside website or load anything from the internet.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner rule 'shady-link' flagged line 13022, but the actual string is the standard SVG namespace constant used for document.createElementNS calls. The surrounding code renders a semantic world map locally and makes no network requests. The flagged literal is a hardcoded non-resolving URI type, not a dynamically constructed or externally controlled URL.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:13022
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This part of the test file runs several of the app's own helper functions in a sandbox to verify they work correctly. It does not give anyone a way to run harmful code on your computer.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: The multi-line vm.runInNewContext call at lines 249–256 assembles several helper functions (isPlainObject, safeJsonClone, captureWorldTurnState, restoreWorldTurnState) and an inline stub from static strings obtained via the 'functionSource' helper. These are all internal, pre-defined pieces of the application logic. The context object is a fresh empty object used only for the test assertion. No user-controlled or network-originated data reaches the evaluated string. This is standard test isolation and does not constitute a vulnerability.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:249-256
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test file runs a small part of the app's own code in a sandbox to verify that the world map features work correctly. It's like a self-test, not a security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: The file uses vm.runInNewContext to execute a controlled substring of the application's own source code (file) for unit-testing world map functions. All data passed into the VM context is hardcoded test data; no user input, external data, or untrusted code is involved. This is a standard Node.js testing pattern and does not create a security vulnerability.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/world_map_stress_test.js:17-30
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test verifies that a CSS sanitization function rejects injection attempts. It runs the function in a sandbox with a deliberately bad input to confirm it is blocked.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: Line 143 contains a vm.runInNewContext call that tests a CSS-safe URL function using a hardcoded malicious string. The code passed to vm is a fixed slice of the application, not user-controllable.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:143
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A character portrait stored in the code. It's part of the game and not a security problem.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI at this line. The surrounding context shows it is an NPC portrait image ('Wade Greeley portrait') with generated image metadata. This is a static asset used in the character interface.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:155
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This line checks if the user is saying hello. The code pattern looks complex but it's just a list of possible greetings. It's not a security risk because the pattern is simple and won't slow down your browser even with tricky input.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regular expression at line 417 matches common English greetings with a fixed set of alternatives and a trailing character class. It contains no nested quantifiers, repeating groups, or overlapping alternations that could cause catastrophic backtracking. Static analysis flagged it as unsafe-regex, but the pattern is safe for real-world use. Any theoretical client-side ReDoS would require a contrived input targeting a non-existent vulnerability and would only cause a temporary UI delay, which is not a meaningful security concern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- labs-ui.js:417
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
The test uses a safe sandbox to run small parts of the main application in isolation to check if they work correctly. Only the program's own code is run, and no outside data can influence it. This is a normal and safe testing practice.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: vm.runInNewContext at line 84 is used to capture and execute a slice of the project's own file (worldStatRollConfig) in a sandboxed context. The context provides only isPlainObject. No user-supplied or untrusted data enters the dynamically executed code. This is a standard unit-test pattern for isolating individual functions from a large codebase. The test file is not shipped to users and runs only during development.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:84
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A security scanner noticed a suspicious-looking link in the test file, but it's just a fake image placeholder used to test how the app recovers when a reference image is omitted. No real data or network calls are involved.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a literal string at line 1375 as a 'shady-link' pattern. The actual code is a test that creates a mock companion object with a placeholder data URI ('data:image/png;base64,REFERENCE') as a fake photo. This test verifies that reference-free recovery removes image bytes and writes a usable standalone subject prompt. The string is a test data stub with no real network destination, credential, or user-impact. The rule fired on a completely benign test 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1375
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This code checks that any web address you use must point to your own computer. It blocks connections to outside servers, which is a safety feature, not a risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 50 contains a hostname allowlist check that restricts accepted URLs to localhost, 127.0.0.1, and IPv6 loopback equivalents. This is a security control that prevents connections to external servers, not a shady-link. The scanner flagged the list of hostnames but this is a legitimate defensive measure.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- labs-core.js:50
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This is a test file that runs a small piece of the main program in a secure sandbox to check if the world map feature works correctly. It only uses hardcoded test data and is never used by the actual application or accessible to users.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: The file file uses vm.runInNewContext to evaluate a statically-extracted slice of the main file within a fresh V8 sandbox. This is a developer-only test harness that reads a hardcoded portion of the project's own source, executes it in an empty context, and runs assertions against hardcoded world data. No user-supplied or attacker-controlled input reaches the vm call at runtime. The dynamic execution is fully controlled, transparent, and proportionate to the stated purpose of regression and limit stress testing. There is no evidence of any data exfiltration, credential handling, or harmful persistence.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/world_map_stress_test.js:17-30
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is test data for checking how old photo data is handled. It's just a fake image string.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 437 contains 'data:image/png;base64,old' used as a test fixture for normalizing legacy photo data. This is a static test value in an assertion block. No network activity or suspicious destination.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:437
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 35 triggers on content inside a base64-encoded JPEG data URI. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:35
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This pattern helps clean up clothing descriptions by cutting off unwanted parts. It only sees short text fragments so it cannot be misused.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 20568 is used to split captured text at certain keywords. The alternation contains nested groups but is applied to a short, already-bounded input, and has no unbounded quantifiers. No catastrophic backtracking risk is demonstrated.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:20568
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This line reads the server address you typed into the settings and prepares it for a connection test. It defaults to a common local server address (localhost:11434) if you left the field blank. It's just part of the connection tester—nothing shady.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:9113
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This code is part of how the app talks to an AI provider to generate story responses. It reads the AI's streamed reply and processes it. There's nothing shady here — it's just doing what the app is supposed to do: send your message to the AI and handle the response.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The candidate at line 19593 is located within the processWorldStreamLine function which parses server-sent events from an external AI provider API. The line checks if the stream line starts with 'data:' — a standard SSE protocol check. The surrounding code makes legitimate fetch requests to an OpenAI-compatible chat completions endpoint, includes proper authentication headers, and processes tool calls and state updates as part of the application's stated purpose of persistent AI story generation. The JS-X-Ray 'shady-link' signal did not retain matched literal values, and no evidence of unexpected network destinations, credential exfiltration, or concealed behavior is present in the supplied context. The fetch calls are to a configurable base URL (apiBase()) which is typical for this kind of application.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:19593
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a default setting for generating images using a local server on your own computer. It's safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1260 sets a default localImageBaseUrl to a loopback address (127.0.0.1:7860/v1). This is a legitimate default for the local-first platform to connect to a locally running Stable Diffusion or similar server. The scanner signal is not a security threat.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:1260
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
The app uses a simple pattern to read version numbers. It only looks at short text and can't cause performance problems.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The flagged regex is used to parse numeric version strings (e.g., '1.2.3'). The pattern is finite and does not allow catastrophic backtracking because it matches at most four groups of digits separated by dots. Input is constrained to version strings or similar short text. No ReDoS or unsafe behavior is 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
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:9380
zizmor reported artipacked
Expected behavior · high confidence
A security scanner thought the workflow might save secret tokens in a file that gets uploaded somewhere, but looking at the actual workflow, there is no such file upload. The token is only used temporarily to create a release on GitHub, which is exactly what it's supposed to do. There is no risk here.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The 'artipacked' scanner rule flags potential credential persistence through GitHub Actions artifacts. The reviewed workflow contains no actions/upload-artifact or actions/download-artifact steps. The release assets are uploaded directly via the `gh release create` command using the built-in GITHUB_TOKEN. No credentials are persisted in artifacts; the token is scoped to the job and not stored. This scanner finding is a false positive.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/release.yml:15-16
JavaScript analysis reported javascript.xray.prototype-pollution
Expected behavior · high confidence
This code includes a safety check that stops a certain type of attack, so it's actually making the app more secure.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.prototype-pollution in this repository.
Contextual assessment: The safeJsonClone function explicitly filters out __proto__, prototype, and constructor keys to prevent prototype pollution during deep cloning. This is a defensive measure, not a vulnerability. The scanner signal is triggered by the presence of those keywords in the code, but the context shows they are used as a security guard.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.prototype-pollution
- File role
- production
- Source
- app.js:845
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just a list of addresses where the app looks for local AI models on your own computer, like checking for KoboldCpp. It's completely normal and not a security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The string at line 409 is a hardcoded localhost URL (port 5001) used in the discover() function to probe for local AI model servers, specifically matching KoboldCpp as noted in the project's documentation. No external or malicious destination is involved. The scanner signal is a false positive for this legitimate local network access pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- labs-core.js:409
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test file uses Node's virtual machine to run a small piece of the main application in isolation. It only uses code from the app itself and does not let outsiders control what gets executed. This is a normal way to test parts of a program without causing side effects.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: This is a vm.runInNewContext call in a regression test file that extracts a function from the application source by slicing between known string markers. The context object passed is extremely restricted (containing only isPlainObject). The code being executed comes from the same application, not from user or network input, and the test validates behavior of the application's own functions. No mechanism exists for an attacker to control the parsed string or the context; any malicious injection would require prior compromise of the application source. The scanner signal flags vm use generically, but in this context it is a safe, common testing pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:84
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is from a test about archiving virtual humans. The 'data:' string is a fake generated photo used in testing, not a real link.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 351 contains 'data:image/jpeg;base64,generated' used as a test fixture in a timeline message. This is a static test value in assertion code. No actual network request or external link is involved.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:351
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 55 triggers on content inside a base64-encoded JPEG data URI. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:55
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test file uses Node's built-in VM sandbox to run a slice of the app's quest engine logic. It's a safe testing technique, not a security issue. The sandbox only contains harmless helpers, and no outside attacker can run code through it.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: This is a developer stress-test file that uses vm.runInNewContext to load a fixed substring of the project's own file into a sandboxed context. The context is deliberately limited to console, a stub showToast, internal quest module flags, and project helper functions. No user input, network data, or attacker-controlled code is evaluated. The VM usage is appropriate for isolating quest engine logic during testing and does not introduce a code execution vulnerability in shipped behavior because the file is not executed in production.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/quest_engine_stress_test.js:55-66
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a fake reference image used in a test to check that the app sends the correct source photo for AI generation.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1124 contains a hardcoded data URI 'data:image/png;base64,PROVIDER_REFERENCE' used as a test fixture to verify that the image API request sends only the generation reference photo. This static test value is only present in the test file and has no external exposure.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1124
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This regular expression is used by a testing tool to find function definitions inside the project's own code. It never processes outside information, so it is safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 211 is a static pattern used to match function declarations in a hardcoded source file (file). It is part of the declaration-indexing logic in a Node.js test harness. The input is a known string read from the filesystem; no attacker-controlled data influences the match. The pattern is standard and not exposed to ReDoS risk 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
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- scratch/app_source.js:239
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
A scanner flagged a piece of image data as suspicious, but it's just normal game art stored as text inside the file.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The JS-X-Ray shady-link signal at line 75 triggers on content inside a base64-encoded JPEG data URI. This is a standard embedded image in a generated world bundle; no actual network link or suspicious destination is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:75
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This default setting lets the app talk to ComfyUI on your own computer. It is not connecting to the internet.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1263 sets a default comfyUiBaseUrl to a loopback address (127.0.0.1:8188). This is the standard port for ComfyUI, a local image-generation tool. The project's configuration handling uses normalizeLoopbackUrl, indicating deliberate localhost-only design. No external data flow or exfiltration is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- app.js:1263
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This pattern cleans up leftover AI command tags from chat text. It's a harmless cleanup regex.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 29304 detects dangling tool-protocol fragments in visible text after embedded tool calls have been extracted. It combines the opening/closing tag and arg tags into one alternation. The pattern is bounded and lacks nested quantifiers. Even if the alternation could cause minor backtracking on crafted input, the worst outcome is a brief tab delay—a local self-DoS with no credential or data exposure. The scanner signal is a conservative false positive.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:29249
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This flagged line is test data for a companion's profile photo. It's a fake image string, not a real link or security concern.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 327 contains 'data:image/jpeg;base64,profile' used as a test fixture in a companion object. This is a static test value in assertion code. No network destination or user-controlled input is 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
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:327
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This pattern understands when you change your clothes in the story. It looks at short phrases and is safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 20626 (matching 'I swap my outfit for ...') uses bounded quantifiers {0,25} and {2,100} and has no overlapping alternatives. No catastrophic backtracking is possible. The signal is conservative and does not indicate a real vulnerability.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:20626
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just a list of addresses where the app looks for local AI models on your own computer, like checking for llama.cpp. It's completely normal and not a security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The string at line 408 is a hardcoded localhost URL (port 8080) used in the discover() function to probe for local AI model servers, specifically matching llama.cpp server as noted in the project's documentation. No external or malicious destination is involved. The scanner signal is a false positive for this legitimate local network access pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- labs-core.js:408
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is just a list of addresses where the app looks for local AI models on your own computer, like checking for LM Studio. It's completely normal and not a security risk.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The string at line 407 is a hardcoded localhost URL (port 1234) used in the discover() function to probe for local AI model servers, specifically matching LM Studio as noted in the project's documentation. No external or malicious destination is involved. The scanner signal is a false positive for this legitimate local network access pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- labs-core.js:407
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test runs a preset-finding function in isolation to confirm it correctly selects a built-in starter world. It uses only predefined data.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: Line 125 contains a vm.runInNewContext call that tests a preset-selection function using a hardcoded presetsSource string. No dynamic or untrusted input is involved.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:125
JavaScript analysis reported javascript.xray.obfuscated-code
Expected behavior · high confidence
The detector thought the code was purposely hidden, but it's just a list of preset settings for an AI roleplay tool. Everything is readable and meant to be that way.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code in this repository.
Contextual assessment: JS-X-Ray flagged the file for 'obfuscated-code' with low confidence, but the source reveals a straightforward JavaScript constant array containing descriptive preset labels and AI system prompts. There is no obfuscation — all strings are plaintext and clearly serve a legitimate function. The scanner's low confidence aligns with this being 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
- Rule
- javascript.xray.obfuscated-code
- File role
- production
- Source
- presets.js:1
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This code uses `new Function` only to check whether extracted snippets are valid JavaScript. The snippets come from the project's own code, not from anything a user types or uploads, so there is no risk of running untrusted code.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: The `new Function` call on line 180 is used inside a test to verify that the project's own code extractor (app_source.js) produces syntactically valid function bodies. The source argument (`entry.source`) is extracted from the project's own application source code (file) by a controlled static analysis tool. There is no user-controlled or attacker-controlled input reaching this constructor; it operates entirely on project-authored strings. The test runs in a development or CI environment and never exposes the generated function to untrusted data. This pattern is a legitimate and appropriate use of dynamic parsing for correctness verification.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/extractor_audit.js:180
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
Another game background image stored as data. Not a threat.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: The scanner flagged a base64-encoded JPEG data URI at this line. The context shows it is a location background image ('Records basement') with generated image metadata. This is a legitimate inline asset for the application's world data.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- policy-panic-world.js:105
JavaScript analysis reported javascript.xray.obfuscated-code
Expected behavior · high confidence
A security scanner thought some code might be hidden, but looking at the actual code shows it's plain and easy to read. There's nothing sneaky here.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code in this repository.
Contextual assessment: The scanner rule 'obfuscated-code' flagged line 1, but the provided source code is fully readable, well-commented, and contains no actual obfuscation, minification, or encoded strings. The signal is a false positive with low scanner confidence. No hidden or transformed behavior is 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
- Rule
- javascript.xray.obfuscated-code
- File role
- production
- Source
- app.js:1
JavaScript analysis reported javascript.xray.shady-link
Expected behavior · high confidence
This is a fake image used in a test to confirm the app can extract a WebP image from the AI's response.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.
Contextual assessment: Line 1223 contains a hardcoded data URI 'data:image/webp;base64,AAAA' used as a test fixture to verify GPTProto image extraction from a Gemini-like response. This static test value is only present in the test file and has no external exposure.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.shady-link
- File role
- production
- Source
- scratch/companion_audit.js:1223
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · high confidence
This regular expression checks whether a line of code ends with a semicolon. It only looks at the project's own source files, so there is no risk to users.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 239 is a static pattern used to test whether a line of source code ends with a semicolon. It operates on a substring of the hardcoded file file during declaration extraction. No user input is involved; the only data processed is local source text. The pattern is simple and cannot cause adverse effects.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- scratch/app_source.js:211
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This pattern detects when the story says you are wearing something. It only checks short phrases and cannot be tricked.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 20515 (matching 'you are wearing ...') uses bounded quantifiers {0,30} and {3,80} with no nested alternations. Catastrophic backtracking is not possible. The scanner signal does not demonstrate a vulnerability.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:20515
OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval
Expected behavior · high confidence
This test checks that HTML tags are properly escaped. It runs the app's escape function in a sandbox, so there is no way for an attacker to exploit this.
Technical evidence
Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.
Contextual assessment: Line 115 uses vm.runInNewContext to test HTML escaping. The executed code is a static slice of the app source containing the escapeHTML function. No user or external input reaches this sandbox. The sandbox prevents access to host globals. The only possible outcome is a test failure, which is recoverable and has no user impact.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- opengrep 1.26.0
- Rule
- tavernkeeper.dynamic-execution.javascript-eval
- File role
- production
- Source
- scratch/engine_audit.js:115
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test file uses Node's virtual machine to run a small piece of the main application in isolation. It only uses code from the app itself and does not let outsiders control what gets executed. This is a normal way to test parts of a program without causing side effects.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: This is a vm.runInNewContext call in a regression test file that extracts a function from the application source by slicing between known string markers. The context object passed is extremely restricted (containing only Set, RegExp, String). The code being executed comes from the same application, not from user or network input, and the test validates behavior of the application's own functions. No mechanism exists for an attacker to control the parsed string or the context; any malicious injection would require prior compromise of the application source. The scanner signal flags vm use generically, but in this context it is a safe, common testing pattern.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/gameplay_overhaul_audit.js:115
JavaScript analysis reported javascript.xray.unsafe-vm-context
Expected behavior · high confidence
This test checks that the app's security policy correctly blocks inline scripts. It runs a small piece of the app in a sandbox with fixed test data.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-vm-context in this repository.
Contextual assessment: Line 115 contains a vm.runInNewContext call that tests CSP policies with hardcoded assertions. The executed code is a static string derived from the app source. No external input reaches the sandbox.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-vm-context
- File role
- production
- Source
- scratch/engine_audit.js:115
JavaScript analysis reported javascript.xray.unsafe-regex
Expected behavior · low confidence
This pattern understands when you type 'I'm wearing a blue coat'. It works with short sentences and is safe.
Technical evidence
Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.unsafe-regex in this repository.
Contextual assessment: The regex at line 20623 (matching 'I'm wearing ...') uses bounded quantifiers {0,30}? and {2,100} with no overlapping alternations. The scanner signal is conservative; no catastrophic backtracking is reachable. The pattern is part of the outfit detection logic, consistent with the project's purpose.
Impact: low · Exploitability: unlikely
Developer action: none
- Scanner
- javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
- Rule
- javascript.xray.unsafe-regex
- File role
- production
- Source
- app.js:20623