Current releaseSnyk VulnBench 2.0

A Snyk benchmark initiative

What do AI security agents find that SAST does not, and what do they miss that SAST catches?

An attacker-reachable recall study of deterministic SAST and AI security agents

We ran nine productized security configurations once each, blind, on 20 open-source web applications. For the seven endpoint-aware configurations, a finding counts only when it locates the attacker-controlled source and the dangerous sink of a curated vulnerability, each within two lines; DeepSec is scored separately.

108
attacker-reachable vulnerabilities
20
open-source web applications
62
flows across more than one file
9
configurations, one run each

Headline evidence · Attacker-Reachable Vulnerability Recall

Close at the top. Different ground covered.

2.0
Horizontal bar chart of macro recall. Snyk Code 82.4% (89 of 108); Claude Code Opus 5 xhigh 79.3% (85 of 108); Opus 5 medium + Snyk MCP 75.2% (80 of 108); Sonnet 5 xhigh 67.0% (73 of 108); Codex Security GPT-5.6 Luna 41.2% (45 of 108), GPT-5.6 Terra 30.1% (35 of 108), GPT-5.6 Sol 29.2% (34 of 108). The top two cannot be separated. A separate panel shows DeepSec localized recall, a different evidence requirement: Opus 5 xhigh 37.5% (37 of 108), GPT-5.6 Sol xhigh 2.5% (1 of 108), a configuration that exported no findings in 16 of its 20 runs.
Figure 1.Main recall results. (A) The seven endpoint-aware configurations: macro Attacker-Reachable Vulnerability Recall with the matched count; the bar is a 95% interval from resampling the 20 applications, which shows how much a score depends on which applications are in the corpus, not run-to-run variation. (B) DeepSec, scored with localized recall, on its own axis. The tick on the Claude Code rows marks the score under many-to-one credit, a sensitivity check. The top two cannot be separated: they disagree on 28 vulnerabilities, 16 vs 12 (McNemar p = 0.57, descriptive).PNG, lightPNG, darkSVG, lightSVG, dark
  • Snyk Code 82.4% (89 of 108) and Claude Code /security-review with Opus 5 xhigh 79.3% (85 of 108): they disagree on 28 vulnerabilities, 16 to 12, too few to tell them apart.
  • Together they match 101 of 108, the same as all seven endpoint-aware configurations combined: a ceiling across configurations, not one tool's result.
  • DeepSec is scored with localized recall, a different evidence requirement, and is shown separately.

In this study neither engine was sufficient alone. A vulnerability class an engine does not report is a real miss here, because every reference vulnerability is attacker-reachable.

Dataset 2.0.0 · Snyk VulnBench 2.0 · 108 reference vulnerabilities · one run per configuration and application · Source: published 2.0 paper

View exact values
Endpoint-aware configurations · Attacker-Reachable Vulnerability Recall
ConfigurationAttacker-Reachable Vulnerability Recall (macro, matched)95% intervalPrecision against the reference set (lower bound)Matched at the exact line
Snyk Code82.4% (89 of 108)74.0–90.5%20.9%85
Claude Code /security-review · Opus 5 xhigh79.3% (85 of 108)71.6–86.7%74.6%79
Claude Code /security-review · Opus 5 medium + Snyk MCP75.2% (80 of 108)68.2–82.3%82.5%74
Claude Code /security-review · Sonnet 5 xhigh67.0% (73 of 108)57.7–76.2%74.5%55
Codex Security · GPT-5.6 Luna41.2% (45 of 108)26.6–56.5%20.8%15
Codex Security · GPT-5.6 Terra30.1% (35 of 108)19.1–41.9%15.8%6
Codex Security · GPT-5.6 Sol29.2% (34 of 108)18.1–41.1%12.7%2

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

headline.csvheadline.meta.json

View exact values
DeepSec · localized recall, a different evidence requirement
ConfigurationLocalized recall (macro, matched)95% intervalPrecision against the reference set (lower bound)
DeepSec · Opus 5 xhigh37.5% (37 of 108)22.6–53.2%7.1%
DeepSec · GPT-5.6 Sol xhigh2.5% (1 of 108)0.0–7.5%10.0%

What the results mean in practice

An AI security engine is a model inside a harness.

Deterministic SAST and AI review covered different ground; what an AI engine reported depended on its harness as much as on its model; and coverage and cost were only loosely related.

  1. 01

    SAST and AI review cover different ground

    Snyk Code matched 82.4% (89 of 108) and Claude Code /security-review with Opus 5 xhigh 79.3% (85 of 108). They disagree on 28 vulnerabilities, 16 matched only by Snyk Code and 12 only by Opus 5 xhigh; a corpus of this size cannot separate them.

    Interpret with care: A union across configurations is a ceiling, not one tool's result. Combining the two also combines their queues: 539 findings for 101 matches.

    Open the evidence
  2. 02

    The harness decides what gets reported

    Claude Code's /security-review excludes ReDoS and reports prototype pollution and open redirect only at extremely high confidence. On the 20 reference vulnerabilities in those classes, Snyk Code matched 18 and Opus 5 xhigh 9; on the 81 others (excluding 7 cross-site scripting vulnerabilities in React and Angular applications), Opus 5 xhigh matched 71 and Snyk Code 67.

    Interpret with care: The policy reading rests on the policy text and one supplementary control run; harness and model cannot be fully separated by this design.

    Open the evidence
  3. 03

    Coverage and cost were only loosely related

    Snyk Code scanned all 20 applications in 8 minutes; the comparable AI configurations took between 2.4 hours and 8.9 hours.

    Interpret with care: One run per configuration and application: every ratio is a single observation. Snyk Code has no per-scan model cost; its license cost is outside this study.

    Open the evidence
  4. 04

    The top two hold; the middle reorders

    Snyk Code and Opus 5 xhigh are the two highest-ranked endpoint-aware configurations under every one of the 20 alternative scoring rules; Snyk Code ranks first under 18 and Opus 5 xhigh under the other two; their order should not be read as a result.

    Interpret with care: Rescoring shows which conclusions survive changes in the scoring rule; it does not add statistical power.

    Open the evidence

Research principles

Evidence before ranking

VulnBench is a versioned research initiative, not a universal leaderboard. Every release defines what it measured and what it did not prove.

Independent reference sets
2.0 scores against curated, attacker-reachable vulnerabilities, not against any tool's findings.
Strict, stated scoring
A finding counts only when it locates the curated vulnerability's endpoints; alternative scoring rules are reported, not hidden.
Same rules for every system
Every configuration is named in full and scored by the same rule; DeepSec's different metric is never ranked with the others.
Reproducible data
The harness, reference sets and every run are public and checksummed.
Explicit limitations
Agreement is never relabeled as accuracy, and findings outside the reference set are never called false.

Release history

  1. Snyk VulnBench 2.0Published 28 October 2026 · Current
  2. Snyk VulnBench JS 1.0Published 11 June 2026

Releases measure different things. JS 1.0 measured repeatability and agreement with Snyk Code; 2.0 measures attacker-reachable recall against an independent reference set.

View release catalog

Publication

Read, reproduce, and cite the work

The paper, reviewed methodology, source snapshot, and release data use stable public links.

Preferred citation

Snyk VulnBench 2.0

@misc{tal2026snykvulnbench20,
  author = {Tal, Liran and Liu, Chris and Fereday, Charlotte and Roth, Sebastian and Clark, Brian},
  title = {How Deterministic SAST and AI Security Agents Divide the Work: Coverage, Harness Policy and Cost in Snyk VulnBench 2.0},
  year = {2026},
  eprint = {2610.38617},
  archivePrefix = {arXiv},
  primaryClass = {cs.CR},
  doi = {10.48550/arXiv.2610.38617},
  url = {https://arxiv.org/abs/2610.38617}
}

Liran Tal · Chris Liu · Charlotte Fereday · Sebastian Roth · Brian Clark

Snyk VulnBench JS 1.0

@misc{tal2026snykvulnbenchjs10,
  author = {Tal, Liran and Kloos, Johannes and Rudich, Arsenii and Thoemmes, Stephen and Nair, Manoj},
  title = {Snyk VulnBench JS 1.0: Can LLMs Find the Same Bugs Twice?},
  year = {2026},
  url = {https://arxiv.org/abs/2606.15762}
}

Liran Tal · Johannes Kloos · Arsenii Rudich · Stephen Thoemmes · Manoj Nair