TavernKeeper Scan Report

Beeopo/Marinara-Rewrite

Commit b823cdd 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 44 low

What this review found

No material or immediate-danger item was identified.

Minor cautions

zizmor reported excessive-permissions

Minor caution · high confidence

The CI workflow doesn't lock down its permissions as tightly as recommended, but it doesn't do anything dangerous that would make full permissions a real risk.

Technical evidence

Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.

Contextual assessment: The workflow does not set explicit GITHUB_TOKEN permissions. Default permissions vary by event (read-write on push to default branch, read-only for PRs from forks). However, the job only checks out code and runs Node scripts; it does not write to the repository, upload artifacts, or interact with any protected resources. No sensitive data flows through this job, so the missing explicit permissions do not create a practical attack surface.

Impact: none · Exploitability: unlikely

Developer action: Add `permissions: contents: read` at the job or workflow level to follow the principle of least privilege and satisfy security linters.

Scanner
zizmor 1.28.0
Rule
excessive-permissions
File role
tooling
Source
.github/workflows/ci.yml:9-26
Expected scanner matches (40)

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a test that checks if the URL formatting code works correctly. The URL shown points to a local server (your own computer) and is never actually contacted.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: Line 7 contains a static test assertion using a loopback URL (127.0.0.1:11434) as part of the URL normalization unit test. The URL is never used for actual network requests; it is only a literal string compared in an assert.equal call. The scanner flagged it as a 'shady-link' due to the presence of an HTTP URL in source code, but in this context it is a benign test fixture.

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
selfcheck.mjs:7

JavaScript analysis reported javascript.xray.shady-link

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.shady-link in this repository.

Contextual assessment: The URL at this line is part of a hardcoded preset list of localhost endpoints for common AI servers. The extension provides these as convenient defaults for configuring direct API mode per its documented feature. No exfiltration or unexpected network destination 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
extension.js:3380

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

The flagged code builds a test function from a piece of the extension's own code to check that it works correctly. It doesn't run any outside commands or user input, so it's safe.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: This candidate flags a dynamic execution (new Function) at line 904 in selfcheck.mjs. The context shows this is a test file that constructs functions from hardcoded slices of the shipped extension source to verify internal logic. No attacker-controlled input reaches the constructed function; all source slices are pre-extracted from the extension's own code. This is a standard testing pattern and does not introduce runtime risk.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:904

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This is a test file that uses a technique called 'dynamic function creation' to check if a certain feature works correctly. It only runs during development and does not process any data from outside the project. There is no security risk.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The new Function call at line 447 is part of a self-check test harness that dynamically creates a function from source code extracted from file to test legacy namespace adoption logic. The code string is derived from the project's own source at build time, not from any external or attacker-controlled input. This is a standard testing pattern and does not introduce a runtime security risk in the shipped extension.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:447

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a default URL for the extension's extender feature, pointing to a local server.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: The URL at this line is a placeholder in the extender server URL input field, defaulting to a local address. This is part of the extension's configuration UI for connecting to a local sidecar service. No threat evidence exists.

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
extension.js:3460

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This is another test that builds a function from the extension's own code to make sure it behaves properly. No harmful code is injected.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: Lines 1034-1037 contain a new Function call that constructs guardedPatch from a pre-extracted source slice _gpSrc. This is part of the self-check test suite, not production code. The source slice is derived from the shipped extension and no external data flows into the function construction.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1034-1037

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is the extension's default setting to connect to a local helper program on your own computer, not to an external server. It's safe.

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
extension.js:1925

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a preset URL for connecting to a local LM Studio server.

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
extension.js:3378

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This code runs tests by creating functions from strings, but only developers running the test suite see it. It doesn't affect users because it's not part of the extension they install.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The dynamic execution (new Function) at lines 1222–1226 is part of a self-check test harness that extracts shipped extension source from an embedded string and creates functions for assertion-driven testing. The arguments passed to new Function are developer-controlled strings from the test's own source, never user or external input. This pattern is standard for inline unit testing of private functions and does not execute untrusted code. No evidence indicates this test file is shipped or executed in production deployments.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1222-1226

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

A test that builds undo/redo functions from the extension's code to verify they work. It doesn't let anyone inject commands.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: Lines 1055-1058 contain a new Function call building doUndo/doRedo logic from a pre-extracted source slice. The source is from the extension's own code and is used only in the self-check test. No attacker-controlled input influences the constructed function.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1055-1058

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

Code that builds a function from text in a test file, used only by developers to check the extension's behavior. Not part of the user-facing extension.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The dynamic execution (new Function) at lines 1166–1167 is part of a self-check test harness that constructs a module from extracted source strings for unit testing review-then-patch logic. The source and callback arguments are test constants; no external or user-controlled data reaches the call. This is a development-only test pattern with no production execution risk.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1166-1167

JavaScript analysis reported javascript.xray.obfuscated-code

Expected behavior · high confidence

The extension's code is written in plain, readable JavaScript. There is no hidden or scrambled code, so this alert is a false alarm.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.obfuscated-code in this repository.

Contextual assessment: The scanner flagged this file for obfuscation, but the supplied source is readable JavaScript with clear structure, comments, and standard patterns. No actual obfuscation, encoding, or concealed logic is present. The scanner signal is a false positive likely triggered by the file's minor compression or non-standard formatting. No malicious intent or hidden behavior is indicated.

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
extension.js:1

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This is part of a built-in test that checks the extension's own code for bugs. It runs functions the extension uses internally, but only during the test — never when you're using the rewrite feature.

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 1442 is used within a self-test script to extract and execute internal functions (`windowText`, `assembleLedgerText`) from the extension's own source code for regression testing. The source string (`_ledgerSrc`) is derived via `_SRC.slice()` from the same extension file being tested — no external or untrusted data reaches this constructor. This is a standard test-harness pattern and is never invoked during normal extension usage.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1442-1444

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 736 contains a new Function call that constructs a function escFence from a pre-extracted source slice _escFence. This is part of the self-check test suite. No user input or external data is passed into the construction; the slice is from the extension's own code.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:736

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a preset URL for connecting to a local Ollama server.

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
extension.js:3373

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

The extension uses fetch to securely talk to the AI server's API, which is exactly what it's supposed to do. It does not download and run any external code, so this alert is a false alarm.

Technical evidence

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

Contextual assessment: The file contains a network retrieval primitive (fetch) and an API response handler, but there is no dynamic code execution sink (eval, Function, setTimeout with string) in the examined lines. The apiFetch function fetches from `/api` paths and returns JSON—a standard, necessary operation for an extension that communicates with the Marinara server and external AI APIs. The scanner correlation is a false positive because no executable code path downloads and then executes external content.

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
extension.js:2-47

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

Part of a test suite that runs the extension's internal functions in a sandbox. Only used during development, not by end users.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The dynamic execution (new Function) at lines 1295–1298 is part of a self-check test harness that extracts and tests the doCommit function using fixed test data. The new Function call is supplied with developer-controlled strings from the test's own source, and the resulting function is invoked with test-only arguments. No untrusted input flows into the dynamic execution.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1295-1298

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a preset URL for connecting to a local vLLM server.

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
extension.js:3381

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a preset URL for connecting to a local llama.cpp server.

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
extension.js:3379

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is just a default setting pointing to a local helper program on your own computer. It is not suspicious.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: The string at line 242 is a default configuration value for the extenderUrl key, set to a localhost address. The extension connects to a local sidecar service for memory and inference; this default is expected and disclosed in the project documentation. No evidence of exfiltration or concealed network 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
Rule
javascript.xray.shady-link
File role
production
Source
extension.js:242

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

Test code that dynamically creates functions to verify undo/redo behavior. Only developers run this; it does not affect user installations.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The dynamic execution (new Function) at lines 1120–1123 is part of a self-check test harness that builds undo/redo functions from extracted shipped source. The strings passed to new Function are literals from the test file, not from external sources. This is a standard unit-testing pattern with no production deployment risk.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1120-1123

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This is just an automated test that runs a small piece of the extension's own code to check for bugs. It doesn't introduce any security risk because the code being tested is part of the extension itself, not from an outside source.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The new Function on line 116 constructs a test helper that evaluates a substring of the extension's own shipped source code. This is used only within the selfcheck drift-guard assertions to verify that the file header logic (CSRF, content-type) behaves correctly. The source string is derived from the shipped artifact, not from any external or user-controlled input. This is a test-only utility and is not present in the runtime extension.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:116

zizmor reported unpinned-uses

Expected behavior · high confidence

The workflow uses a version tag like "v4" instead of a specific exact version number. This is common for simple CI checks and poses very low risk here.

Technical evidence

Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.

Contextual assessment: actions/setup-node@v4 is pinned to a mutable major version tag rather than an immutable commit SHA. In this CI-only workflow with no sensitive data, deployment, or artifact handling, the supply chain risk of an unpinned action is minimal. The action is widely used and maintained by GitHub. No attacker-controlled inputs reach the action in a way that could trigger compromise.

Impact: low · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:13

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

This line sets a temporary flag during the build process so the self-check knows not to complain. It is not reading, storing, or sending any private information like passwords or API keys.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment in this repository.

Contextual assessment: The code sets process.env.RWA_BUILDING = '1' solely as a build-time flag to signal to the selfcheck module that the build is in progress, allowing it to skip a bundle-is-in-sync assertion. This is a temporary environment variable set during the build script execution (node file) and is not used to read, store, or exfiltrate any credential or sensitive environment variable. The scanner pattern 'serialize-environment' is triggered by any assignment to process.env, but in this context the assignment is to a hardcoded constant unrelated to secrets and serves a benign coordination 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
Rule
javascript.xray.serialize-environment
File role
production
Source
build.mjs:18

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

Another test that builds functions from the extension's code to verify merge logic. No outside commands are run.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: Lines 835-838 contain a new Function call constructing applyMerged/mergeChainSummary from a pre-extracted source slice. This is part of the self-check test suite. No external data flows into the function construction; only hardcoded source slices.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:835-838

JavaScript analysis reported javascript.download-to-execution

Expected behavior · high confidence

This file is a safety check that tests the extension's own code, not a part of the extension that runs in your browser. The flagged lines are just checking that certain code patterns exist, not actually doing anything dangerous.

Technical evidence

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

Contextual assessment: The scanner flagged a correlation between a network retrieval substring and a code execution sink, but the file is a test-only selfcheck script. The fetch string is merely a text-match assertion to verify the shipped source contains a specific call, and the new Function is used on a known substring of the extension source to test header logic. No actual network retrieval occurs in this file, and no untrusted input reaches the dynamic function. This is a false positive from static analysis.

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
selfcheck.mjs:104-116

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

A test that builds a guarding function from the extension's code to check that it prevents overwrites correctly. It's safe.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: Lines 949-952 contain a new Function call constructing guardedPatch from a pre-extracted source slice _gpSrc. This is part of the self-check test suite evaluating the guard behavior. No attacker-controlled input reaches the constructed function.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:949-952

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: Lines 771-774 contain a new Function call constructing escFence from a pre-extracted source slice. This is part of the self-check test suite verifying fence escaping. No external data is injected; the source is from the extension's own code.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:771-774

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This is another automated test that runs parts of the extension's own code to make sure they still work after changes. It's like a sanity check for developers and doesn't expose users to any risk.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The new Function on lines 174-178 extracts alignment functions (spanIsBalanced, alignExact, windowMap, etc.) from the shipped file source and constructs them at runtime for drift-guard assertions. The extracted code is entirely from the project's own artifact, not from any untrusted input. This pattern exists solely to verify that the shipped functions behave correctly and that no regressions have occurred during development. No user data or attacker-controlled strings are involved.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:174-178

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a default address for a local AI service running on your own computer. It is normal and expected.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: The string at line 237 is a default configuration value for the apiUrl key, set to a localhost endpoint for Ollama or similar local AI server. The extension allows direct connection to local OpenAI-compatible APIs, and this default is a common local address. No evidence of malicious network behavior.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1
Rule
javascript.xray.shady-link
File role
production
Source
extension.js:237

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This part of the test file builds a small test from the extension's own code to check whether importing profiles with duplicate IDs works correctly. It only uses test data from inside the test file, so there is no risk.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The `new Function` call at lines 632-640 is in a self-check test file. It constructs a function from a controlled slice of the extension's own source code (`_SRC.slice(...)`) to test duplicate profile-id handling. The input to the constructed function is a fixed test array defined earlier in the same test block. No user or external input reaches the dynamic function constructor. This is a standard test isolation pattern with no security exposure.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:632-640

zizmor reported unpinned-uses

Expected behavior · high confidence

The workflow uses a version tag like "v4" instead of a specific exact version number. This is common for simple CI checks and poses very low risk here.

Technical evidence

Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.

Contextual assessment: actions/checkout@v4 is pinned to a mutable major version tag rather than an immutable commit SHA. In this CI-only workflow with no sensitive data, deployment, or artifact handling, the supply chain risk is minimal. The action is widely used and maintained by GitHub. No attacker-controlled inputs reach the action in a way that could trigger compromise.

Impact: low · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
unpinned-uses
File role
tooling
Source
.github/workflows/ci.yml:12

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is another test that checks how the extension handles URLs that end with a slash. It uses a local address and is never actually contacted.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: Line 8 contains a static test assertion using a loopback URL with a trailing slash as part of the URL normalization unit test. The URL is never used for actual network requests; it is only a literal string compared in an assert.equal call. The scanner flagged it as 'shady-link' due to the HTTP URL literal, but this is a standard test fixture with no network activity.

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
selfcheck.mjs:8

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This is a test file that checks the extension's security features. The flagged line contains a harmless local address used for testing. It poses no risk.

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 test-only default configuration containing a localhost Ollama API URL. This file is a self-check module that verifies connection settings are never exported or imported, consistent with the extension's stated security design. The URL is hardcoded and used only in assertions; no runtime attacker-controlled data flow or exfiltration path exists.

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
selfcheck.mjs:677

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This test makes a tiny function from the extension's code to see whether old broken profile data causes errors. It only uses test data written inside the test file, so it is safe.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: The `new Function` call at lines 603-608 is in a self-check test file. It constructs a function from a controlled substring of the extension's own source to test malformed legacy profile handling. The argument `raw` is a fixed string literal defined in the same test block. No untrusted or external data influences the constructed function's source or its input. This is a legitimate test harness pattern without security implications.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:603-608

zizmor reported artipacked

Expected behavior · medium confidence

A security scanner mistakenly thought this workflow might store credentials in build artifacts, but the workflow doesn't create any artifacts at all. There's no actual risk.

Technical evidence

Scanner reason: zizmor matched workflow-security rule artipacked in this repository.

Contextual assessment: The scanner flagged potential credential persistence through GitHub Actions artifacts, but this workflow does not use any artifact upload or download actions. No artifacts are created or consumed. The scanner's confidence is low, and manual review confirms no artifact exposure exists. This is a false positive.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
zizmor 1.28.0
Rule
artipacked
File role
tooling
Source
.github/workflows/ci.yml:12

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

A test that builds a function from the extension's code to check read-before-write behavior. It doesn't execute any outside commands.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.javascript-eval in this repository.

Contextual assessment: Lines 1012-1015 contain a new Function call constructing guardedPatch from a pre-extracted source slice. This is part of the self-check test suite. The constructed function is not influenced by user input; it uses only hardcoded source from the extension.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1012-1015

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

This test checks that the URL formatting code doesn't accidentally add '/chat/completions' twice. The URL shown is only used for testing and is never accessed over the network.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link in this repository.

Contextual assessment: Line 9 contains a static test assertion using a fully qualified URL (with /chat/completions path) as part of the URL normalization unit test. This verifies that the normalizer does not double the path. The URL is never used for actual network requests; it is only a literal string compared in an assert.equal call. The scanner flagged it as 'shady-link' due to the HTTP URL literal, but this is a standard test fixture with no network activity.

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
selfcheck.mjs:9

OpenGrep reported tavernkeeper.dynamic-execution.javascript-eval

Expected behavior · high confidence

This is part of a built-in test that checks how the extension handles settings migration. It runs a tiny piece of the extension's own code, but only in the test environment, not when you're using the rewrite tool.

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 1392 is used within a self-test script to execute the extension's configuration loader IIFE (extracted via `_SRC.slice()`) and verify its `connMode` migration logic. The source string (`_CFG_SRC`) is taken from the same extension file's source — no attacker-controlled or external input is involved. This is a test-only construct and is never present during production use of the extension.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.javascript-eval
File role
production
Source
selfcheck.mjs:1392

JavaScript analysis reported javascript.xray.serialize-environment

Expected behavior · high confidence

This line simply checks if the project is being built, to avoid a confusing error. It is a normal part of the build process and does not touch any secrets or sensitive data.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.serialize-environment in this repository.

Contextual assessment: The scanner signal for serialize-environment flagged a process.env access at line 156. This is a Node.js environment variable check used by the build system to skip bundle comparison during a rebuild, preventing a deadlock. No serialization, credential access, or exfiltration occurs. The signal is a known false positive for benign environment variable reads in Node.js scripts.

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.serialize-environment
File role
production
Source
selfcheck.mjs:156

Related contextual observations

Scanner signal false positive for localhost default URL

low risk · high confidence

The scanner thought a link looked suspicious, but it's just the default address for a local helper program on your own computer.

Technical assessment

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

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Flagged URLs are expected localhost presets

low risk · high confidence

The flagged items are default addresses for common local AI programs, not suspicious links. The extension needs these to connect to your local AI server.

Technical assessment

All six scanner candidates flagged by the 'shady-link' rule correspond to hardcoded localhost URLs used as presets for the extension's direct API configuration feature, and a placeholder for the extender server URL. These are well-documented defaults that point to common local AI servers (Ollama, LM Studio, llama.cpp, KoboldCpp, Jan, text-gen-webui, vLLM). No evidence of exfiltration or unexpected network destinations was found. The scanner's heuristics do not account for the context of local development tools.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

new Function used in selfcheck for drift-guard assertions

low risk · high confidence

The selfcheck file is a developer testing tool that runs bits of the extension's own code to catch bugs. It doesn't affect users and doesn't create any security issue.

Technical assessment

The file file uses new Function to dynamically construct test functions from the extension's own source code (file). This is a legitimate pattern for testing that the shipped code behaves correctly without code duplication. The evaluated code originates from the project's own artifact, not from external input, and the file is not shipped to users. The project's README explicitly warns about full page access and encourages source review, and the selfcheck is part of the developer workflow to prevent regressions.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Unresolved JavaScript stages

Tools

Limitations

Technical scan identity