Scanner deep-dive
Grok 4.20 Reasoning by xAI ↗
General-Purpose LLM · agentic-v1 · scored on 24/66 Python repositories. Strict scoring (unfinished repos counted as misses).
10.3
F3 (strict)
11.5
F2 (strict)
9.4%
Recall (strict)
93.2%
Precision
24/66
Repos scored
xai/grok-4.20-reasoning-latest
Model
$17
Total cost
34s
Avg latency
§
Per-repository breakdown
Each bar shows true positives, false positives, and misses on one repository; bar length is proportional to that repo's labeled vulnerabilities. Ranked by F2.
| Repository | TP | FP | FN | Recall % | F2 |
|---|---|---|---|---|---|
| dsvpwa | 21 | 3 | 11 | 65.6 | 69.1 |
| insecure-web | 5 | 0 | 4 | 55.6 | 61.0 |
| vfapi | 5 | 0 | 4 | 55.6 | 60.5 |
| intentionally-vulnerable-python-application | 4 | 1 | 3 | 52.4 | 56.0 |
| pythonssti | 1 | 0 | 1 | 50.0 | 55.6 |
| python-insecure-app | 3 | 0 | 5 | 41.7 | 46.6 |
| dsvw | 11 | 0 | 16 | 40.7 | 46.2 |
| dvblab | 9 | 0 | 13 | 40.9 | 46.1 |
| vulnerable-api | 6 | 0 | 8 | 40.5 | 45.9 |
| vulnerable-tornado-app | 5 | 0 | 9 | 38.1 | 43.5 |
| python-app | 7 | 0 | 14 | 33.3 | 38.3 |
| vampi | 5 | 0 | 10 | 33.3 | 38.2 |
| extremely-vulnerable-flask-app | 11 | 1 | 21 | 33.3 | 38.0 |
| damn-vulnerable-flask-application | 5 | 1 | 9 | 33.3 | 37.8 |
| vulnpy | 27 | 4 | 53 | 34.2 | 35.3 |
| lets-be-bad-guys | 6 | 0 | 18 | 23.6 | 27.9 |
| vulnerable-flask-app | 5 | 1 | 16 | 23.8 | 27.9 |
| dvpwa | 5 | 0 | 18 | 21.7 | 25.8 |
| threatbyte | 6 | 0 | 20 | 21.8 | 25.8 |
| damn-vulnerable-graphql-application | 7 | 1 | 29 | 18.5 | 22.0 |
| flask-xss | 5 | 0 | 25 | 16.7 | 20.0 |
| djangoat | 8 | 0 | 44 | 15.4 | 18.5 |
| pygoat | 7 | 0 | 71 | 8.6 | 10.4 |
| vulpy | 5 | 1 | 52 | 8.2 | 10.0 |
§
Detection by severity
| Severity | TP | FP | FN | Recall % |
|---|---|---|---|---|
| Critical | 45 | 1 | 38 | 54.2 |
| High | 68 | 0 | 176 | 27.9 |
| Medium | 35 | 0 | 229 | 13.3 |
| Low | 2 | 0 | 60 | 3.2 |
§
Detection by vulnerability class
| CWE family | TP | FP | FN | Recall % |
|---|---|---|---|---|
| SQL Injection | 33 | 0 | 6 | 84.6 |
| Open Redirect | 5 | 0 | 1 | 83.3 |
| Insecure Deserialization | 10 | 0 | 6 | 62.5 |
| Command / OS Injection | 10 | 1 | 8 | 55.6 |
| HTTP Header Injection | 1 | 0 | 1 | 50.0 |
| Path Traversal | 11 | 0 | 14 | 44.0 |
| XML External Entities | 3 | 0 | 5 | 37.5 |
| Hardcoded Credentials | 15 | 0 | 38 | 28.3 |
| XPath Injection | 1 | 0 | 3 | 25.0 |
| Server-Side Request Forgery | 5 | 0 | 17 | 22.7 |
| Code Injection / RFI | 3 | 0 | 11 | 21.4 |
| Broken Access Control / IDOR | 4 | 0 | 18 | 18.2 |
| Security Misconfiguration | 6 | 0 | 27 | 18.2 |
| Cross-Site Scripting | 11 | 0 | 70 | 13.6 |
| Other | 26 | 0 | 168 | 13.4 |
| Missing Authentication / Authorization | 5 | 0 | 38 | 11.6 |
| Sensitive Data Exposure | 1 | 0 | 52 | 1.9 |
| Denial of Service | 0 | 0 | 20 | 0.0 |
§
LLM operational metrics
110,646
Avg input tokens
2,042
Avg output tokens
112,688
Avg total tokens
34s
Avg latency / repo
0.0%
JSON repair rate
72
Total runs
±16.1
F2 run-to-run σ
§
Cost
$17
Total cost
$0.23
Cost / run
$0.028
Cost / 100 LOC
20,062
Lines of code scanned
72
Successful runs