TavernKeeper Scan Report

starlitcode/Lumiverse-Auto-Retry

Commit 00b6add 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 17 low

What this review found

No material or immediate-danger item was identified.

Minor cautions

OpenGrep reported tavernkeeper.download-and-execute.shell-pipeline

Minor caution · high confidence

A development setup script installs the bun programming tool by downloading and running code from the official bun website. This is a common installation method for bun but relies on trusting that website. The script is only for developers setting up a working environment, not part of the extension users install. No malicious behavior is present.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.download-and-execute.shell-pipeline. The match applies to this repository.

Contextual assessment: Line 40 pipes curl output from the official bun.sh install URL directly into bash as a fallback when npm install fails. This is the standard installation method recommended by the bun project. The script is a development environment setup file (file) intended to prepare a Claude Code sandbox for working on the repo, not a shipped extension component loaded by end users. The curl|bash pattern is a recognized minor weakness because it executes remotely fetched code without integrity verification, but the URL is the official bun installer endpoint, npm is tried first, and the command is wrapped in || true so failure does not halt setup. No evidence of malicious redirection, obfuscated URLs, or concealed execution is present. Concrete harm would require compromise of the bun.sh infrastructure, which is speculative and not demonstrated by the supplied evidence.

Impact: low · Exploitability: unlikely

Developer action: Consider pinning the bun installer to a specific version or verifying a checksum after installation to reduce supply-chain reliance on the live bun.sh endpoint.

Scanner
opengrep 1.26.0
Rule
tavernkeeper.download-and-execute.shell-pipeline
File role
production
Source
setup.sh:40

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
test
Source
test/ui.mjs:2325
Deterministic technical evidence (5)
  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: test/word-swaps.test.ts:99

  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: test/prompt-viewer.test.ts:354

  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: test/prompt-viewer.test.ts:40

  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: test/refusal-note.test.ts:43

  • OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval · opengrep 1.26.0

    This technical signal is not part of the shipped runtime behavior.

    Policy reason: owned-inert-tooling · Execution scope: test-documentation-data

    Source: test/prompt-viewer.test.ts:422

Contextual expected matches (5)

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner flagged a URL-like pattern, but the code at that location is part of a PNG pixel decoder used in automated UI tests. The only URL present is a fake local test origin used by the Playwright test harness, not a real external destination.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. 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.shady-link
File role
test
Source
test/ui.mjs:255

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The flagged pattern is a text-matching rule that identifies HTML-like tags in AI replies so the word-swap feature avoids corrupting markup. The repetition limit and non-overlapping alternatives prevent runaway processing. This is normal text processing for the extension's stated purpose.

Technical evidence

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

Contextual assessment: The MARKUP regex at line 514 matches HTML-ish tags to protect them from word-swap rules. The alternation branches (double-quoted, single-quoted, or bare characters) share no common first character, and the repetition is bounded at {0,400}, preventing catastrophic backtracking. The code comments confirm this design is intentional. This is a standard text-processing pattern for the extension's find-and-replace feature, which is explicitly described in the project's README as an optional, off-by-default reply editing feature. No attacker-controlled input reaches this regex in a way that creates security harm; at worst, pathological input could cause minor extra processing, but the bounded quantifier mitigates that.

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-regex
File role
generated
Source
dist/backend.js:514

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

The scanner flagged environment-variable access, but the only use is reading a CHROMIUM_PATH variable to tell Playwright where to find a browser for automated testing. No credentials, secrets, or sensitive environment data are read or transmitted.

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 308 is in the stage() function which sets up Playwright page routing and navigation. The 'serialize-environment' scanner signal likely matched the process.env.CHROMIUM_PATH reference visible in the surrounding context (the chromium.launch call uses executablePath: process.env.CHROMIUM_PATH || undefined). This is a standard pattern for pointing Playwright at an already-installed browser binary instead of one it manages itself, used solely in the test harness. No environment variables beyond this browser-path configuration variable are read, serialized, or transmitted. The file is a test file (file_role=test, execution_scope=automation) and no credential or secret material is accessed.

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
test
Source
test/ui.mjs:308

JavaScript analysis reported javascript.xray.unsafe-regex

Expected behavior · high confidence

The flagged patterns are text-matching rules that help the extension detect cut-off, empty, or refused AI replies, plus utilities for parsing colors and deriving UI selectors. All use bounded repetition and are part of the extension's core purpose. No security risk is present.

Technical evidence

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

Contextual assessment: The five scanner-matched regex signals correspond to patterns across the frontend file: HTML_TAG for stripping markup, REFUSAL_STRONG and REFUSAL_SOFT arrays for detecting accidental refusals, UNSTABLE_NAME/SAFE_NAME for deriving stable CSS selectors, and a parseColor regex for reading computed styles. All repetition quantifiers are bounded (e.g., {0,400}, {0,30}, {0,20}, {0,40}). These patterns process AI reply text and DOM elements to fulfill the extension's stated purpose of retrying failed replies and managing UI panels. No pattern constructs dynamic regex from untrusted input in a dangerous way; the buildGroups function in the backend escapes user-provided swap rules before compiling them. The frontend patterns are all static literals. No attacker-controlled path to meaningful harm is demonstrated.

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-regex
File role
generated
Source
dist/frontend.js:783

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

This is a test file that loads the extension's own source code into a headless browser to verify its UI behaves correctly. There is no downloading of code from the internet or execution of anything untrusted. The scanner mistook standard browser-automation test patterns for a download-and-execute threat.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.download-to-execution. The match applies to this repository.

Contextual assessment: The flagged region (lines 3274-3947 of file) is browser-automation test code using Playwright/Puppeteer-style APIs. The file imports readFileSync from node:fs to load the extension's own local SOURCE and THEME constants, then injects them via page.addScriptTag and page.addStyleTag into a headless browser page for testing. page.evaluate runs test assertions inside the browser context. The scanner's download-to-execution rule likely matched on addScriptTag and evaluate as code-execution sinks, but the content injected is the project's own locally-read source, not network-retrieved or attacker-controlled data. No fetch, http, or network retrieval primitive appears in the supplied code. The file_role is test and execution_scope is automation, consistent with its contents. No external network calls, credential access, exfiltration, or untrusted code execution 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_families-1
Rule
javascript.download-to-execution
File role
test
Source
test/ui.mjs:3274-3947

Related contextual observations

Bounded regex repetition prevents catastrophic backtracking

low risk · high confidence

The regex uses a bounded repetition limit and non-overlapping alternatives, which are deliberate safeguards against runaway processing on unusual input.

Technical assessment

The {0,400} quantifier caps repetition and the three alternation branches start with distinct characters, so the engine cannot backtrack between them. The surrounding code also uses indexOf guards before applying patterns and blanks matched regions to keep subsequent patterns from re-scanning them, further limiting processing cost.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Bounded regex patterns for refusal detection and UI utilities

low risk · high confidence

The HTML tag pattern includes a repetition cap to prevent excessive processing on unusual input, which is a deliberate safeguard.

Technical assessment

The HTML_TAG constant uses {0,400} bounded repetition and three non-overlapping alternation branches, matching the same safe design as the backend MARKUP pattern. The REFUSAL_STRONG and REFUSAL_SOFT arrays use short bounded quantifiers for scanning reply text. None of these patterns processes attacker-controlled regex input; they are all static pattern literals applied to model-generated reply text for the extension's retry detection logic.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

curl|bash fallback uses official bun installer with npm-first preference

low risk · high confidence

The script tries the npm package manager first and only falls back to downloading from the bun website if that fails, reducing but not eliminating the trust placed in a remote URL.

Technical assessment

The command uses || to prefer npm install -g bun, falling back to the curl|bash method only if npm fails. The || true at the end means even a failed install does not abort the script, and a subsequent check at line 53 exits with an error if bun is still not available. The curl|bash endpoint is the official bun.sh installer, not an unknown or obfuscated destination.

Impact: low · Exploitability: unlikely

Developer action: none

Sources:

Test harness uses synthetic local origin and environment path for Playwright browser automation

low risk · high confidence

Both scanner signals come from the test harness, which uses a fake local web address and reads a browser path from the environment. Neither does anything with real user data or external services.

Technical assessment

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

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Test harness injects local source via addScriptTag, not network-fetched code

low risk · high confidence

The test injects the extension's own source into a test browser page to exercise it, which is normal for UI tests and not a security concern.

Technical assessment

page.addScriptTag({ content: SOURCE, type: 'module' }) injects the extension's own source code (read from local files) into a headless browser for testing. This is standard test harness behavior, not network retrieval of untrusted code. The SOURCE variable is populated from local file reads, not from any network fetch.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity