Scanner Reference

All 14 security scanners Veilguard can run on your project. To use any scanner, ask your AI agent directly — for example: "scan this file for secrets" or "audit my Supabase RLS policies".

All 14 scanners are free. The Full Security Audit runs them all together — its letter grade and AI-ready fix prompt are the Pro upgrade.

scan_secrets

Secret Scanner

Detects 60+ hardcoded API key patterns across all your files — Stripe, Supabase, OpenAI, Paystack, Flutterwave, M-Pesa, AWS, Firebase, GitHub, Twilio, SendGrid, Resend, MongoDB/Postgres/Redis URIs, and more. Specifically catches the most common AI coding mistake: live keys embedded as fallback values (e.g. process.env.STRIPE_KEY || 'sk_live_...'). These end up in your git history even after you "delete" them.

Example Output
CRITICAL: Stripe live key detected in src/lib/payments.ts:14
How to Trigger
Ask your AI agent to scan any file or set of files

scan_injection

Injection Scanner

Finds SQL injection via template literals (db.query(`SELECT * FROM users WHERE id = ${id}`)), unsanitized req.body passed directly to database inserts, exec() calls with user-controlled input, NoSQL injection patterns, IDOR vulnerabilities, and mass assignment risks. AI coding tools regularly produce these patterns when speed is prioritized over safety.

Example Output
CRITICAL: SQL injection risk in db.query() at app/api/users/route.ts:23
How to Trigger
Ask your AI agent to scan API routes or database query files

scan_webhooks

Webhook Verifier

Checks webhook endpoint handlers for missing signature verification. Catches unverified Stripe webhooks (missing constructEvent), Paystack (missing HMAC check on x-paystack-signature), M-Pesa/Daraja (missing IP allowlist for 196.201.214.*, 196.201.213.*), GitHub (missing HMAC signature), and Flutterwave (missing verif-hash header check). An unverified webhook lets any attacker send fake payment confirmations to your app.

Example Output
CRITICAL: Stripe webhook in app/api/webhooks/route.ts missing constructEvent verification
How to Trigger
Ask your AI agent to scan your API routes or webhooks folder

check_env

Environment Security

Verifies that .env files are listed in .gitignore and not tracked by git. Detects secrets accidentally exposed to the browser via NEXT_PUBLIC_ or VITE_ variable prefixes — anything prefixed this way gets bundled into client-side JavaScript and is visible to every visitor. Also flags .env.local and .env.production files committed to the repo.

Example Output
WARNING: NEXT_PUBLIC_SUPABASE_SERVICE_KEY exposes a secret to the browser bundle
How to Trigger
Ask your AI agent to check your environment configuration

check_cors

CORS Misconfiguration

Catches cors({ origin: '*' }) on Express or Next.js apps that have authentication — a wildcard origin allows any website to make credentialed requests to your API on behalf of your users. Also detects overly permissive Access-Control-Allow-Origin headers set manually in API routes. AI tools frequently generate wildcard CORS as a "just make it work" fix.

Example Output
WARNING: Wildcard CORS origin on authenticated app in server/index.ts:12
How to Trigger
Ask your AI agent to check your API server or middleware configuration

check_supply_chain

Supply Chain Scanner

Compares your installed npm packages against a database of known malicious and typosquatted package names. Catches packages like lodahs (typosquat of lodash), crossenv (known credential stealer that exfiltrates environment variables on install), and dozens of other confirmed malicious packages. AI agents sometimes suggest slightly wrong package names that resolve to malicious packages.

Example Output
CRITICAL: crossenv@1.0.0 is a known credential-stealing package — did you mean cross-env?
How to Trigger
Ask your AI agent to check your package.json for supply chain risks

scan_dependencies

Dependency CVE Checker

Sends your npm dependency names and versions to Google's OSV.dev API (no code is sent — package names only) and returns known CVEs for each package. Flags critical and high-severity vulnerabilities with the fix version so you can upgrade immediately. Runs without sending any of your source code.

Example Output
WARNING: CVE-2024-34352 in next-auth@4.24.5 — upgrade to 4.24.7
How to Trigger
Ask your AI agent to check your dependencies for known vulnerabilities

check_auth_config

Auth Configuration

Validates your authentication setup for Clerk, NextAuth, and Supabase Auth. Catches getSession() used in server-side code (should be getUser() — session data can be spoofed), sessions stored in localStorage instead of HTTP-only cookies, missing rate limiting on login and signup endpoints, and JWT secret keys that are too short or hardcoded.

Example Output
WARNING: getSession() used in server context at lib/auth.ts:8 — use getUser() to prevent session spoofing
How to Trigger
Ask your AI agent to audit your authentication configuration

check_headers

Security Headers

Checks your deployed application URL for the presence and correct configuration of HTTP security headers: Content-Security-Policy (prevents XSS), Strict-Transport-Security (enforces HTTPS), X-Frame-Options (prevents clickjacking), X-Content-Type-Options (prevents MIME sniffing), Referrer-Policy, and Permissions-Policy. Requires a deployed URL to run.

Example Output
WARNING: Missing Content-Security-Policy header on https://yourapp.com
How to Trigger
Ask your AI agent to check security headers on your deployed URL

check_git

Git Security

Scans your git history for secrets that were committed and later "deleted" — deletion removes them from HEAD but they remain fully readable in git history. Also finds .gitignore gaps (common secret files not covered), .env files currently tracked by git, and committed node_modules. This is critical because anyone who clones your repo, including public forks, can read deleted secrets.

Example Output
CRITICAL: Stripe key found in commit abc1234 — deleted in HEAD but readable in git history
How to Trigger
Ask your AI agent to scan your git history for leaked secrets

check_supabase_rls

Supabase RLS Audit

Deep analysis of your Supabase Row Level Security policies by querying pg_policies. Catches the most dangerous RLS patterns: USING(true) (allows anyone to read all rows), disabled RLS on tables with sensitive data, auth.role() = 'authenticated' bypass (any logged-in user can access all rows, not just their own), auth.uid() IS NOT NULL bypass, missing policies entirely, and storage bucket misconfiguration. These are the exact patterns behind the Moltbook breach (1.5M API keys leaked) and Lovable CVE-2025-48757 (170 apps exposed).

Example Output
CRITICAL: Missing Row Level Security on "users" table — any anon key holder can read all rows
How to Trigger
Ask your AI agent to audit your Supabase Row Level Security

check_firebase

Firebase Rules Audit

Reads and analyzes your Firebase security rules files (firestore.rules, storage.rules). Catches allow read, write: if true (fully public database), client-controlled userId checks where the attacker sets their own ID to bypass ownership rules, authentication-only policies that allow any authenticated user to access any document, and missing auth checks entirely.

Example Output
WARNING: Insecure "if true" rule in Firestore rules — allows public read/write on all documents
How to Trigger
Ask your AI agent to audit your Firebase security rules

scan_app_security

App Security Scanner

Detects application-layer security gaps that AI agents routinely ship: missing rate limiting on auth and payment routes, IDOR (insecure direct object references — where changing an ID in the URL exposes another user's data), insecure password storage (plaintext, MD5, SHA-1, unsalted SHA-256, low-cost bcrypt), unsafe file uploads (no size limit, no type filter, public upload dirs), leaked error stack traces, sensitive data in logs, open redirects, and mass assignment via req.body spread.

Example Output
CRITICAL: IDOR in app/api/orders/[id]/route.ts — any user can read another user's order by changing the ID
How to Trigger
Ask your AI agent to check your app for IDOR, rate limiting, and password storage issues

scan_rules_files

AI Rules File Scanner

Scans your AI rules files (.cursorrules, .windsurfrules, CLAUDE.md, .github/copilot-instructions.md, and similar) for hidden attacks that hijack your coding agent: invisible Unicode characters and zero-width backdoors, base64-encoded payloads, suspicious URLs, and malicious instructions injected into the very files that steer your AI. A poisoned rules file can silently tell your agent to exfiltrate secrets or write in vulnerabilities.

Example Output
CRITICAL: Hidden Unicode instruction detected in .cursorrules — possible prompt-injection backdoor
How to Trigger
Ask your AI agent to scan your rules files for hidden instructions or backdoors

full_audit

Pro

Full Security Audit

Runs all the codebase scanners in sequence across your entire project, calculates a security score from 0 to 100, and assigns a letter grade from A+ to F. Then generates a single AI-ready fix prompt containing every issue found — paste it into your coding agent to fix everything at once. Pro-only and unlimited; on free, calling it returns an upgrade prompt (run the individual scanners for free vulnerability alerts).

Example Output
GRADE B: 11 issues found across your project. AI fix prompt generated — paste to fix all.
How to Trigger
Ask your AI agent to run a full security audit before deployment