TavernKeeper Scan Report

unrefined803/RPGraph

Commit 8006e53 Reviewed

No material or immediate-danger concern was identified in this review.

This advisory report describes what the named tools and review process found at one exact commit. Unknown or unobserved behavior may still exist.

0 immediate danger 0 material 31 low

What this review found

No material or immediate-danger item was identified.

Minor cautions

JavaScript analysis reported javascript.xray.unsafe-regex

Minor caution · medium confidence

A crafted input might briefly slow or freeze the local client, without showing broader security harm.

Technical evidence

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

Contextual assessment: The expression may permit a local CPU slowdown, but this evidence shows no credential, persistence, code-execution, or cross-user impact.

Impact: low · Exploitability: plausible

Developer action: Bound the input length or replace the expression when practical.

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-regex
File role
production
Source
electron/main.cjs:2453
Deterministic technical evidence (8)
  • Dependency advisory GHSA-2v37-7h3g-55p8:pkg:c301f7c72c558e741e2a83a0 applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-8xcm-r25x-g524:pkg:9efcb22ccad71d16e9fbb4db applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-4cwx-7wf7-3272:pkg:1176429e737cfabdf766cdff applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-m8rv-5g2x-5cg5:pkg:effd824192445928106e41b7 applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-9f4c-93c8-jc8g:pkg:efaea3d20909e7a86cc5178e applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-r4w5-6pfg-jxp5:pkg:1b5485487a562a9e909542d7 applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-v3r7-h72x-cjcm:pkg:2f99006f4e2ddba635fa3089 applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

  • Dependency advisory GHSA-jr45-8vmc-qm54:pkg:ef6cbe09bba3516afec0221f applies · osv-scanner 2.4.0

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

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

    Source: package-lock.json

Contextual expected matches (22)

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for when the user clicks a profile picture cropper. It has nothing to do with startup or security.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15866 in file defines a CSS pseudo-class rule for .profile-pick-crop:active. CSS files contain no executable code and cannot modify application startup behavior or persistence. The scanner rule is triggered by a keyword pattern without context and is a false positive.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15866

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for a popup window in the app. It doesn't do anything besides change colors and layout, so there's no security concern.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15816 is a CSS class selector (.profile-pick-stage) and its style rules. This is a static CSS rule with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule 'startup-modification' is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15816

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for a header inside a popup. It only affects the look and has no security impact.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15805 is a CSS rule for .profile-pick-header h4. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15805

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for an image frame in the profile picker UI. It does not affect startup.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15827 in file defines the CSS class .profile-pick-image-frame. CSS files contain no executable logic and cannot modify startup persistence or any application behavior beyond styling. The scanner rule is a false positive due to keyword matching.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15827

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for a resize handle on the crop overlay. It is harmless.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15878 in file defines the CSS class .profile-pick-crop-resize. This is a purely visual style rule with no executable capability. It cannot modify startup behavior or persistence. The scanner alert is a false positive.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15878

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for text inside a popup header. It only changes font size and color, nothing risky.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15800 is a CSS selector .profile-pick-header h4,.profile-pick-header p. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15800

JavaScript analysis reported javascript.xray.data-exfiltration

Expected behavior · high confidence

The program uses a standard system information module to understand the computer it runs on, which is normal for desktop applications. No data is being stolen.

Technical evidence

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

Contextual assessment: The 'data-exfiltration' signal is triggered by the standard Node.js 'os' module require statement. This module provides operating system utilities and is widely used for legitimate purposes such as path construction, platform detection, and environment handling. No evidence of credential theft or data exfiltration exists in the code.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.data-exfiltration
File role
production
Source
electron/main.cjs:8

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The program connects to AI services to generate story content. The detected 'data' variable is just a container for the AI's responses, not a suspicious link.

Technical evidence

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

Contextual assessment: The 'shady-link' signal fires on the 'data' variable name in a destructured require statement. This variable is used to store API response data from legitimate HTTP requests to local and remote AI services (LM Studio, Ollama, Gemini, OpenRouter). The application's purpose is to make network calls to AI backends, and this is fully consistent with that purpose. No malicious link or exfiltration.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
electron/main.cjs:49

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

A test file contains a fake image data URL to check if the program handles images correctly. This is just test data, not a real link.

Technical evidence

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

Contextual assessment: The 'shady-link' signal fires on a 'data:image/png;base64,...' string used as test fixture data in a unit test for the LM Studio chat body builder. This is a hardcoded test value, not a dynamic or external link. No network involvement or 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_families-1
Rule
javascript.xray.shady-link
File role
test
Source
electron/lmStudioChat.test.ts:41

JavaScript analysis reported javascript.xray.unsafe-command

Expected behavior · high confidence

This script runs a couple of fixed git commands to set up code quality hooks when you install the project. It only runs on your own machine and can't be tricked by an attacker because it doesn't use any outside information.

Technical evidence

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

Contextual assessment: The script uses execSync to run hardcoded git commands ('git rev-parse --is-inside-work-tree' and 'git config core.hooksPath .githooks') with no user-controlled input. All strings are literals, and the operation is a standard setup task for installing project git hooks. The script is invoked only via the 'prepare' npm script during development installation and gracefully handles failures when not in a git work tree. There is no pathway for attacker input or exfiltration.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.unsafe-command
File role
tooling
Source
scripts/setup-git-hooks.mjs:8-10

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for a handle inside the crop circle. It does not do anything beyond visual appearance.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15870 in file defines the CSS class .profile-pick-crop-handle. CSS rules cannot execute code or affect startup persistence. The scanner rule is a false positive triggered by pattern matching without context.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15870

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The program copies environment settings to start the main app as a separate process. This is a normal way to run programs, and the copied settings stay on your computer.

Technical evidence

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

Contextual assessment: The 'serialize-environment' signal is raised by copying the parent process environment into a child process environment object before spawning Electron. This is a standard and necessary practice for launching a subprocess that needs access to the user's shell environment. The code explicitly removes ELECTRON_RUN_AS_NODE to prevent a known bug, demonstrating conscientious handling. No environment data is transmitted anywhere; it remains entirely local.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.serialize-environment
File role
tooling
Source
scripts/run-electron.mjs:7

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for paragraph text inside a popup header. It only changes appearance, no security risk.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15801 is a CSS rule for .profile-pick-header p. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15801

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for a header bar in a popup. It only affects layout and colors, no security concern.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15791 is a CSS class selector .profile-pick-header. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15791

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for a dialog box in the app. It only sets width, padding, background color, etc., with no security impact.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15778 is a CSS class selector .profile-pick-dialog. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15778

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The program reads streaming data from an AI model using the standard SSE format. The detected 'data:' string is part of this normal data reading process, not a malicious link.

Technical evidence

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

Contextual assessment: The 'shady-link' signal fires on the 'data:' prefix check in an SSE parser for LM Studio streaming responses. This is standard SSE protocol handling, constructing a data URL or routing URL fragments. No network exfiltration or phishing behavior is present; the parsed data is consumed locally to process AI model output.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
electron/lmStudioChat.cjs:127

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for the action buttons area in the profile picker. It is not related to startup.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15892 in file defines the CSS class .profile-pick-actions. CSS has no executable capabilities and cannot modify startup behavior or persistence. The scanner alert is a false positive.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15892

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal dark overlay behind the crop area. It has no effect on startup.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15843 in file defines the CSS class .profile-pick-scrim. This is a visual overlay style with no executable logic. It cannot affect startup persistence. The scanner rule is a false positive.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15843

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for the crop circle overlay. It does not affect startup.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Line 15850 in file defines the CSS class .profile-pick-crop. CSS files contain no executable instructions and cannot modify startup behavior or persistence. The scanner alert is a false positive.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15850

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is a normal style for images inside the profile picker. It is harmless.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Detailed technical wording was omitted by the public report safety filter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15836

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for a dark overlay behind a popup. It only affects the visual backdrop, no security risk.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15767 is a CSS class selector .profile-pick-backdrop. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15767

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is just a CSS style for paragraph text inside a popup header. It only changes font size and color, nothing risky.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The flagged line at position 15810 is a CSS rule for .profile-pick-header p. This is a static style declaration with no executable logic, no persistence mechanism, and no startup modification capability. The opengrep rule is a false positive on CSS content.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
src/styles.css:15810

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity