What this review found
No material or immediate-danger item was identified.
Minor cautions
Dependency advisory GHSA-5xrq-8626-4rwp applies
Minor caution · medium confidence
The flagged package is a development tool used only for testing or linting, not part of the extension that users actually run. The vulnerability cannot affect people who install and use this SillyTavern extension.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-5xrq-8626-4rwp to a dependency declared by this repository.
Contextual assessment: The project's package.json declares only devDependencies (eslint, vitest, globals) with no runtime dependencies. The shipped extension consists of index.js and style.css loaded by SillyTavern; npm dev tooling is not included in the runtime artifact. This advisory matches a transitive dev-only dependency (esbuild 0.21.5 visible in the lockfile, pulled by vitest). The vulnerable code has no runtime reachability for end users of the extension.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to latest compatible versions to keep the development environment current, but no urgent action is needed for user safety.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-5xrq-8626-4rwp
- File role
- production
- Source
- package-lock.json
zizmor reported unpinned-uses
Minor caution · high confidence
The automated test workflow uses version labels for its setup steps instead of locking them to exact versions. This is a common minor best-practice gap, not a sign of anything malicious, and it only affects the project's own test pipeline.
Technical evidence
Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.
Contextual assessment: The flagged line references actions/setup-node using a major-version tag rather than a commit SHA. The same pattern appears for actions/checkout. This is a CI-only workflow with no deployment, no third-party actions, and no obvious secret exposure beyond the standard GitHub token. A compromised tag could in principle substitute malicious action code, but these are first-party GitHub-maintained actions and the workflow runs only lint and tests on pull requests.
Impact: low · Exploitability: unlikely
Developer action: Pin GitHub Actions to full commit SHAs with version comments for reproducibility and supply-chain hardening.
- Scanner
- zizmor 1.28.0
- Rule
- unpinned-uses
- File role
- tooling
- Source
- .github/workflows/ci.yml:36
Dependency advisory GHSA-v6wh-96g9-6wx3 applies
Minor caution · medium confidence
The flagged package is only used during development and testing. It is not included in the extension that users install, so the vulnerability has no impact on end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-v6wh-96g9-6wx3 to a dependency declared by this repository.
Contextual assessment: This advisory targets a transitive dependency of the declared devDependencies (vitest or eslint). The package.json has zero runtime dependencies; the extension ships only static JS and CSS to SillyTavern. The vulnerable code path is not reachable in the production extension.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to resolve the advisory in the development environment; no user-facing risk requires urgent action.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-v6wh-96g9-6wx3
- File role
- production
- Source
- package-lock.json
zizmor reported excessive-permissions
Minor caution · high confidence
The CI workflow doesn't explicitly declare what permissions it needs. In practice GitHub limits fork-based pull requests to read-only access, and this workflow only runs code checks, so there's little real risk. Declaring minimal permissions explicitly is a recommended hygiene step.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The workflow has no explicit permissions block, so it inherits the repository default. For pull_request events from forks, GitHub restricts tokens to read-only. This workflow only runs lint and tests with no write operations, artifacts, or secret usage, so the practical risk is minimal. Adding an explicit read-only permissions block is best practice.
Impact: low · Exploitability: unlikely
Developer action: Add a top-level permissions block with contents: read to make the minimal access explicit.
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/ci.yml:1-42
zizmor reported unpinned-uses
Minor caution · high confidence
The workflow uses a version label for a standard GitHub action instead of locking it to a specific code snapshot. This is very common and low-risk for a simple test workflow, but locking to a specific version snapshot is the recommended best practice.
Technical evidence
Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.
Contextual assessment: The checkout action is referenced by major version tag @v4 rather than a pinned commit SHA. This is a first-party GitHub action used in a standard lint/test workflow with no secrets or deployment steps. Tag-based references are common but can be retargeted; SHA pinning is the recommended hardening practice.
Impact: low · Exploitability: unlikely
Developer action: Pin actions/checkout to a specific commit SHA instead of the @v4 tag.
- Scanner
- zizmor 1.28.0
- Rule
- unpinned-uses
- File role
- tooling
- Source
- .github/workflows/ci.yml:35
Dependency advisory GHSA-4w7w-66w2-5vf9 applies
Minor caution · medium confidence
The flagged package is a development-only tool not included in the extension users run, so this vulnerability does not affect end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-4w7w-66w2-5vf9 to a dependency declared by this repository.
Contextual assessment: This advisory matches a transitive dev-only dependency. The project declares no runtime npm dependencies; all packages in the lockfile are development tooling for linting and testing. The vulnerable code is not shipped to or executed by end users of the SillyTavern extension.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to clear the advisory; no urgent user-safety action is needed.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-4w7w-66w2-5vf9
- File role
- production
- Source
- package-lock.json
Dependency advisory GHSA-67mh-4wv8-2f99 applies
Minor caution · medium confidence
The flagged package is used only for development and testing, not in the extension that users install. The vulnerability cannot affect end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-67mh-4wv8-2f99 to a dependency declared by this repository.
Contextual assessment: This advisory targets a transitive dependency of vitest or eslint, both declared as devDependencies. The extension has no runtime npm dependencies and ships only static frontend assets. The vulnerable code has no runtime reachability in the production extension.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to resolve the advisory in the development environment; no urgent action is required for user safety.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-67mh-4wv8-2f99
- File role
- production
- Source
- package-lock.json
Dependency advisory GHSA-5p4m-2wfm-xmqj applies
Minor caution · medium confidence
Although the advisory is rated high severity, the affected package is a development tool not included in the extension users run. The vulnerability does not reach end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-5p4m-2wfm-xmqj to a dependency declared by this repository.
Contextual assessment: This high-severity advisory matches a transitive dev-only dependency (likely vite or esbuild pulled by vitest). The package.json declares only devDependencies with no runtime dependencies. The shipped extension is static JS and CSS; the vulnerable code is not executed in the user-facing product.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to the latest compatible versions to resolve the advisory; no urgent user-safety action is needed.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-5p4m-2wfm-xmqj
- File role
- production
- Source
- package-lock.json
zizmor reported unpinned-uses
Minor caution · high confidence
The workflow uses a version label for a standard Node.js setup action instead of locking it to a specific code snapshot. Low-risk for a simple test workflow, but locking to a snapshot is best practice.
Technical evidence
Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.
Contextual assessment: The setup-node action is referenced by major version tag @v4 rather than a pinned commit SHA. This is a first-party GitHub action used only to install Node.js for running lint and tests. No secrets or sensitive operations are involved. SHA pinning is recommended hardening.
Impact: low · Exploitability: unlikely
Developer action: Pin actions/setup-node to a specific commit SHA instead of the @v4 tag.
- Scanner
- zizmor 1.28.0
- Rule
- unpinned-uses
- File role
- tooling
- Source
- .github/workflows/ci.yml:19
Dependency advisory GHSA-fxqj-rqcc-2cmp applies
Minor caution · medium confidence
The flagged package is a development-only tool not part of the extension users install, so the vulnerability has no impact on end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-fxqj-rqcc-2cmp to a dependency declared by this repository.
Contextual assessment: This advisory matches a transitive dev-only dependency of the declared devDependencies. The extension ships no runtime npm packages; only static frontend assets are loaded by SillyTavern. The vulnerable code is not reachable in production.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to clear the advisory; no urgent user-safety action is required.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-fxqj-rqcc-2cmp
- File role
- production
- Source
- package-lock.json
Dependency advisory GHSA-mh99-v99m-4gvg applies
Minor caution · medium confidence
The advisory is rated high, but the affected package is a development tool not included in the extension users run. The vulnerability does not reach end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-mh99-v99m-4gvg to a dependency declared by this repository.
Contextual assessment: This high-severity advisory targets a transitive dependency of vitest or eslint, both declared as devDependencies. The project has no runtime npm dependencies; the extension ships only static JS and CSS. The vulnerable code path is not executed by end users.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to resolve the advisory in the development environment; no urgent user-safety action is needed.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-mh99-v99m-4gvg
- File role
- production
- Source
- package-lock.json
zizmor reported unpinned-uses
Minor caution · high confidence
The workflow uses a version label for a standard GitHub action instead of a locked snapshot. Low-risk, but pinning to a specific version is recommended.
Technical evidence
Scanner reason: zizmor matched workflow-security rule unpinned-uses in this repository.
Contextual assessment: The checkout action in the lint job is referenced by major version tag @v4 rather than a pinned commit SHA. Same assessment as the other unpinned-uses findings: first-party action, no secrets, no deployment, low practical risk.
Impact: low · Exploitability: unlikely
Developer action: Pin actions/checkout to a specific commit SHA instead of the @v4 tag.
- Scanner
- zizmor 1.28.0
- Rule
- unpinned-uses
- File role
- tooling
- Source
- .github/workflows/ci.yml:18
zizmor reported excessive-permissions
Minor caution · high confidence
The test job doesn't explicitly declare its permissions. It only runs tests with no write operations, so practical risk is low. Declaring minimal permissions explicitly is recommended hygiene.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The test job has no explicit permissions block and inherits repository defaults. The job only runs npm ci and npm test with no write operations, artifacts, or secrets. For fork pull requests, GitHub defaults to read-only. Adding explicit minimal permissions is best practice.
Impact: low · Exploitability: unlikely
Developer action: Add a job-level or workflow-level permissions block with contents: read.
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/ci.yml:28-42
zizmor reported excessive-permissions
Minor caution · high confidence
The lint job doesn't explicitly declare its permissions. It only runs linting with no write operations, so practical risk is low. Declaring minimal permissions explicitly is recommended hygiene.
Technical evidence
Scanner reason: zizmor matched workflow-security rule excessive-permissions in this repository.
Contextual assessment: The lint job has no explicit permissions block and inherits repository defaults. The job only runs npm ci and npm run lint with no write operations, artifacts, or secrets. For fork pull requests, GitHub defaults to read-only. Adding explicit minimal permissions is best practice.
Impact: low · Exploitability: unlikely
Developer action: Add a job-level or workflow-level permissions block with contents: read.
- Scanner
- zizmor 1.28.0
- Rule
- excessive-permissions
- File role
- tooling
- Source
- .github/workflows/ci.yml:15-27
Dependency advisory GHSA-2v37-7h3g-55p8 applies
Minor caution · medium confidence
The advisory is rated high, but the affected package is a development tool not included in the extension users install. The vulnerability cannot affect end users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-2v37-7h3g-55p8 to a dependency declared by this repository.
Contextual assessment: This high-severity advisory matches a transitive dev-only dependency (likely vite or esbuild from the vitest toolchain). The package.json declares only devDependencies and no runtime dependencies. The shipped extension consists of static frontend assets; the vulnerable code is not reachable in the production extension.
Impact: none · Exploitability: unlikely
Developer action: Update devDependencies to the latest compatible versions to resolve the advisory; no urgent user-safety action is needed.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-2v37-7h3g-55p8
- File role
- production
- Source
- package-lock.json
Dependency advisory GHSA-rgw5-rvv9-x895 applies
Minor caution · high confidence
The flagged tool is only used by developers during testing, not by the extension when it runs. The security issue affects a developer-only feature that is never active for end users of this extension.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-rgw5-rvv9-x895 to a dependency declared by this repository.
Contextual assessment: This advisory corresponds to an esbuild development-server vulnerability. The lockfile shows esbuild 0.21.5 as a transitive dependency of vitest, which is declared as a devDependency. The project ships a browser-side SillyTavern extension with no production dependencies; esbuild is never invoked at runtime in the shipped extension. The vulnerable code path requires the esbuild development server to be running and reachable, which does not occur during normal use of this extension. There is no runtime reachability from the shipped artifact.
Impact: low · Exploitability: unlikely
Developer action: Update vitest and its transitive esbuild dependency to current versions at your next development cycle to keep the dev toolchain current.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-rgw5-rvv9-x895
- File role
- production
- Source
- package-lock.json
Dependency advisory GHSA-fx2h-pf6j-xcff applies
Minor caution · high confidence
This is the same type of issue as the other flagged item: a developer-only testing tool has a security flaw, but that tool is never used when the extension is actually running for users.
Technical evidence
Scanner reason: OSV-Scanner matched advisory GHSA-fx2h-pf6j-xcff to a dependency declared by this repository.
Contextual assessment: This advisory corresponds to a second esbuild development-server vulnerability. The same analysis applies: esbuild 0.21.5 is a transitive devDependency via vitest, the project declares no production dependencies, and the shipped extension does not run the esbuild development server. The vulnerable code path is unreachable in the production artifact and during normal end-user operation.
Impact: low · Exploitability: unlikely
Developer action: Update vitest and its transitive esbuild dependency to current versions at your next development cycle to keep the dev toolchain current.
- Scanner
- osv-scanner 2.4.0
- Rule
- GHSA-fx2h-pf6j-xcff
- File role
- production
- Source
- package-lock.json
Expected scanner matches (2)
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged a possible credential-leakage pattern, but this workflow never creates artifacts or uses secrets, so there is nothing to leak.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked rule flags potential credential persistence in artifacts. This workflow does not upload any artifacts and does not use secrets. The checkout action does not persist credentials beyond the job by default. No credential exposure path exists here.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/ci.yml:35
zizmor reported artipacked
Expected behavior · high confidence
The scanner flagged a possible credential-leakage pattern, but this workflow never creates artifacts or uses secrets, so there is nothing to leak.
Technical evidence
Scanner reason: zizmor matched workflow-security rule artipacked in this repository.
Contextual assessment: The artipacked rule flags potential credential persistence in artifacts. This workflow does not upload any artifacts and does not use secrets. No credential exposure path exists.
Impact: none · Exploitability: unlikely
Developer action: none
- Scanner
- zizmor 1.28.0
- Rule
- artipacked
- File role
- tooling
- Source
- .github/workflows/ci.yml:18