Free · Open source (MIT) · v0.1.0 · Runs locally

Is your AI-built app leaking? Check your repo in 10 seconds.

vibefix-check reads your project folder on your own computer and flags the mistakes AI coding tools make most: secret keys in front-end code, Supabase tables without Row Level Security, policies that let everyone in, and Stripe webhooks anyone can fake. Every finding links to a plain-English fix.

Run it

Option 1: one file, nothing to install. Needs Python 3.9 or newer (already on most Macs and Linux machines; on Windows, download the file and run py vibefix-check.pyz .).

Mac / Linux / WSLRuns on your machine. Nothing is uploaded.
curl -fsSLO https://vibefixkit.com/check/vibefix-check.pyz
python3 vibefix-check.pyz .

Option 2: install the command with pipx (or pip install):

InstallRuns on your machine. Nothing is uploaded.
pipx install https://vibefixkit.com/check/vibefix_check-0.1.0-py3-none-any.whl
vibefix-check .

Options: --format text|json|markdown · --fail-on critical|high|medium|low|never (exit code for CI) · --include-tests · --list-rules. Silence a line with a vibefix-ignore comment, or list paths in a .vibefixignore file.

What you'll see

$ vibefix-check .
vibefix-check 0.1.0: scanned 214 files

CRITICAL VF001 Supabase service_role key in code
  src/lib/supabaseAdmin.ts:1  service_role JWT eyJhbGci…(187 chars)
  Why: The service_role key bypasses every RLS policy. Anyone who finds it can read and change all your data.
  Fix: https://vibefixkit.com/fix/secret-key-exposed-in-frontend/

CRITICAL VF006 Supabase table created without Row Level Security
  supabase/migrations/001.sql:1  table public.todos never gets `enable row level security`
  Why: Without RLS, a table that is reachable through the Data API can be read or written with the public anon key.
  Fix: https://vibefixkit.com/fix/supabase-rls-new-row-violates/

HIGH VF011 Stripe webhook handler without signature verification
  app/api/webhook/route.ts:2  handles Stripe events but never calls constructEvent
  Why: Without stripe.webhooks.constructEvent (or equivalent), anyone can POST a fake 'payment succeeded' event.
  Fix: https://vibefixkit.com/fix/stripe-webhook-signature/

Score 38/100 · 2 critical · 1 high · 0 medium · 0 low
Runs locally. Nothing was uploaded. Fix pages: https://vibefixkit.com

Secrets are always blanked out in the output: only the first 8 characters and the length are shown.

The 14 checks

Each one links to the fix page with a prompt you can paste into Cursor, Claude Code, Lovable or Bolt.

RuleSeverityWhat it findsFix
VF001CriticalSupabase service_role / secret key in codeFix
VF002HighA secret in a NEXT_PUBLIC_ / VITE_ / EXPO_PUBLIC_ variableFix
VF003CriticalStripe secret or restricted key in codeFix
VF004HighOpenAI, Anthropic, xAI, GitHub, AWS, Slack and similar tokens in codeFix
VF005High.env file that git isn't ignoringFix
VF006CriticalSupabase table created without Row Level SecurityFix
VF007HighRLS policy that lets everyone in: using (true) / with check (true)Fix
VF008CriticalRow Level Security switched off (the classic AI “fix”)Fix
VF009MediumView without security_invoker (bypasses RLS)Fix
VF010MediumSECURITY DEFINER function without a fixed search_pathFix
VF011HighStripe webhook that never verifies the signatureFix
VF012CriticalPrivate key (PEM) committed to the repoFix
VF013CriticalFirebase rules open to everyone (if true)Fix
VF014LowClient code calling localhostFix
  • Supabase anon/publishable keys are public by design and aren't flagged. A key is only flagged when its decoded payload says service_role.
  • All your SQL migrations are read together, so a table that gets RLS in a later migration isn't flagged.
  • Test and fixture folders are skipped unless you pass --include-tests.

Privacy: it runs on your machine and sends nothing

vibefix-check makes no network requests: no telemetry, no update checks, no account. It only reads files in the folder you point it at and prints the result. The code is short and readable, so download the source below and check for yourself.

Only scan code you own or are allowed to review. It reads your code, not your live app.

Run it on every pull request

GitHub Actions example. On other CI services, use the same install and run lines.

GitHub ActionsFails the build on high or critical findings
# .github/workflows/vibefix.yml
name: vibefix-check
on: [pull_request, push]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.12" }
      # pip refuses the file if its SHA-256 doesn't match
      - run: pip install "https://vibefixkit.com/check/vibefix_check-0.1.0-py3-none-any.whl#sha256=ff486b6d1bd02555e6ea284fa087155d98f8509920614654fbdf0b6a22e05557"
      - run: vibefix-check . --format markdown --fail-on never >> "$GITHUB_STEP_SUMMARY"
      - run: vibefix-check . --no-color --fail-on high

Downloads and checksums

Version 0.1.0. Verify any file against SHA256SUMS.txt.

FileSizeSHA-256
vibefix-check-0.1.0-src.zip
Source code + tests, as a zip
18.3 KBb080246407f4e9c066a5bd82bcff01f42d7f8066e01020f378acf42dd27f9bf1
vibefix-check-0.1.0.pyz
Single file: download and run with Python 3.9+
8.1 KB13284c23f019b52c0abd40fa81e3258beab4cc1ce84d4df456a14cc69890dca3
vibefix-check.pyz
Same file, always the latest version (0.1.0)
8.1 KB13284c23f019b52c0abd40fa81e3258beab4cc1ce84d4df456a14cc69890dca3
vibefix_check-0.1.0-py3-none-any.whl
Wheel for pip / pipx
13.4 KBff486b6d1bd02555e6ea284fa087155d98f8509920614654fbdf0b6a22e05557
vibefix_check-0.1.0.tar.gz
Source package (pip can install this too)
17.6 KB09f731f095659d693ea68cd0628302f4e9430ea20e374a36072cb2b9fab6729c
VerifyPrints OK for each file you downloaded
curl -fsSLO https://vibefixkit.com/check/SHA256SUMS.txt
sha256sum -c SHA256SUMS.txt --ignore-missing
# macOS: shasum -a 256 -c SHA256SUMS.txt --ignore-missing

What it can't do

It's a pattern scanner for common AI-generated mistakes, not a penetration test. It can't see policies you only created in the Supabase dashboard (export them with supabase db dump --schema public and scan the dump), it doesn't test your live API, and a clean score doesn't prove your app is secure. Found a false positive? Email [email protected] with a small snippet (never real keys).

Found something? Here's more help.

Fix it yourself with the free fix pages, or get the full system.

Compare all →
  1. Free

    Repo checker

    vibefix-check finds leaked keys, tables without RLS and unsigned Stripe webhooks in your own code.

    • 14 checks, runs locally
    • Every finding links to a fix
    • Works in CI (fails a PR on high risk)
  2. $19

    Fix & Launch Kit

    The system behind the fix pages: a debug method, prompts, Supabase templates and checklists.

    • 60-page PDF + Markdown
    • 24 prompts, 12 playbooks
    • 55-point pre-launch checklist
  3. $49

    Lockdown Pack

    Guardrails in your repo so your AI tool never “fixes” an error by turning security off.

    • AGENTS.md + Cursor rules
    • 5 agent skills (review, RLS writer, secrets sweep…)
    • RLS audit + two-user test SQL, CI gate
  4. $149

    Launch Review

    A security review of your app, approved by a human before you get it.

    • Report in 48 hours, ranked by severity
    • Paste-ready fixes + one re-check
    • Read-only · max 10 per week

Checkout by Gumroad. 14-day refunds on all paid tiers (Launch Review: before delivery, or if the report has nothing actionable). General technical guidance, not a guarantee your app is secure.