We Scanned the Claude Code Leak Repo. Here’s What We Found.
When the Claude Code source leak mirror started circulating, we wanted to answer a practical question:
If you treat this as a real engineering artifact and run a dependency vulnerability workflow on it, what do you actually find?
We used the public repository:
The setup challenge: no package manifests in the leaked source
Because this mirror is reconstructed from published sourcemaps, the original package metadata was incomplete for normal dependency scanning:
- no original
package.json/package-lock.jsonpair to trust as canonical build input
So we did a best-effort reconstruction:
- Parsed
import/requirespecifiers acrosssrc/** - Built an inferred
package.jsonfrom detected third-party packages - Generated a lockfile (
npm install --package-lock-only) - Ran Verimu in offline mode
The exact scan command
unset VERIMU_API_KEY
npx --yes /Users/chris/enterprise/verimu scan --path /Users/chris/playground/claude-code --skip-upload
Scan results (offline run)
- Projects discovered: 1
- Ecosystem: npm
- Dependencies analyzed: 844
- Total vulnerabilities: 2
- Critical: 0
- High: 0
- Medium: 0
- Low: 1
- Unknown: 1
What we found
1) CVE-2026-34451 (@anthropic-ai/sdk)
- Package range:
@anthropic-ai/sdk@>=0.79.0, <0.81.0 - Fixed version:
0.81.0 - Description (OSV): memory tool path validation issue enabling sandbox escape to sibling directories
- Verimu evidence status: direct_evidence (20 code snippets)
Example snippet (from usage-context evidence):
import type { ContentBlockParam } from '@anthropic-ai/sdk/resources/messages.mjs'
This type of direct import evidence is useful because it confirms the vulnerable package family is not just present in the lockfile; it is referenced throughout source modules.
2) CVE-2025-54798 (tmp)
- Package range:
tmp@>=0, <0.2.4 - Fixed version:
0.2.4 - Description (OSV): symlink-based arbitrary temporary file/directory write risk via
dirparameter - Verimu evidence status: indirect_no_evidence
For this one, Verimu did not find direct source usage snippets, but the lockfile chain is clear:
"node_modules/external-editor": {
"dependencies": {
"tmp": "^0.0.33"
}
},
"node_modules/tmp": {
"version": "0.0.33"
}
That means this is a transitive supply-chain exposure path, not a confirmed direct callsite in the analyzed source.
High-level risk assessment
| Finding | Evidence quality | Potential impact | Priority |
|---|---|---|---|
CVE-2026-34451 in @anthropic-ai/sdk |
Direct source evidence + vulnerable range match | Higher-concern class (sandbox boundary implications) | P1 / Highest in this run |
CVE-2025-54798 in tmp |
Lockfile/transitive evidence only | Context-dependent local temp-path abuse scenarios | P2 / Important, but secondary |
Important nuance: the scanner reported no critical severity CVEs in this run.
But for triage, the most material finding is still CVE-2026-34451 because of impact class and direct package usage evidence.
What this does and does not prove
This workflow proves:
- the repo can be converted into a scanable dependency graph with reconstruction
- known CVEs can be identified and prioritized with code-context evidence
It does not prove:
- exploitability in a specific runtime deployment
- that reconstructed manifests exactly match Anthropic’s original internal release graph
Why this matters
Most teams do not fail security because they never run a scanner. They fail because they treat scan output as either absolute truth or useless noise.
The right path is in the middle:
- Build the best dependency graph you can
- Run repeatable scans
- Separate direct evidence from transitive exposure
- Prioritize by impact class, not just label color
That is exactly what we did here.
Get started free → or book a demo if you want this same SBOM + CVE + code-evidence workflow on your own repositories.