TavernKeeper Scan Report

unrefined803/RPGraph

Commit ba528e0 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:2461
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 just styling code that changes the mouse cursor when a user interacts with a profile image picker. It has no ability to modify startup behavior or persist anything.

Technical evidence

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

Contextual assessment: The flagged line is a CSS rule for a profile image crop UI element styling the active cursor state. This is a declarative stylesheet declaration with no executable code, no data flow, no persistence mechanism, and no startup modification behavior. The scanner rule produced 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:15866

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

The scanner flagged a styling rule in a CSS file, but CSS files only control how things look on screen and cannot modify system startup or persistence. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS rule for a profile-pick dialog stage class. The source context shows purely declarative CSS styling properties. A CSS file cannot perform startup persistence modification or execute code. The scanner rule matched on keyword patterns in CSS property values or selectors that are unrelated to runtime persistence behavior. No executable behavior, data flow, or persistence mechanism is present.

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

The scanner flagged a CSS heading style, but stylesheets cannot change system startup behavior. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS rule for a profile-pick header heading element. The surrounding context is declarative CSS with color and font-size properties only. No executable or persistence behavior exists in a stylesheet.

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 layout styling for an image picker dialog. It cannot modify startup behavior or persist anything.

Technical evidence

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

Contextual assessment: The flagged line is a CSS class definition for a profile-pick image frame container. It is purely presentational styling with no executable logic, no persistence, and no startup modification capability.

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 visual styling for a resize handle on a profile image cropping tool. It has no startup or persistence capabilities.

Technical evidence

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

Contextual assessment: The flagged line is a CSS class definition for a profile-pick crop resize handle. It only sets visual properties like position, dimensions, border, and cursor. No executable code or persistence mechanism is present.

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner flagged a standard streaming-data prefix used by chat APIs. This is normal parser code for reading model responses and does not contact any external service.

Technical evidence

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

Contextual assessment: The flagged line is inside an SSE line parser that checks whether a normalized line starts with 'data:' to collect streaming payload fragments. The 'shady-link' signal is triggered by the SSE protocol prefix string, not by any URL, external destination, or network call. The module constructs request bodies for LM Studio and parses streaming responses; it contains no outbound network destinations, no credential handling, and no obfuscation.

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:150

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

The scanner flagged a CSS margin rule, but stylesheets cannot modify system startup. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS selector grouping for profile-pick header heading and paragraph elements with a margin reset. This is declarative styling only and cannot perform persistence or startup modification.

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

Detailed wording was omitted by the public report safety filter.

Technical evidence

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

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

Impact: none · Exploitability: unlikely

Developer action: none

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

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner found multiple web addresses in the code. Looking at the actual code, these are all local addresses for connecting to AI tools that run on your own computer, such as LM Studio, Ollama, and ComfyUI. This matches exactly what the project says it does. There is no sign of data being sent to any suspicious or hidden location.

Technical evidence

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

Contextual assessment: The scanner flagged 11 occurrences of a shady-link signal. The supplied source context shows these URLs are loopback and local-network endpoints for AI model providers: localhost 5173 for the Vite dev server, localhost 1234 for LM Studio, localhost 11434 for Ollama, localhost 8080 for llama.cpp, and 127.0.0.1 8188 for ComfyUI. The project README explicitly states it connects to these local backends. Additional references to Gemini and OpenRouter endpoints match the stated cloud provider support. URL construction functions validate protocols and normalize paths. No evidence shows data being sent to unexpected, concealed, or suspicious external destinations. These are legitimate service endpoints consistent with the project purpose.

Impact: none · Exploitability: unlikely

Developer action: none

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

JavaScript analysis reported javascript.xray.unsafe-command

Expected behavior · high confidence

This is a small developer-only setup script that configures local git hooks when someone installs the project. It only runs two fixed git commands with no outside input, so there is no path for an attacker to misuse it.

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 runs two fixed-string git commands via execSync: one to detect a git work tree and one to set core.hooksPath to a tracked directory. Both command strings are literals with no interpolation, no external or user-controlled input, and no network or credential access. It is invoked only by the prepare npm script during npm install, and fails silently outside a git work tree. This is a standard, low-risk development tooling pattern for installing local git hooks.

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 styling for a visual guide inside a profile image cropper. It cannot affect startup or persistence.

Technical evidence

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

Contextual assessment: The flagged line is a CSS class definition for a profile-pick crop handle with dashed border styling. It is declarative presentation only, with no data flow, persistence, or startup behavior.

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 scanner flagged copying the environment when starting the app. This is normal behavior for a launcher script and the environment is only passed to the local app process, not sent anywhere external.

Technical evidence

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

Contextual assessment: The flagged line spreads process.env into a local variable, deletes the ELECTRON_RUN_AS_NODE entry to prevent Electron from running as plain Node, and passes the resulting object to a locally spawned Electron child process. The environment is not serialized to disk, sent over a network, or written to logs. This is a standard launcher script pattern for desktop apps spawned from Electron-based terminals.

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

The scanner flagged a CSS selector, but stylesheets cannot change system startup behavior. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is part of a CSS selector grouping for profile-pick header elements. The context is purely declarative CSS styling with no executable behavior or persistence mechanism.

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

The scanner flagged a CSS layout rule, but stylesheets cannot modify system startup. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS rule for a profile-pick header class with flexbox and border styling. This is declarative CSS only and cannot perform any persistence or startup modification behavior.

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

The scanner flagged a CSS dialog styling rule, but stylesheets cannot change system startup behavior. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS rule for a profile-pick dialog class with width, height, flexbox, padding, border, and background properties. This is purely declarative styling with no executable or persistence behavior.

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 scanner flagged a fake image data string inside a unit test. This is test data only and does not affect the running application.

Technical evidence

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

Contextual assessment: The flagged line is a test fixture containing a data URL ('data:image/png;base64,AAAA') used to verify image-attachment request construction. The 'shady-link' signal is triggered by this inline test data URL. This is a test file that exercises the LM Studio adapter functions; it contains no production runtime behavior, no network calls, and no credential access.

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:69

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This is layout styling for action buttons in a profile picker dialog. It has no startup or persistence capabilities.

Technical evidence

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

Contextual assessment: The flagged line is a CSS class definition for profile-pick action buttons layout. It only sets flexbox display properties. No executable logic, persistence, or startup modification is present.

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 styling for a dark overlay shown behind a crop selection in a profile image picker. It cannot modify startup or persist anything.

Technical evidence

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

Contextual assessment: The flagged line is a CSS class definition for a profile-pick scrim overlay with absolute positioning and pointer-events disabled. It is purely visual overlay styling with no executable code or persistence behavior.

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 styling for the circular crop selection tool in a profile image picker. It has no startup or persistence capabilities.

Technical evidence

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

Contextual assessment: The flagged line is a CSS class definition for the profile-pick crop circle with absolute positioning, border, and box-shadow styling. No executable code, data flow, persistence, or startup modification is present.

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 styling that controls how images display inside a profile image picker. It cannot affect startup or persistence.

Technical evidence

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

Contextual assessment: The flagged line is a CSS selector for images inside the profile-pick image frame, setting display, max-width, max-height, and object-fit. It is declarative styling only, with no executable logic, persistence, or startup behavior.

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

The scanner flagged a CSS overlay style, but stylesheets cannot modify system startup. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS rule for a profile-pick backdrop class using position fixed and z-index for a modal overlay. This is declarative CSS styling only. No code execution, persistence, or startup modification is possible from a stylesheet.

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

The scanner flagged a CSS paragraph style, but stylesheets cannot change system startup behavior. This is a false positive.

Technical evidence

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

Contextual assessment: The matched line is a CSS rule for a profile-pick header paragraph element with margin and font styling. This is declarative CSS only and cannot perform persistence or startup modification.

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