01 The problem
A generation of founders is shipping products built largely by AI coding agents, and a lot of that code goes to production without anyone who could recognise a hardcoded key reading it.
The existing tools do not help these people. Semgrep output assumes you know what a taint source is. The gap is not detection, it is translation.
Vibecheck runs the real scanners, Semgrep, Gitleaks, OSV, and uses an LLM only for the parts LLMs are good at: explaining what a finding means in business terms, and writing the patch. The model is never the thing deciding whether a vulnerability exists.
02 How it works
03 Scan some code
The heuristic pass, ported line-for-line from engine/app/scanners/heuristics_scanner.py
and running in your browser. Paste code. This is the cheap regex layer that runs
alongside Semgrep, Gitleaks and OSV, not a replacement for them.
Deliberately lower-confidence: these are candidate findings. In the real pipeline an LLM dedupes everything down to the top eight and writes the plain-English explanation.
04 The parts that were actually hard
- Never execute the target repository. A scanner that runs untrusted code is a remote code execution service with extra steps. Vibecheck only clones and reads, with size and file-count caps, and runs each scanner as a bounded subprocess.
- Deduping to eight findings. Semgrep on a real repo returns hundreds of results, most of them noise to this audience. Ranking down to the eight that matter, and being willing to drop the rest, is most of the product.
- Writing for someone who cannot read a stack trace. Each finding gets what is wrong, why it matters in real-world terms, and a copy-pasteable prompt for an AI coding agent to fix it.
- Private repos without holding the keys longer than needed. Signed-in users connect GitHub and the engine clones with the user’s token, scoped to that scan.
Honest limits. Static analysis has a false-positive rate and this pipeline inherits it, then compounds it by having an LLM write confident prose about each finding. The auto-fix PR is a starting point that a human must review. I would not merge one unread, and the product should say that louder than it currently does. It is in free test mode with the billing code present but ungated.