Scanner deep-dive
GPT-5.6 Luna by OpenAI ↗
General-Purpose LLM · codex-cli · scored on 66/66 repositories. Strict scoring (unfinished repos counted as misses).
42.1
F3 (strict)
44.5
F2 (strict)
39.9%
Recall (strict)
81.9%
Precision
66/66
Repos scored
gpt-5.6-luna
Model
$6
Total cost
67s
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 |
|---|---|---|---|---|---|
| vfapi | 7 | 0 | 2 | 77.8 | 81.4 |
| dsvw | 18 | 1 | 9 | 66.7 | 70.9 |
| vc-kimi-code-seeded-v2-marketplace-commerce-fastapi | 17 | 3 | 10 | 63.0 | 66.4 |
| vc-codex-high-seeded-v2-property-management-fastapi | 16 | 3 | 10 | 61.5 | 65.0 |
| vc-codex-high-seeded-v2-hr-payroll-django | 14 | 1 | 11 | 56.0 | 60.9 |
| vc-codex-high-seeded-v2-marketplace-commerce-fastapi | 14 | 1 | 11 | 56.0 | 60.9 |
| dvblab | 12 | 0 | 10 | 54.5 | 60.0 |
| vc-kimi-code-seeded-v2-logistics-dispatch-fastapi | 17 | 1 | 14 | 54.8 | 59.9 |
| insecure-web | 5 | 1 | 4 | 55.6 | 59.5 |
| vc-codex-high-seeded-v2-logistics-dispatch-fastapi | 16 | 3 | 13 | 55.2 | 59.3 |
| vc-claude-code-seeded-v2-legal-case-django | 17 | 3 | 14 | 54.8 | 59.0 |
| vampi | 8 | 1 | 7 | 53.3 | 58.0 |
| vc-kimi-code-seeded-v2-legal-case-django | 14 | 4 | 12 | 53.8 | 57.4 |
| vc-codex-seeded-v2-marketplace-commerce-fastapi | 15 | 2 | 14 | 51.7 | 56.4 |
| vc-codex-high-seeded-v2-crm-saas-django | 13 | 3 | 12 | 52.0 | 56.0 |
| vc-kimi-code-seeded-v2-crm-saas-django | 14 | 3 | 13 | 51.8 | 56.0 |
| pythonssti | 1 | 0 | 1 | 50.0 | 55.6 |
| vulnerable-api | 7 | 0 | 7 | 50.0 | 55.6 |
| vulnerable-tornado-app | 7 | 0 | 7 | 50.0 | 55.6 |
| dsvpwa | 16 | 1 | 16 | 50.0 | 55.2 |
| threatbyte | 13 | 1 | 13 | 50.0 | 55.1 |
| lets-be-bad-guys | 12 | 1 | 12 | 50.0 | 55.0 |
| vc-codex-seeded-v2-logistics-dispatch-fastapi | 15 | 2 | 15 | 50.0 | 54.7 |
| vc-codex-high-seeded-v2-education-lms-django | 12 | 3 | 13 | 48.0 | 52.2 |
| vc-claude-code-seeded-v2-education-lms-django | 15 | 1 | 17 | 46.9 | 52.1 |
| vc-claude-code-seeded-v2-support-desk-fastapi | 16 | 2 | 18 | 47.1 | 51.9 |
| vc-kimi-code-seeded-v2-fintech-lending-fastapi | 16 | 6 | 17 | 48.5 | 51.9 |
| vc-kimi-code-seeded-v2-support-desk-fastapi | 13 | 2 | 15 | 46.4 | 51.2 |
| vc-claude-code-seeded-v2-property-management-fastapi | 15 | 3 | 18 | 45.5 | 50.0 |
| vc-claude-code-seeded-v2-fintech-lending-fastapi | 13 | 2 | 16 | 44.8 | 49.6 |
| extremely-vulnerable-flask-app | 14 | 0 | 18 | 43.8 | 49.3 |
| vc-claude-code-seeded-v2-logistics-dispatch-fastapi | 15 | 5 | 18 | 45.5 | 49.3 |
| vc-codex-seeded-v2-hr-payroll-django | 17 | 2 | 22 | 43.6 | 48.6 |
| flask-xss | 13 | 1 | 17 | 43.3 | 48.5 |
| vulnerable-flask-app | 9 | 0 | 12 | 42.9 | 48.4 |
| python-app | 9 | 1 | 12 | 42.9 | 47.9 |
| vc-codex-high-seeded-v2-support-desk-fastapi | 12 | 2 | 16 | 42.9 | 47.6 |
| owasp-web-playground | 12 | 4 | 16 | 42.9 | 46.9 |
| vc-claude-code-seeded-v2-marketplace-commerce-fastapi | 13 | 2 | 19 | 40.6 | 45.5 |
| vc-codex-seeded-v2-property-management-fastapi | 13 | 8 | 18 | 41.9 | 44.8 |
| damn-vulnerable-graphql-application | 14 | 0 | 22 | 38.9 | 44.3 |
| vc-codex-high-seeded-v2-fintech-lending-fastapi | 12 | 9 | 17 | 41.4 | 43.8 |
| vc-codex-seeded-v2-healthcare-clinic-django | 16 | 4 | 25 | 39.0 | 43.5 |
| vc-claude-code-seeded-v2-crm-saas-django | 11 | 4 | 17 | 39.3 | 43.3 |
| python-insecure-app | 3 | 0 | 5 | 37.5 | 42.9 |
| vc-codex-high-seeded-v2-healthcare-clinic-django | 10 | 3 | 16 | 38.5 | 42.7 |
| vc-codex-seeded-v2-crm-saas-django | 13 | 5 | 21 | 38.2 | 42.2 |
| vc-claude-code-seeded-v2-hr-payroll-django | 10 | 2 | 17 | 37.0 | 41.7 |
| vc-codex-seeded-v2-support-desk-fastapi | 11 | 2 | 19 | 36.7 | 41.4 |
| vc-codex-seeded-v2-education-lms-django | 12 | 3 | 23 | 34.3 | 38.7 |
| vc-kimi-code-seeded-v2-hr-payroll-django | 10 | 5 | 19 | 34.5 | 38.2 |
| damn-vulnerable-flask-application | 5 | 7 | 10 | 33.3 | 34.7 |
| vc-codex-seeded-v2-legal-case-django | 10 | 3 | 23 | 30.3 | 34.5 |
| vc-kimi-code-seeded-v2-healthcare-clinic-django | 9 | 2 | 21 | 30.0 | 34.4 |
| intentionally-vulnerable-python-application | 2 | 1 | 5 | 28.6 | 32.3 |
| vulnerable-python-apps | 6 | 1 | 16 | 27.3 | 31.6 |
| vc-claude-code-seeded-v2-healthcare-clinic-django | 8 | 3 | 21 | 27.6 | 31.5 |
| dvpwa | 6 | 4 | 17 | 26.1 | 29.4 |
| djangoat | 13 | 3 | 39 | 25.0 | 29.0 |
| vc-codex-seeded-v2-fintech-lending-fastapi | 9 | 0 | 28 | 24.3 | 28.7 |
| pygoat | 17 | 5 | 61 | 21.8 | 25.4 |
| vc-kimi-code-seeded-v2-education-lms-django | 6 | 4 | 22 | 21.4 | 24.6 |
| vulnpy | 16 | 4 | 64 | 20.0 | 23.5 |
| vulpy | 10 | 1 | 47 | 17.5 | 20.9 |
| vc-codex-high-seeded-v2-legal-case-django | 3 | 10 | 22 | 12.0 | 13.3 |
| vc-kimi-code-seeded-v2-property-management-fastapi | 3 | 4 | 27 | 10.0 | 11.8 |
§
Detection by severity
| Severity | TP | FP | FN | Recall % |
|---|---|---|---|---|
| Critical | 128 | 0 | 27 | 82.6 |
| High | 334 | 0 | 418 | 44.4 |
| Medium | 283 | 2 | 627 | 31.1 |
| Low | 15 | 0 | 71 | 17.4 |
§
Detection by vulnerability class
| CWE family | TP | FP | FN | Recall % |
|---|---|---|---|---|
| Open Redirect | 37 | 0 | 3 | 92.5 |
| Insecure Deserialization | 34 | 0 | 6 | 85.0 |
| SQL Injection | 66 | 0 | 12 | 84.6 |
| Command / OS Injection | 42 | 0 | 8 | 84.0 |
| Code Injection / RFI | 28 | 0 | 6 | 82.4 |
| XML External Entities | 29 | 0 | 9 | 76.3 |
| Path Traversal | 29 | 0 | 15 | 65.9 |
| Server-Side Request Forgery | 23 | 2 | 18 | 56.1 |
| HTTP Header Injection | 1 | 0 | 1 | 50.0 |
| XPath Injection | 2 | 0 | 2 | 50.0 |
| Hardcoded Credentials | 30 | 0 | 38 | 44.1 |
| Cross-Site Scripting | 48 | 0 | 62 | 43.6 |
| Sensitive Data Exposure | 62 | 0 | 93 | 40.0 |
| Denial of Service | 17 | 0 | 27 | 38.6 |
| Security Misconfiguration | 38 | 0 | 74 | 33.9 |
| Missing Authentication / Authorization | 22 | 0 | 61 | 26.5 |
| Broken Access Control / IDOR | 22 | 0 | 61 | 26.5 |
| Other | 230 | 0 | 647 | 26.2 |
§
LLM operational metrics
175,922
Avg input tokens
3,035
Avg output tokens
179,562
Avg total tokens
67s
Avg latency / repo
0.0%
JSON repair rate
66
Total runs
§
Cost
$6
Total cost
$0.09
Cost / run
$0.004
Cost / 100 LOC
133,782
Python LOC scanned
66
Successful runs