Security guardrail for AI coding

Stop the hole before your AI ships it.

Apps built with Lovable, Bolt, v0, Cursor and Claude Code ship fast — and ship the same holes. vibeward catches the risky request before your AI acts on it — "disable RLS", "use the service_role key in the frontend" — and scans the finished code from a URL or your repo, with reports your AI can turn into a fix.

$ npx vibeward@latest https://your-app.lovable.app
★ Star on GitHub npm MIT · zero install · always latest via npx
10.3%
of analyzed Lovable apps had Row-Level Security wide open (CVE-2025-48757, CVSS 9.3)
NVD
1.5M
auth tokens + 35k emails exposed by one vibe-coded app with no RLS (Moltbook, 2026)
Wiz
45%
of AI-generated code introduces a known security flaw
Veracode 2026

Catch the risky request — before it happens

Most holes start with a prompt. vibeward runs as a Claude Code hook and stops the dangerous ask the moment you type it — deterministic, so it can't be prompt-injected away.

🚫 You ask your AI
"disable RLS so it works"
"use the service_role key in the frontend"
"make the users table public to debug"
"remove the login for now"
🛡️ vibeward stops it first

Blocks the request with why it's dangerous and the safe alternative — before the model touches your code.

Install · Claude Code hook (~/.claude/settings.json)
{ "hooks": { "UserPromptSubmit": [
  { "hooks": [{ "type": "command", "command": "npx vibeward@latest guard" }] }
] } }

What it finds

The exact holes AI coding tools leave behind — across the front end, the back end, and the database.

🔑 Exposed secrets

Supabase service_role, Stripe, OpenAI, AWS, GitHub and more — in bundles or source, with the exact file:line.

🗄️ Missing RLS Supabase

Tables readable without auth, permissive USING (true) policies, and risky SECURITY DEFINER functions.

🧩 Insecure backend

SQL injection, open CORS, command injection, eval, and verbose error leaks in your API routes.

💾 Local DB exposure

Committed SQLite/.db files and .env secrets shipped in the repo or the build.

🛡️ Security headers

Missing CSP, HSTS, X-Frame-Options — and tech-stack leaks that hand attackers a target list.

🤖 Built for AI fixes

Every finding ships with CWE, exploit path, impact and references — the context an AI needs to open a correct PR.

Two modes

A fast look from the outside, or a deep audit from the code.

Black-box · from a URL

Quick outside-in check

Point it at a live app. Scans bundles for secrets, probes Supabase RLS, checks headers.

npx vibeward@latest https://app.lovable.app
White-box · from the code

Deep audit with file:line

Point it at a repo or a downloaded ZIP. Scans source, backend and SQL migrations.

npx vibeward@latest scan ./your-app
CI · runs itself

GitHub Action

Add it once and it scans every push, failing the build on a critical and posting findings to the Security tab.

- uses: JSiapoDEV/vibeward@v1

Context, not just a red flag

This is what a single finding looks like — enough for a human to grasp the risk and for an AI to fix it.

🔴 CRITICAL — Table users readable without authentication
Classification CWE-863 · Incorrect Authorization
Evidence 1,847 rows readable with only the public anon key; sensitive columns: email, phone, full_name
How it's exploited Any visitor sends GET /rest/v1/users?select=* with the anon key from the JS bundle — every row comes back, no login.
Impact ~1,847 user records readable by anyone on the internet right now. Active personal-data leak.

Run it in five seconds

No install. Always the latest. Read-only.

$ npx vibeward@latest scan ./your-app
★ Star it on GitHub
copied