The first AI Enforcement Security tool. Proves whether AI-written code actually enforces the security it claims.
npm install -g @quantracode/vibechecknpx @quantracode/vibecheck scan --fail-on offnpx @quantracode/vibecheck scan --out vibecheck-scan.jsonnpx @quantracode/vibecheck viewAll analysis runs on your machine. Your source code never leaves your environment. No cloud uploads, no telemetry, no phone-home.
| Option | Description | Default |
|---|---|---|
| -t, --target <path> | Target directory to scan | Current directory |
| -o, --out <path> | Output file path | vibecheck-artifacts/vibecheck-scan.json |
| -f, --format <format> | Output format: json, sarif, or both | json |
| --repo-name <name> | Override repository name | Auto-detected |
| --fail-on <threshold> | Exit non-zero if findings >= threshold (critical|high|medium|low|off) | high |
| -e, --exclude <glob> | Glob pattern to exclude (repeatable) | See defaults |
| --include-tests | Include test files in scan | false |
| --emit-intent-map | Include route map and coverage metrics | false |
| Option | Description | Default |
|---|---|---|
| -p, --port <port> | Port to run the viewer on | 3000 |
| -a, --artifact <path> | Path to artifact file to open | Auto-detected |
| --no-open | Don't automatically open the browser | Opens browser |
| --update | Force update the viewer to latest version | - |
| --clear-cache | Clear the cached viewer and exit | - |
vibecheck scan --format sarif --out results.sarifvibecheck scan --fail-on mediumvibecheck scan --emit-intent-map --out scan.jsonvibecheck view -a scan.jsonDefault format with full artifact data including findings, evidence, metrics, and proof traces.
vibecheck scan --format jsonStandard format for GitHub Code Scanning, Azure DevOps, and other security tools.
vibecheck scan --format sarifVibeCheck includes 30+ enforcement verification scanners across these categories:
VC-AUTH-001High/CriticalDetects Next.js API route handlers (POST, PUT, PATCH, DELETE) that perform database operations without authentication checks.
VC-MW-001HighDetects Next.js middleware that doesn't cover API routes, potentially leaving them unprotected.
VC-AUTH-010CriticalDetects client-side auth checks without corresponding server-side protection.
VC-VAL-001MediumDetects cases where validation libraries (Zod, Yup, Joi) are called but the validated result is not used.
VC-VAL-002MediumDetects validation in frontend components but missing in API routes.
VC-NET-001HighDetects fetch/axios calls where the URL is derived from user input without validation.
VC-NET-002HighDetects server-side redirects where user-controlled input determines the destination.
VC-NET-003HighDetects CORS configurations that combine origin: '*' with credentials: true.
VC-NET-004LowDetects fetch/axios calls without timeout in API route handlers.
VC-CONFIG-001LowDetects process.env.VAR references that aren't documented in .env.example.
VC-CONFIG-002CriticalDetects hardcoded fallback values for security-critical environment variables.
VC-PRIV-003MediumDetects debug: true or dev: true in config files without NODE_ENV guards.
VC-PRIV-001HighDetects logging statements that include sensitive variable names like password, token, apiKey.
VC-PRIV-002Medium/HighDetects Prisma queries returning full models without select restrictions.
VC-CRYPTO-001HighDetects Math.random used to generate tokens, keys, or session IDs.
VC-CRYPTO-002CriticalDetects jwt.decode() used without jwt.verify() in the same file.
VC-CRYPTO-003HighDetects MD5/SHA1 for passwords or bcrypt with saltRounds < 10.
VC-UP-001HighDetects file uploads without size or type validation.
VC-UP-002HighDetects uploaded files written to public directories.
VC-RATE-001MediumDetects unauthenticated state-changing endpoints without rate limiting.
VC-HALL-001MediumDetects security libraries (helmet, cors, csurf, etc.) that are imported but never used.
VC-HALL-010MediumDetects comments that claim security protection but the implementation doesn't prove it.
VC-HALL-011HighDetects routes that expect middleware protection but are not covered by matcher patterns.
VC-HALL-012MediumDetects validation that is claimed but not properly implemented or used.
VC-SC-001MediumDetects dependencies using version ranges that could introduce breaking changes.
VC-SC-002HighDetects packages with postinstall scripts that could execute malicious code.
VC-SC-003LowDetects dependencies that have been deprecated by their maintainers.
VC-ABUSE-001HighDetects AI/LLM API calls without request limits or cost controls.
VC-ABUSE-002MediumDetects expensive operations (AI, external APIs) without budget limits.
name: Security Scan
on: [push, pull_request]
jobs:
vibecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Run VibeCheck
run: npx @quantracode/vibecheck scan --format sarif --out results.sarif --fail-on high
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarifCompare scans against baselines for regression detection:
# Evaluate against startup profile
npx @quantracode/vibecheck evaluate \
--artifact vibecheck-scan.json \
--profile startup \
--out policy-report.json
# Compare against baseline (regression detection)
npx @quantracode/vibecheck evaluate \
--artifact vibecheck-scan.json \
--baseline main-branch-scan.json \
--profile enterpriseVibeCheck generates structured JSON artifacts (version 0.3):
{
"artifactVersion": "0.3",
"generatedAt": "2024-01-15T10:30:00.000Z",
"tool": { "name": "vibecheck", "version": "0.3.2" },
"summary": {
"totalFindings": 5,
"bySeverity": { "critical": 1, "high": 2, "medium": 1, "low": 1, "info": 0 },
"byCategory": { "auth": 1, "validation": 1, ... }
},
"findings": [
{
"id": "f-abc123",
"severity": "high",
"confidence": 0.85,
"category": "auth",
"ruleId": "VC-AUTH-001",
"title": "Missing authentication on POST /api/users",
"evidence": [...],
"remediation": { "recommendedFix": "Add authentication middleware" }
}
],
"routeMap": { ... },
"middlewareMap": { ... },
"intentMap": { ... },
"proofTraces": { ... },
"metrics": {
"filesScanned": 50,
"linesOfCode": 5000,
"scanDurationMs": 1234
}
}No LLM calls, results are reproducible
All analysis runs on your machine
Precision over recall
Built for Next.js, Express patterns
Proves what's enforced, not just scanned
Output conforms to versioned schema
Install VibeCheck and start proving enforcement in minutes.