Syntinel
Adversarial AI code security scanner that reviews pull requests the way an attacker would, then proves serious findings with an exploit test run in an isolated sandbox.
- Domain
- Developer Security / Applied AI
- Timeline
- 2026
- Core Stack
- Python, Typer, Groq, Semgrep, Docker, pytest, GitHub App
- Status
- CLI open source (MIT); Cloud in private rollout, waitlist open
The problem
AI code reviewers flag plenty of issues but rarely show evidence, so developers learn to ignore them. Pattern-matching scanners are reproducible but miss logic and authorization bugs. Teams needed a review step they could trust enough to let it block a merge.
The gap was proof. If a finding comes with a test that fails while the bug exists and passes once it is fixed, "the AI thinks this is a bug" becomes something a reviewer can verify in seconds.
Approach
I split Syntinel into an open-source CLI and a hosted GitHub App that share one review engine. The engine combines an attacker-minded LLM pass with deterministic Semgrep rules, then an optional verification stage generates a pytest exploit for each HIGH or CRITICAL finding and runs it in a locked-down Docker container. Critical findings block the merge.
What it proved
- On a seeded benchmark app, the scanner found 5 of 5 seeded vulnerabilities with 0 false positives on the 3 clean files, across 3 of 3 consecutive runs.
- With verification on, 4 of the 5 classes were confirmed by a generated exploit test in every run, and each test also passed against the fixed version of the file. The fifth, a hardcoded secret, is reported as inconclusive.
- The benchmark is a small fixture: it shows the pipeline finds each seeded class and stays quiet on correct code, not that it catches everything in a real codebase.
Technical build, trade-offs, what comes next.










