vibecheck
built for people who ship with AI
vibecheck

vibecheck is a security scanner for AI-generated code from Cursor, Lovable, Bolt, v0, Replit, and Windsurf.

Catch vulnerabilities before you ship apps built with AI coding assistants.

Paste your live URL for an instant header and TLS check — no account needed. Connect GitHub to scan the source code: secrets, unauthenticated routes, SQL injection, and 50 more checks.

Connect GitHub — scan your source code free
or try a live URL first

No account needed — checks live headers, TLS, CORS, and cookie flags

VS Code extension·Featured on Product Hunt

WORKS WITH

Cursor
Lovable
Bolt
Replit
Windsurf
v0

FIND US ON

VS Code MarketplaceProduct HuntGitHubIndie Hackers

what actually runs when you scan

gitleaks

secrets

semgrep

OWASP rules

njsscan

headers, auth

vibecheck

50 custom checks

Claude only sees the normalized results from these tools — explaining and prioritizing, never guessing at vulnerabilities from scratch.

Also available as a VS Code extension — scan before you deploy.

WHAT BUILDERS SAY

“love that it bundles gitleaks, semgrep, and the supabase RLS checks together instead of making you wire them up separately, the triage output from claude actually reads like a human reviewed it”

Esila· ProductHunt

“Plugged in a repo and the Supabase RLS flag caught a table I had completely forgotten to lock down. The Claude triage is actually useful here, not just a wrapper, since it explains the blast radius in plain language.”

Serhat· ProductHunt

“Especially useful if you ship fast and want an extra security check before pushing changes to production. Simple idea, well executed, and genuinely useful for developers working with AI-generated or rapidly evolving codebases.”

lumina· Favors.dev

“I run this against my own five live products before every deploy. It's the check I wished existed when I shipped the first one.”

the developer behind vibecheck

Built specifically because vibe-coded apps have a predictable set of security mistakes — disabled RLS, missing auth on routes, secrets in source — that generic scanners miss. vibecheck runs the tools that actually catch these.

what we check

65 checks across 11 categories

Secrets & Exposure6
  • ·Hardcoded API keys & tokens
  • ·NEXT_PUBLIC_ secret exposure
  • ·JWT weak / hardcoded secrets
  • ·Verbose error leaks
  • ·Dockerfile secrets in ENV/ARG
  • ·Secrets interpolated into AI prompts
Access Control7
  • ·Unauthenticated API routes
  • ·Supabase RLS disabled
  • ·Supabase service_role key in client code
  • ·Mass assignment
  • ·CORS misconfiguration
  • ·IDOR — missing ownership checks
  • ·GraphQL introspection in production
Injection8
  • ·SQL injection
  • ·NoSQL injection (MongoDB)
  • ·Command injection
  • ·Server-side template injection
  • ·XSS (stored, reflected, DOM)
  • ·CRLF injection in response headers
  • ·CSV formula injection
  • ·Prototype pollution
Server-Side6
  • ·SSRF + cloud metadata
  • ·Path traversal
  • ·Open redirect
  • ·Insecure file upload
  • ·Host header injection
  • ·TLS certificate verification disabled
Auth & Sessions6
  • ·JWT weak / hardcoded secrets
  • ·Timing-unsafe token comparison
  • ·Auth endpoints missing rate limiting
  • ·OAuth state validation
  • ·Webhook signature verification
  • ·Insecure password hashing (MD5/SHA-1)
Node / Framework6
  • ·Missing security headers
  • ·ReDoS — user input to RegExp
  • ·Dangerous eval / new Function
  • ·Dependency CVEs (npm audit)
  • ·Express trust proxy misconfiguration
  • ·GitHub Actions script injection
AI / LLM Apps4
  • ·LLM output passed to eval/exec/SQL
  • ·Secrets in AI prompt strings
  • ·Prompt injection sinks
  • ·Missing AI output validation
Ops & Reliability5
  • ·Missing health check endpoint
  • ·Dockerfile missing HEALTHCHECK
  • ·Destructive SQL migration (DROP / TRUNCATE)
  • ·.env missing from .gitignore
  • ·Deployment config misconfigurations (vercel.json, fly.toml, railway)
Supply Chain6
  • ·Lifecycle scripts with shell execution (postinstall)
  • ·Dependencies from non-registry sources
  • ·Obfuscated code (eval of encoded payload)
  • ·Binary executables committed to repo
  • ·GitHub Actions permission escalation
  • ·External Actions not pinned to commit SHA
AI Agent Injection6
  • ·"Ignore previous instructions" in CLAUDE.md / README
  • ·Hidden instructions in HTML comments
  • ·Unicode direction-override hidden text
  • ·MCP server config with shell execution
  • ·Remote MCP servers exfiltrating context
  • ·Instructions to execute commands or reveal secrets
Repository Trust5
  • ·Committed git hooks with shell execution (pre-commit, post-checkout)
  • ·Dangerous git config (hooksPath override, url.insteadOf, filter.smudge)
  • ·Devcontainer lifecycle hooks with suspicious commands
  • ·Setup/install scripts with curl-pipe-to-shell patterns
  • ·Submodule URLs pointing to non-standard hosts
browse all vulnerability guides →

what a finding looks like

CRITICALRow level security disabled on table "users"

database/migrations/001_initial_schema.sql · line 12

Any authenticated user can read or write other users' rows directly through the API, even though the UI only shows their own data.

view explanation & fix →

Supabase's row level security is disabled on this table. Any user with a valid JWT can query or mutate any row — not just their own. Your frontend may filter correctly, but a direct API or curl call bypasses it entirely. This is the most common critical finding in AI-generated Supabase projects.

ALTER TABLE users ENABLE ROW LEVEL SECURITY;

CREATE POLICY "users_own_rows" ON users
  FOR ALL USING (auth.uid() = id);

ORIGINAL RESEARCH

We scanned 100 AI-built apps. 31 leaked a secret.

31/100 exposed credentials. 47/100 had RLS off. 12/100 shipped a Supabase service_role key to the browser. Median time to first finding: 41 seconds.

read the research →

how it compares

vs. Snyk · GitHub Code Scanning · GitGuardian

vibecheckSnykGitHub CSGitGuardian
Zero-config (GitHub OAuth → results)✓✓✗✗
Supabase RLS gap detection✓✗✗✗
Unauthenticated route detection✓✗✗✗
Secrets / API key scanning✓~✓✓
AI triage in plain English✓✗✗✗
Free tier✓✓✓✓
Solo-dev pricing£12/mo$25/mo—$29/mo

~ = partial. full comparison with Semgrep, Sonarcloud & Aikido →

Pricing that fits a portfolio, not a payroll

Free

£0

  • 2 repos
  • unlimited scans
  • counts and titles only?See if you have a problem before deciding to fix it — useful even without the full explanation.

Solo

£12/mo

  • up to 5 repos
  • full fixes and explanations
  • scan history and diffing

Indie stack

£27/mo

  • unlimited repos
  • auto-PR for safe fixes
  • priority queue

Common questions

What is vibecheck?

vibecheck is a security scanner for GitHub repositories built by developers who use AI coding assistants. It runs four real static analysis tools — Gitleaks, Semgrep, njsscan, and custom checks — against your codebase, then uses Claude AI to explain the findings in plain language and suggest fixes.

What is "vibe coding" and why is it a security risk?

Vibe coding refers to building software primarily through AI-assisted generation — prompting tools like Cursor, Claude Code, or GitHub Copilot to write most of the application code. The output ships fast, but common security patterns (authentication checks, RLS on database tables, input sanitization) are frequently omitted because AI models optimise for functional code, not secure code by default.

What security scanners does vibecheck run?

vibecheck runs four scanners in sequence: Gitleaks for exposed secrets and API keys; Semgrep for OWASP Top 10 code patterns including SQL injection, XSS, and path traversal; njsscan for Node.js-specific patterns like missing security headers and eval usage; and 50 custom checks written specifically for AI-generated app patterns — covering secrets exposure, access control, injection attacks, supply chain (malicious postinstall scripts, obfuscated dependencies, binary executables, GitHub Actions permission escalation), AI agent prompt injection (detecting "ignore previous instructions" and covert overrides in CLAUDE.md, README, AGENTS.md, and MCP configs), and repository trust (committed git hooks with shell execution, dangerous git config overrides, devcontainer lifecycle injection, curl-pipe-to-shell setup scripts, and submodule URL poisoning).

How is vibecheck different from asking an AI to review my code?

Asking an AI chatbot to review code is non-deterministic and context-limited — it guesses based on what it can see in one prompt window. vibecheck runs deterministic static analysis tools against your full codebase. Claude only appears at the end to translate and prioritize confirmed findings, never to detect vulnerabilities from scratch.

Is my code stored or shared?

No. vibecheck performs a shallow clone of your repository in an isolated worker process, runs the scanners, then discards the clone. Your GitHub token is AES-256-GCM encrypted at rest and only decrypted inside the worker immediately before cloning. Only the normalized findings (file paths, line numbers, rule names) are stored in the database.

How much does vibecheck cost?

The Free plan supports 2 repositories with unlimited scans and shows severity counts and finding titles. Solo (£12/month) supports up to 5 repos and includes full explanations and suggested fixes. Indie Stack (£27/month) is unlimited repos with a priority scan queue. No per-seat pricing — you pay once for your whole portfolio.

LaunchRadar

FROM THE SAME MAKER

LaunchRadar

Now your site is secure — get it launched. Find demand, fuel growth.

→