macOS build available Built for the agent era

Stop merging unreviewed AI code.

CodeVetter is a desktop review tool for the diffs your agent ships. It catches 14 vulnerability classes (SQLi, PII leaks, CSRF, broken auth, and more) that Cursor, Claude Code, and Devin routinely miss. Runs entirely offline.

No telemetry Bring your own key Open source · ISC Signed binaries
codevetter — review · feat/refresh-tokens · #1284
⌘ K
vuln apps/api/src/auth/session_manager.ts
+2 / -0
36
import { db } from "@/lib/sql";
37
38
async function validateSession(token: string) {
39
// resolve session for the incoming request
40
const query = `SELECT * FROM sessions WHERE token = '${token}'`;
41
const result = await db.execute(query);
42
if (!result.rows[ 0]) throw new Error( "Invalid session");
43
return result.rows[ 0];
44
}
SQL Injection Vector

Token concatenated directly into query body. Allows arbitrary read/write against sessions table.

+ db.query(`...$1`, [token])
Critical 04
High 12
Medium 29
Patches ready 45
What the review looks for
Common CWE / OWASP issue classes, mapped to severity
CWE-89 SQL Injection
CWE-79 Cross-site scripting
CWE-352 CSRF token missing
CWE-798 Hardcoded credentials
CWE-22 Path traversal
OWASP-A01 Broken access control
OWASP-A03 Injection class
OWASP-A07 Auth failures
REGEX Catastrophic backtracking
RACE TOCTOU window
PII Token logged at info
PERF N+1 query loop
TTL Cache divergence
SEMVER Breaking API change
CWE-89 SQL Injection
CWE-79 Cross-site scripting
CWE-352 CSRF token missing
CWE-798 Hardcoded credentials
CWE-22 Path traversal
OWASP-A01 Broken access control
OWASP-A03 Injection class
OWASP-A07 Auth failures
REGEX Catastrophic backtracking
RACE TOCTOU window
PII Token logged at info
PERF N+1 query loop
TTL Cache divergence
SEMVER Breaking API change
0ms
Cloud round-trip
the review runs on your device
3+
LLM providers
anthropic · openai · openrouter
100%
Code stays local
no proxy, no telemetry
$0
To run forever
bring your own LLM key
Capability matrix

Built for the way agents ship code.

Cursor, Claude Code, Devin. They merge fast and miss things. CodeVetter is the second pair of eyes that runs on your laptop.

Diff-aware review engine

Parses your patch, traces affected call sites, and feeds the LLM a focused context window. The prompts stay narrow and the file references are real.

apps/api/src/users.ts
- return await db.raw(`SELECT * FROM users WHERE id = ${id}`);
+ return await db.query(`SELECT * FROM users WHERE id = $1`, [id]);
apps/api/src/cache.ts
~ ttl 60s → 86400s · review eviction
~ no invalidation on user.update

Bring your own key

Anthropic, OpenAI, OpenRouter. Keys are stored in local app settings on your machine. We never proxy the traffic.

Anthropic Live
claude-3.5-sonnet $ANTHROPIC_API_KEY
OpenAI Live
gpt-4o $OPENAI_API_KEY
OpenRouter Ready
gemini-pro

Runs offline

Tauri binary. SQLite under the hood. You don't need a backend or an account.

127.0.0.1
api.external.com

Git-native

Staged diffs, ranges, branches. Drop into any repo.

git diff HEAD~1
→ 4 files · 87 lines
codevetter review
Analyzing diff...

Severity-tiered

Critical → high → medium. Mapped to CWE & OWASP.

Critical
04
High
12
Medium
29

Patch suggestions, not pep talks

Every finding ships with a concrete code edit you can apply or discard. The reasoning is there if you want it, but it doesn't talk down to you.

Critical Auto-Fix
SQL Injection Vector
Unparameterized token concatenated into query. High risk of arbitrary table access.
+ db.query(`...$1`,[token])
High Auto-Fix
PII Leak in Logger
Authentication token leaks into DataDog via unredacted request payload.
+ logger.redact(['token', 'pwd'])
Medium Auto-Fix
Missing Rate Limit
No throttle applied to /auth/refresh. Potential vector for token exhaustion DoS.
+ rateLimit({ rpm: 60 })
Operating loop

Three steps. Zero ceremony.

No accounts, no setup wizards. Open the app, plug in a key, ship safer code.

Step 01

Drop in your diff

Stage changes, paste a patch, or hand it a branch range. CodeVetter parses files, hunks, and call-sites locally.

$ codevetter review HEAD~1..HEAD
parsing diff
resolving call-sites
building context ...
Step 02

Pick the model

Choose Claude, GPT, or anything OpenRouter routes. Switch per-review. We track token usage live and never proxy it.

→ provider=anthropic model=claude-3-opus
claude-3-opus
gpt-4o
Step 03

Triage the verdict

Findings ranked by severity, mapped to CWE, with concrete patch diffs. Apply, edit, or dismiss with one keystroke.

✓ 4 critical · 12 high · 29 medium
CRITICAL 04
HIGH 12
PATCHES READY 45
Provider matrix

Any model. Your key.

CodeVetter is provider-agnostic. Test the same diff across models, pin one per repo, or rotate as new releases land.

300+
Models reachable
0
Tokens proxied
<200ms
Provider latency
Reviews allowed

Anthropic

Recommended for security review

Native
Claude 3.5 Sonnet Claude 3 Opus

OpenAI

Fast diffs · strong code reasoning

Native
GPT-4o GPT-4o-mini o1-preview

OpenRouter

300+ models · single API key

Gateway
Gemini 1.5 Pro Llama 3.1 405B

Local LLMs

100% private · air-gapped

Private
Qwen 2.5 Coder DeepSeek Coder
Pricing

Free for solo. Honest above it.

No tokens, no per-review fees. We don't see your code, so we can't bill on it.

Solo
$0 forever

The full desktop binary. Bring your own LLM key. Use it forever, free.

Unlimited local reviews
All LLM providers
Local SQLite history
Automatic updates
Download Now
Most Popular
Team
$12 per user / month

Shared review presets and org policy rules. Everything stays on each machine.

Everything in Solo
Shared rule packs
Audit log export
SSO Authentication
Priority support
Get Early Access
Enterprise
Custom tailored for you

Air-gapped installs, custom model routing, and dedicated security engineering.

Everything in Team
Air-gapped deployment
Custom CWE rulesets
On-prem audit logs
SLA guarantee
Talk to Sales
Latest build · Ready to review

Stop trusting agents blindly.

Install in 30 seconds and run your first review in under a minute. Your code never leaves your machine.

Quick Install
brew install --cask codevetter
Signed binaries Auto-updates No account required
FAQ

Questions, answered.

Everything you need to know about how CodeVetter vets agent-generated code.

What is CodeVetter?
CodeVetter is a desktop-first AI code review tool built for agent-generated code. It runs locally as a Tauri binary, reviews diffs through pluggable LLM providers, and focuses on finding bugs that normal AI review misses.
Is CodeVetter free?
CodeVetter is a local desktop app that works offline. You bring your own LLM API keys (Anthropic, OpenAI, OpenRouter) for the review engine.
Does CodeVetter work offline?
Yes, CodeVetter is a Tauri desktop binary that runs entirely on your machine. The review engine works in the webview with your configured LLM providers.
What makes CodeVetter different from GitHub Copilot review?
CodeVetter is desktop-first and local-first, focused on agent-generated diffs. It inspects the diff, understands repo and prior intent, exercises changed behavior, preserves evidence, and fixes one finding at a time.
Can CodeVetter review code from AI agents?
Yes, it is specifically designed for agent output. It verifies agent-written code by running reviews, emitting verification handoff proofs with per-finding evidence, and re-checking that issues are resolved.
What LLM providers does CodeVetter support?
Anthropic (Claude), OpenAI (GPT), and OpenRouter. Keys are stored in user settings on the local machine.
Is CodeVetter open source?
The source is on GitHub at github.com/Codevetter/codevetter. Releases are built via GitHub Actions with Tauri for macOS, Windows, and Linux.