When a PR adds or bumps a dependency, the question “does this version have a known CVE?” should be answered in the review, not in a separate Dependabot alert that lands two days later. Sigilix’s dependency vulnerability scan (ARC-186) does that scan inline.Documentation Index
Fetch the complete documentation index at: https://docs.sigilix.ai/llms.txt
Use this file to discover all available pages before exploring further.
What it scans
| Manifest | Scanned |
|---|---|
package.json | yes |
package-lock.json | yes |
pnpm-lock.yaml | yes |
yarn.lock | yes |
Cargo.toml / Cargo.lock | not yet |
go.mod / go.sum | not yet |
pyproject.toml / requirements.txt | not yet |
How the scan works
On every review where an npm manifest changed:- Parse the changed lockfile (the lockfile is the source of truth —
package.jsonranges aren’t enough; you need the resolved versions). - Diff against the previous lockfile state to identify added and bumped packages. Removed packages are skipped.
- Match each added/bumped (package, version) against the bundled vulnerability database.
- Render the matches as inline findings on the lockfile, tagged by severity.
Range-aware matching
The scanner respects the CVE’s affected-version range. If a CVE is documented as affecting<1.2.3, only packages resolving to < 1.2.3 are flagged. A range like >=4.5.0 <4.5.6 is matched correctly — neither overflow nor under-match.
This matters because the alternative (substring match on the version) produces dozens of false positives per scan. Range-aware matching is what makes the channel usable.
Transitive-aware
Most vulnerabilities are introduced transitively. You addpopular-framework → it pulls tiny-prototype-pollution-lib two layers deep → that’s the vulnerable thing.
The scanner walks the resolved dependency tree from the lockfile, not just the top-level dependencies block. Transitive matches are flagged with the resolution chain shown:
Severity mapping
CVEs come from the database with a CVSS score. Sigilix maps:| CVSS | Sigilix severity |
|---|---|
| 9.0–10.0 (Critical) | critical — sets verdict to Request changes |
| 7.0–8.9 (High) | warning |
| 4.0–6.9 (Medium) | info |
| 0.1–3.9 (Low) | suppressed (logged in telemetry, not posted) |
False positives
The two main false-positive sources:- Version-pin override that fixes the CVE upstream. If your
package.jsonhas"resolutions"or"overrides"blocks that force a patched version, the scanner reads the resolved version, not the manifest range — false positives here are rare and indicate the resolution didn’t actually take effect. - CVE database lag. A newly-published CVE may not be in the bundled DB. The scanner can’t flag what it doesn’t know about. Cross-reference with the GitHub advisory database for sensitive PRs.
Interaction with Dependabot / Snyk
Sigilix’s scan and Dependabot/Snyk overlap. The right way to think about them:- Dependabot / Snyk scan your default branch and open issues / PRs over time.
- Sigilix scans the PR’s resolved tree at the moment of review and posts inline at the lockfile diff.
{ "depVulns": { "enabled": false } }. Dependabot keeps running and you’ll still get its alerts.
Disabling
Read next
SARIF Evidence
Push your own scanner output into Sigilix reviews.
Secret Scanning
The companion pre-LLM scanner for credentials.

