VibeGuard MCP Server
Enables AI coding tools to scan projects for security vulnerabilities, hardcoded secrets, injection flaws, and privacy violations with 699 rules and 76 MCP tools, all running locally with zero telemetry.
README
<div align="center">
<!-- Animated Logo Banner --> <img src="https://readme-typing-svg.herokuapp.com?font=Fira+Code&weight=700&size=32&duration=2000&pause=800&color=2E75B6¢er=true&vCenter=true&random=false&width=500&lines=VibeGuard;693+Rules;75+MCP+Tools;13+Defense+Layers;$0+Cost" alt="VibeGuard" />
<br/>
<!-- Status Badges --> <img src="https://img.shields.io/badge/status-active-success?style=flat-square&color=22C55E" /> <img src="https://img.shields.io/badge/version-0.1.0-blue?style=flat-square" /> <img src="https://img.shields.io/badge/license-MIT-green?style=flat-square&color=22C55E" /> <img src="https://img.shields.io/badge/cost-$0-green?style=flat-square&color=22C55E" /> <img src="https://img.shields.io/badge/telemetry-none-green?style=flat-square&color=22C55E" /> <img src="https://img.shields.io/badge/privacy-100%25%20local-green?style=flat-square&color=22C55E" />
<br/> <br/>
<!-- Stats Cards --> <img src="https://img.shields.io/badge/rules-693-blue?style=for-the-badge&color=2E75B6" /> <img src="https://img.shields.io/badge/MCP_tools-75-purple?style=for-the-badge&color=8B5CF6" /> <img src="https://img.shields.io/badge/CLI_commands-58-blue?style=for-the-badge&color=3B82F6" /> <img src="https://img.shields.io/badge/auto_fixes-43-green?style=for-the-badge&color=22C55E" /> <img src="https://img.shields.io/badge/defense_layers-13-red?style=for-the-badge&color=EF4444" /> <img src="https://img.shields.io/badge/AI_clients-12-cyan?style=for-the-badge&color=06B6D4" /> <img src="https://img.shields.io/badge/languages-14-blue?style=for-the-badge&color=3B82F6" /> <img src="https://img.shields.io/badge/frameworks-20%2B-orange?style=for-the-badge&color=F59E0B" /> <img src="https://img.shields.io/badge/tests-279-brightgreen?style=for-the-badge&color=22C55E" /> <img src="https://img.shields.io/badge/errors-0-brightgreen?style=for-the-badge&color=22C55E" />
<br/> <br/>
<!-- Shield-style shields --> <a href="https://github.com/yagyeshVyas/VibeGuard/stargazers"><img src="https://img.shields.io/github/stars/yagyeshVyas/VibeGuard?style=social" alt="Stars"></a> <a href="https://github.com/yagyeshVyas/VibeGuard/network/members"><img src="https://img.shields.io/github/forks/yagyeshVyas/VibeGuard?style=social" alt="Forks"></a> <a href="https://www.npmjs.com/package/@yagyeshvyas/vibeguard"><img src="https://img.shields.io/badge/npm-@yagyeshvyas/vibeguard-red?style=social&logo=npm" alt="npm"></a> <a href="https://www.linkedin.com/in/yagyeshvyas/"><img src="https://img.shields.io/badge/LinkedIn-Yagyesh_Vyas-blue?style=social&logo=linkedin" alt="LinkedIn"></a>
<br/> <br/>
<!-- Tagline --> <h3>The Security & Privacy Platform Built for Vibe Coders</h3>
<p>AI coding tools (Claude Code, Cursor, Windsurf, Lovable, Bolt) ship fast โ and often ship hardcoded secrets, open databases, injection holes, and privacy violations. <b>VibeGuard catches all of it.</b></p>
<table> <tr> <td align="center"><h4>693</h4><sub>Rules</sub></td> <td align="center"><h4>75</h4><sub>MCP Tools</sub></td> <td align="center"><h4>58</h4><sub>CLI Commands</sub></td> <td align="center"><h4>13</h4><sub>Defense Layers</sub></td> <td align="center"><h4>43</h4><sub>Auto-Fixes</sub></td> <td align="center"><h4>$0</h4><sub>Cost</sub></td> </tr> </table>
</div>
<!-- Install -->
๐ฆ Install
Option 1: From npm (when published)
npx @yagyeshvyas/vibeguard install
Option 2: From GitHub (works now!)
git clone https://github.com/yagyeshVyas/VibeGuard.git
cd VibeGuard
npm install
npm link # makes 'vibeguard' available globally
Then use it:
vibeguard scan # scan your project
vibeguard dashboard # beautiful terminal dashboard
vibeguard fix # auto-fix 43 rule types
vibeguard pre-deploy # 13-gate deployment check
vibeguard firewall "your prompt here" # AI firewall
Wire into Claude Code (from GitHub clone)
# In your project directory:
echo '{ "mcpServers": { "vibeguard": { "command": "node", "args": ["/path/to/VibeGuard/bin/cli.js", "mcp"] } } }' > .mcp.json
Or use the global Claude Code command:
claude mcp add vibeguard -- node /path/to/VibeGuard/bin/cli.js mcp
Wire into Cursor / Windsurf / other MCP clients
Add to your MCP config file:
{
"mcpServers": {
"vibeguard": {
"command": "node",
"args": ["/path/to/VibeGuard/bin/cli.js", "mcp"]
}
}
}
Wire into Codex CLI
# Add to ~/.codex/config.toml:
[mcp_servers.vibeguard]
command = "node"
args = ["/path/to/VibeGuard/bin/cli.js", "mcp"]
<p>Auto-detects 12 AI coding clients: <b>Claude Code, Cursor, Windsurf, Codex CLI, Antigravity, Gemini CLI, Continue, Cline, Roo Code, OpenHands, Aider, VS Code</b></p>
<!-- AI Client Logos --> <table> <tr> <td align="center">๐ต</td> <td align="center">๐ฃ</td> <td align="center">๐ข</td> <td align="center">๐ก</td> <td align="center">๐ด</td> <td align="center">๐ </td> <td align="center">โซ</td> </tr> <tr> <td align="center"><sub>Claude Code</sub></td> <td align="center"><sub>Cursor</sub></td> <td align="center"><sub>Windsurf</sub></td> <td align="center"><sub>Codex CLI</sub></td> <td align="center"><sub>Antigravity</sub></td> <td align="center"><sub>Gemini CLI</sub></td> <td align="center"><sub>Continue</sub></td> </tr> <tr> <td align="center"><sub>Cline</sub></td> <td align="center"><sub>Roo Code</sub></td> <td align="center"><sub>OpenHands</sub></td> <td align="center"><sub>Aider</sub></td> <td align="center"><sub>VS Code</sub></td> <td align="center"><sub>+ more</sub></td> <td align="center"></td> </tr> </table>
<br/>
vibeguard scan # scan your project
vibeguard dashboard # beautiful terminal dashboard
vibeguard fix # auto-fix 43 rule types
vibeguard pre-deploy # 13-gate deployment check
</div>
<!-- Table of Contents --> <div align="center"> <h2>๐ What is VibeGuard?</h2> </div>
VibeGuard is a free, zero-dependency security and privacy scanner that runs entirely on your machine. It reads your code files locally, checks them against 693 security rules, and tells you exactly what's wrong and how to fix it โ all without sending a single byte to any server.
It's built specifically for the problems AI coding tools create:
- Hardcoded API keys visible in browser dev tools
- Supabase/Firebase databases open to the world (no RLS)
- Admin endpoints with no authentication
- SQL injection, command injection, XSS
- Secrets committed to git history
- Hallucinated npm packages that don't exist
- User data sent to AI APIs without redaction
- Analytics tracking without consent (GDPR violation)
- WebRTC IP leaks, clipboard theft, geolocation without consent
<div align="center"> <h2>๐ก๏ธ 13-Layer Defense Architecture</h2> </div>
Even if an AI is fully jailbroken, it cannot leak data. Each layer runs automatically when the MCP server starts.
<table> <tr> <th>#</th> <th>Layer</th> <th>Module</th> <th>What It Catches</th> <th>When</th> </tr> <tr> <td align="center">1</td> <td><b>Static Scanner</b></td> <td><code>scanner.js</code></td> <td>693 security rules across 14 languages</td> <td>Before deploy</td> </tr> <tr> <td align="center">2</td> <td><b>AI Firewall</b></td> <td><code>firewall.js</code></td> <td>Prompt injection, jailbreaks, secret access</td> <td>Before LLM call</td> </tr> <tr> <td align="center">3</td> <td><b>Agent Guard</b></td> <td><code>firewall.js</code></td> <td>Dangerous file/command/network access</td> <td>Before agent action</td> </tr> <tr> <td align="center">4</td> <td><b>Runtime Interceptor</b></td> <td><code>interceptor.js</code></td> <td>Wraps fetch/http/exec/fs at runtime level</td> <td>During execution</td> </tr> <tr> <td align="center">5</td> <td><b>Output Guard</b></td> <td><code>interceptor.js</code></td> <td>Secrets/PII in AI responses โ redacted</td> <td>After LLM response</td> </tr> <tr> <td align="center">6</td> <td><b>Exfil Firewall</b></td> <td><code>firewall.js</code></td> <td>PII/secrets in outbound data โ blocked</td> <td>Before any request</td> </tr> <tr> <td align="center">7</td> <td><b>Env Lock</b></td> <td><code>interceptor.js</code></td> <td>Hides sensitive env vars from AI</td> <td>At process start</td> </tr> <tr> <td align="center">8</td> <td><b>Self-Protection</b></td> <td><code>interceptor.js</code></td> <td>Detects tampering with VibeGuard itself</td> <td>Continuous</td> </tr> <tr> <td align="center">9</td> <td><b>Zero-Trust Sandbox</b></td> <td><code>sandbox.js</code></td> <td>Locked VM: no fs, no exec, no network</td> <td>Code execution</td> </tr> <tr> <td align="center">10</td> <td><b>Behavioral Analysis</b></td> <td><code>behavior.js</code></td> <td>Trust building, data gathering, slow exfil</td> <td>Over session</td> </tr> <tr> <td align="center">11</td> <td><b>Supply Chain Firewall</b></td> <td><code>supply-firewall.js</code></td> <td>Malware, typosquats, dangerous scripts</td> <td>Before npm install</td> </tr> <tr> <td align="center">12</td> <td><b>Secret Vault</b></td> <td><code>vault.js</code></td> <td>AES-256-GCM encrypted in-memory storage</td> <td>Secret access</td> </tr> <tr> <td align="center">13</td> <td><b>Audit Trail</b></td> <td><code>audit-trail.js</code></td> <td>SHA-256 chained tamper-proof log</td> <td>All actions</td> </tr> </table>
<div align="center"> <h2>๐ฅ What VibeGuard Catches</h2> </div>
<details> <summary><b>๐ The #1 r/vibecoding Issue: Open Databases</b></summary>
If you use Supabase, Firebase, or Convex, VibeGuard checks:
- RLS missing โ table created but row-level security never enabled
- RLS fake policy โ
USING (true)โ looks enabled in dashboard, protects nothing - PERMISSIVE policy โ allows access unless another policy blocks it
- Service role key in client โ bypasses RLS entirely
- Firebase rules open โ
.read: trueor.write: true - Firebase rules any-auth โ
auth != nullmeans ANY logged-in user sees ALL data - Convex public query โ exported query with no auth check </details>
<details> <summary><b>๐ Secrets (50+ types)</b></summary>
OpenAI, Anthropic, Stripe (live + restricted), AWS, GitHub, Slack, GitLab, Twilio, SendGrid, Mailgun, Telegram, npm, Resend, GCP, Azure, Cloudflare, Datadog, Sentry, Algolia, Vercel, Netlify, Heroku, DigitalOcean, Notion, Linear, Contentful, PlanetScale, Vault, Doppler, Grafana, Jira, PagerDuty, New Relic, Splunk, Braintree, Square, Paddle, MUX, Mailchimp, Postmark, Sendinblue, Twitch, Patreon, Discord, Bitbucket, JFrog, LaunchDarkly, Rollbar, Mapbox, Twilio SID, and more.
Plus: connection strings with passwords, .env not in .gitignore, secrets in localStorage/sessionStorage, secrets in URL params, secrets in client-side config files.
</details>
<details> <summary><b>๐ Injection (30+ rules)</b></summary>
- SQL injection โ string concat, template literals, f-strings, format(), % formatting, raw queries across Prisma, Drizzle, Sequelize, TypeORM, Kysely, MikroORM, Turso, Hono, Go, Python, PHP, C#, Kotlin, Rust
- Command injection โ exec/spawn with user input, template literals, backtick interpolation
- Code injection โ eval, new Function, setTimeout/setInterval with strings, vm.runInContext
- XSS โ dangerouslySetInnerHTML, v-html, innerHTML, outerHTML, document.write, insertAdjacentHTML, Angular DomSanitizer bypass, Rails html_safe, Laravel
{!! !!} - SSTI โ template render with user input (EJS, Pug, Handlebars, Mustache)
- LDAP, XPath, NoSQL $where, header injection, log injection, CSV formula injection, PDF injection
- SSRF โ fetch to internal IPs, cloud metadata service (169.254.169.254), DNS rebinding </details>
<details> <summary><b>๐ Auth (20+ rules)</b></summary>
- JWT alg:none, weak JWT secret, JWT decoded without verify
- Hardcoded admin credentials
- Password compared with
==(plaintext) - Session fixation (no regenerate after login)
- No rate limiting on login/register
- Password in query string
- Missing MFA enforcement
- OAuth state parameter empty/static
- Token in URL
- No logout endpoint </details>
<details> <summary><b>๐ค AI/LLM Security (35+ rules)</b></summary>
- Prompt injection in tool descriptions
- AI agent can execute code, deploy, install packages, access secrets, modify auth
- LLM output used as SQL, shell, DOM, file path
- Data exfiltration via agent
- Memory poisoning
- Training data leakage
- Agent loop without iteration cap
- Tool result injection
- Missing max_tokens, temperature too high
- Browser API key exposure
- Secure prompt analysis โ analyzes your prompt BEFORE code generation </details>
<details> <summary><b>๐ฆ Supply Chain (15+ rules)</b></summary>
- Slopsquat detection โ hallucinated npm packages that don't exist
- Typosquat detection
- Postinstall scripts with curl/wget/eval
- Unpinned Docker images (:latest)
- GPL/AGPL license risk
- Missing integrity hashes
- git+http dependencies
- Crypto miners in dependencies
- Missing .npmrc </details>
<details> <summary><b>๐๏ธ Infrastructure (40+ rules)</b></summary>
- Terraform: S3 public, IAM wildcard, SG 0.0.0.0/0, RDS public, no encryption, no KMS rotation, hardcoded keys, no backup, no CloudTrail
- Kubernetes: run-as-root, no readOnly FS, hostPath, hostPID/IPC, no NetworkPolicy, privileged, SYS_ADMIN, no seccomp, no probes, no security context
- Docker: no USER directive, no HEALTHCHECK, privileged, no resource limits, secrets in env, :latest
- Docker Compose: no resource limits, secrets in environment, privileged, host network, weak restart policy
- GitHub Actions: script injection, write-all permissions, unpinned actions
- CI/CD: GitLab secrets in YAML, Jenkins credentials, CircleCI context, AWS CDK secrets, CloudFormation, Helm, Ansible, Pulumi </details>
<details> <summary><b>๐ Privacy Protection (50+ rules)</b></summary>
VibeGuard is the only scanner that protects user privacy, not just security:
- WebRTC IP leak, clipboard reads, geolocation, camera/microphone
- Canvas fingerprinting, device fingerprinting, Bluetooth scanning
- Analytics without consent (Google Analytics, Mixpanel, Segment, PostHog, Amplitude, Facebook Pixel, Hotjar, FullStory)
- Cookies without banner (ePrivacy/GDPR)
- Sentry with PII, PII in logs, health data access, biometric data
- Background location, contacts/photos/SMS/call log access
- EXIF location leak, keystroke listeners, SRI missing </details>
<div align="center"> <h2>โก Privacy Commands</h2> </div>
vibeguard privacy-audit # inventory all PII collection, storage, transmission
vibeguard net-audit # map every outbound HTTP call (where does data go?)
vibeguard ai-guard # detect user data sent to AI APIs without redaction
vibeguard privacy-policy # auto-generate a privacy policy from code analysis
vibeguard csp-generate # auto-generate Content-Security-Policy from code
vibeguard firewall <prompt> # AI firewall โ inspect prompt before sending to LLM
vibeguard agent-guard # show blocked paths, commands, domains
vibeguard exfil-check <data> # check data for PII/secrets before sending externally
vibeguard dep-firewall <pkg> # check package name before npm install
vibeguard sandbox <code> # execute code in zero-trust sandbox
vibeguard output-guard <text> # sanitize AI response for secrets/PII
vibeguard env-lock # lock environment variables โ hide secrets from AI
vibeguard self-check # verify VibeGuard hasn't been tampered with
vibeguard pre-deploy # run all 13 security gates before deployment
PII Detection & Redaction
const { detectPII, redactText } = require('vibeguard/pii');
const text = 'Contact john@example.com or 555-123-4567. Card: 4242424242424242';
const detected = detectPII(text); // [{ type: 'email', ... }, { type: 'credit-card', ... }]
const safe = redactText(text); // 'Contact [REDACTED_EMAIL] or [REDACTED_PHONE]. Card: ****4242'
Detected types: email, phone, SSN, credit card (Luhn-validated), AWS keys, JWTs, private keys, IP addresses, IBANs, MAC addresses.
<div align="center"> <h2>๐ Pre-Deploy Gate (13 Gates)</h2> </div>
Run all 13 security gates before deployment. If ANY gate fails, deployment is blocked.
vibeguard pre-deploy # run all gates
vibeguard pre-deploy --strict # fail on warnings too
vibeguard pre-deploy --json # JSON output for CI/CD
| # | Gate | What It Checks |
|---|---|---|
| 1 | Static Scan | 693 rules โ any critical? |
| 2 | Secret Scan | Secrets exposed in code? |
| 3 | Git History | .env tracked in git? |
| 4 | Dependency Audit | Slopsquat/typosquat? |
| 5 | Supply Chain | Lockfile, scripts, licenses? |
| 6 | Privacy Audit | PII collection/storage/transmission? |
| 7 | Network Audit | Suspicious outbound domains? |
| 8 | AI Data Guard | User data to AI APIs without redaction? |
| 9 | Compliance | SOC2/PCI/HIPAA/GDPR? |
| 10 | Config Check | .env in .gitignore? MCP installed? |
| 11 | Self-Check | All VibeGuard modules intact? |
| 12 | Tamper Check | No tampering with VibeGuard? |
| 13 | Behavioral Check | No suspicious patterns? |
<div align="center"> <h2>๐ฌ AST Taint Analysis & Confidence</h2> </div>
VibeGuard uses scope-aware AST dataflow analysis (not just regex) to track user input from source to sink:
const name = req.body.name; // source โ tainted
const cmd = `ls ${name}`; // taint propagates through template literal
exec(cmd); // sink โ command injection confirmed
Confidence levels on every finding reduce alert fatigue:
| Confidence | Meaning | How it's set |
|---|---|---|
high |
Dataflow-confirmed โ input traced to sink | AST taint, AST analysis |
medium |
Multi-signal regex with filter() |
Rules with validation logic |
low |
Bare regex match โ heuristic hint | Single-pattern rules |
vibeguard scan --min-confidence medium # hide low-confidence hints
vibeguard scan --show-suppressed # show inline-suppressed findings
Inline suppression with reasons:
const key = "sk_live_..."; // vibeguard-ignore[secret.stripe-live-key]: test fixture
// vibeguard-ignore-next[code.eval]: intentional eval in REPL
eval(userInput);
SARIF output maps confidence to result.properties.confidence for CI integrations.
<div align="center"> <h2>๐ Numbers</h2> </div>
<!-- COUNTS:START --> <!-- Auto-generated by scripts/counts.js โ do not edit manually --> <!-- Rules: 693 | MCP Tools: 75 | Defense Layers: 13 --> <!-- COUNTS:END -->
<table> <tr><th>Metric</th><th>Value</th><th></th></tr> <tr><td>Rules</td><td><b>693</b></td><td>๐</td></tr> <tr><td>MCP tools</td><td><b>75</b></td><td>๐ค</td></tr> <tr><td>CLI commands</td><td><b>58</b></td><td>๐ป</td></tr> <tr><td>Auto-fixable rules</td><td><b>43</b></td><td>๐ง</td></tr> <tr><td>Defense layers</td><td><b>13</b></td><td>๐ก๏ธ</td></tr> <tr><td>Pre-deploy gates</td><td><b>13</b></td><td>๐</td></tr> <tr><td>AI clients</td><td><b>12</b></td><td>๐ง </td></tr> <tr><td>Languages</td><td><b>14</b></td><td>๐</td></tr> <tr><td>Frameworks</td><td><b>20+</b></td><td>โก</td></tr> <tr><td>Presets</td><td><b>12</b></td><td>โ๏ธ</td></tr> <tr><td>Privacy rules</td><td><b>50+</b></td><td>๐</td></tr> <tr><td>Firewall rules</td><td><b>30+</b></td><td>๐ฅ</td></tr> <tr><td>AI Firewall threats</td><td><b>20+</b></td><td>๐งฑ</td></tr> <tr><td>PII types detected</td><td><b>10+</b></td><td>๐๏ธ</td></tr> <tr><td>Source modules</td><td><b>43</b></td><td>๐ฆ</td></tr> <tr><td>Tests</td><td><b>279</b></td><td>โ </td></tr> <tr><td>Lint errors</td><td><b>0</b></td><td>โจ</td></tr> <tr><td>Dependencies</td><td><b>1</b> (MCP SDK)</td><td>๐ฆ</td></tr> <tr><td>Cost</td><td><b>$0</b></td><td>๐</td></tr> <tr><td>Telemetry</td><td><b>None</b></td><td>๐</td></tr> <tr><td>Data sent to servers</td><td><b>None</b></td><td>๐</td></tr> </table>
<div align="center"> <h2>๐ Benchmark (Precision / Recall / F1)</h2> </div>
We measure VibeGuard against a curated JS vuln corpus โ not a fake rule count.
<!-- BENCHMARK:START -->
<!-- Auto-generated by npm run benchmark โ do not edit manually -->
Summary
| Category | TP | FP | FN | Precision | Recall | F1 |
|---|---|---|---|---|---|---|
| injection | 21 | 5 | 7 | 80.8% | 75.0% | 77.8% |
| secrets | 9 | 2 | 1 | 81.8% | 90.0% | 85.7% |
| xss | 5 | 0 | 1 | 100.0% | 83.3% | 90.9% |
| path-traversal | 5 | 2 | 0 | 71.4% | 100.0% | 83.3% |
| ai-safety | 8 | 2 | 3 | 80.0% | 72.7% | 76.2% |
| OVERALL | 48 | 11 | 12 | 81.4% | 80.0% | 80.7% |
Per-Category Details
injection
| File | Rule ID | Verdict |
|---|---|---|
| sql-concat.js | code.sql-injection |
TP |
| sql-concat.js | taint.sql-injection |
TP |
| sql-concat2.js | code.sql-injection |
TP |
| sql-concat2.js | taint.sql-injection |
TP |
| sql-concat3.js | code.sql-injection |
TP |
| sql-template.js | db.sql-template-literal |
TP |
| sql-template.js | taint.sql-injection |
FN |
| sql-template2.js | db.sql-template-literal |
FN |
| sql-template2.js | taint.sql-injection |
TP |
| sql-fstring.py | py.sql-injection |
TP |
| sql-sprintf.go | go.sql-fmt-sprintf |
TP |
| sql-sprintf.go | go.sql-injection |
FP |
| sql-raw-rb.js | code.sql-injection |
TP |
| sql-kotlin.kt | kotlin.sql-injection |
TP |
| sql-csharp.cs | csharp.sql-injection |
FN |
| sql-csharp.cs | code.sql-injection |
FP |
| cmd-concat.js | taint.command-injection |
TP |
| cmd-concat.js | ast.command-injection |
TP |
| cmd-template.js | taint.command-injection |
TP |
| cmd-template.js | ast.command-injection |
TP |
| cmd-py.py | py.os-system |
TP |
| cmd-py2.py | py.subprocess-shell-true |
TP |
| cmd-go.go | go.command-injection |
TP |
| eval-input.js | ast.eval-dynamic |
TP |
| eval-input.js | code.eval |
FN |
| eval-template.js | code.eval |
FN |
| eval-template.js | ast.eval-dynamic |
TP |
| eval-template.js | taint.code-injection |
FP |
| nosql.js | injection.nosql |
FN |
| proto-poll.js | injection.prototype-pollution |
FN |
| proto-poll.js | ast.mass-assignment |
TP |
| sql-parameterized.js | taint.sql-injection |
FP |
| cmd-array.js | taint.command-injection |
FP |
secrets
| File | Rule ID | Verdict |
|---|---|---|
| openai-key.js | secret.openai-key |
TP |
| github-token.js | secret.github-token |
TP |
| stripe-key.js | secret.stripe-live-key |
TP |
| stripe-key.js | secret.generic-credential |
TP |
| stripe-key.js | stripe.key-in-client |
FP |
| slack-token.js | secret.slack-token |
TP |
| gitlab-token.js | secret.gitlab-token |
TP |
| sendgrid-key.js | secret.sendgrid-key |
TP |
| npm-token.js | secret.npm-token |
TP |
| npm-token.js | secret.high-entropy |
FP |
| gcp-key.js | secret.gcp-api-key |
FN |
| private-key.js | secret.private-key |
TP |
xss
| File | Rule ID | Verdict |
|---|---|---|
| reflected-xss.js | xss.reflected-response |
TP |
| reflected-xss2.js | xss.reflected-response |
TP |
| reflected-xss3.js | xss.reflected-response |
TP |
| innerhtml.js | injection.xss-angular-innerHTML |
TP |
| dangerously-html.jsx | react.dangerous-html |
TP |
| vue-v-html.js | injection.xss-vue-v-html |
FN |
path-traversal
| File | Rule ID | Verdict |
|---|---|---|
| read-concat.js | taint.path-traversal |
TP |
| sendfile.js | taint.path-traversal |
TP |
| read-template.js | taint.path-traversal |
TP |
| read-template.js | ai.tool-broad-file-access |
FP |
| write-concat.js | taint.path-traversal |
TP |
| unlink-concat.js | taint.path-traversal |
TP |
| allowlist.js | taint.path-traversal |
FP |
ai-safety
| File | Rule ID | Verdict |
|---|---|---|
| user-in-system-prompt.js | ai.user-input-in-system-prompt |
TP |
| llm-output-exec.js | ai.llm-output-exec |
TP |
| llm-output-exec.js | ai.llm-output-shell |
TP |
| llm-output-exec.js | taint.command-injection |
FP |
| llm-output-exec.js | ast.command-injection |
FP |
| agent-loop-no-cap.js | ai.agent-loop-no-cap |
TP |
| model-id-user-input.js | ai.model-id-injection |
TP |
| tool-result-injection.js | ai.tool-result-injection |
FN |
| agent-memory-poison.js | ai.memory-poisoning |
FN |
| tool-poisoning.js | ai.tool-poisoning |
TP |
| tool-poisoning.js | ai.mcp-description-injection-deep |
TP |
| prompt-extraction.js | ai.prompt-extraction |
FN |
| llm-output-dom.js | ai.llm-output-dom |
TP |
Methodology
- True Positive (TP): Expected rule fires on a vuln file.
- False Positive (FP): Any finding on a clean file, or an unexpected rule on a vuln file.
- False Negative (FN): Expected rule that did not fire on a vuln file.
- Precision = TP / (TP + FP)
- Recall = TP / (TP + FN)
- F1 = 2 * (Precision * Recall) / (Precision + Recall)
Generated: 2026-07-11T23:53:17.994Z
<!-- BENCHMARK:END -->
<div align="center"> <h2>๐ Privacy Guarantee</h2> </div>
VibeGuard never sends your code, secrets, API keys, or personal information anywhere.
| What | Network? | When |
|---|---|---|
vibeguard scan |
Never | Local file read + regex match |
vibeguard fix |
Never | Local file edit |
vibeguard install |
Never | Local config write |
vibeguard mcp |
Never | stdio transport only |
vibeguard cve |
Opt-in | Package name โ OSV.dev (free API) |
vibeguard url |
Opt-in | URL you type โ fetch headers |
--verify-keys |
Opt-in | Key โ provider that owns it |
No telemetry. No analytics. No tracking. No data collection. No uploads.
<div align="center"> <h2>โ๏ธ Presets</h2> </div>
vibeguard preset nextjs # Next.js + React
vibeguard preset django # Django + Python
vibeguard preset rails # Ruby on Rails
vibeguard preset spring # Spring Boot + Java
vibeguard preset aws # AWS / Terraform
vibeguard preset gcp # Google Cloud
vibeguard preset azure # Azure
vibeguard preset api # REST / GraphQL API
vibeguard preset mobile # React Native / mobile
vibeguard preset fullstack # all rules (maximum coverage)
<div align="center"> <h2>๐ง CI/CD</h2> </div>
vibeguard init-ci # GitHub Actions (SARIF + fail on CRITICAL)
vibeguard install-hook # git pre-commit hook (blocks on critical)
vibeguard install-hook-post # PostToolUse hook (auto-scan after AI edits)
vibeguard pr-comment # GitHub PR comment format (markdown)
Templates included for: GitLab CI, Jenkins, CircleCI, Azure Pipelines.
<div align="center"> <h2>๐ป Languages & Frameworks</h2> </div>
Languages (14): JavaScript, TypeScript, Python, Go, Java, Ruby, PHP, C#, Rust, Kotlin, Swift, Bash, SQL, YAML
Frameworks (20+): Next.js, React, Remix, Astro, SolidStart, SvelteKit, Nuxt, Django, Flask, Rails, Laravel, Spring Boot, NestJS, Fastify, Express, Hono, tRPC, Gin, Echo, Drizzle, Prisma, Sequelize, TypeORM, Kysely, MikroORM, Convex, Turso, Clerk, Auth.js, Supabase, Firebase, Stripe, Polar, LemonSqueezy, Resend, Upstash, Pinecone, PostHog, Uploadthing
Compliance: SOC 2, PCI-DSS, HIPAA, GDPR, ISO 27001, EU AI Act
<div align="center"> <h2>๐ ๏ธ Development</h2> </div>
npm install
npm test # 263 tests
npm run benchmark # precision/recall/F1 benchmark
npm run counts # self-generating rule/tool counts
npm run lint # 0 errors
npm run coverage # coverage report
<div align="center"> <h2>๐ Honest Scope</h2> </div>
VibeGuard catches the mechanical security holes that AI tools leave behind. It does NOT:
- Prove your app is safe or leak-proof
- Track personal data end-to-end through your app automatically
- Judge business logic flaws
- Replace a real security review for anything touching money, auth, or personal data
It raises the floor fast โ catching the holes that AI tools create by default.
<div align="center"> <h2>๐ License</h2>
MIT โ Free forever. No ads. No tracking. No data collection.
</div>
<div align="center">
<!-- Author Section with Animation --> <img src="https://readme-typing-svg.herokuapp.com?font=Fira+Code&weight=600&size=22&duration=2500&pause=500&color=2E75B6¢er=true&vCenter=true&random=false&width=400&lines=Made+with+%E2%9D%A4%EF%B8%8F+by+Yagyesh+Vyas" alt="Made by Yagyesh Vyas" />
<br/>
<a href="https://www.linkedin.com/in/yagyeshvyas/"> <img src="https://img.shields.io/badge/LinkedIn-%230077B5.svg?style=for-the-badge&logo=linkedin&logoColor=white" alt="LinkedIn" /> </a> ย <a href="https://github.com/yagyeshVyas"> <img src="https://img.shields.io/badge/GitHub-%23121011.svg?style=for-the-badge&logo=github&logoColor=white" alt="GitHub" /> </a> ย <a href="https://www.npmjs.com/package/@yagyeshvyas/vibeguard"> <img src="https://img.shields.io/badge/npm-%23CB3837.svg?style=for-the-badge&logo=npm&logoColor=white" alt="npm" /> </a>
<br/> <br/>
<p><b>โญ If VibeGuard helped you, star the repo!</b></p>
<p>Found a bug? <a href="https://github.com/yagyeshVyas/VibeGuard/issues">Open an issue</a> ยท Want to contribute? <a href="https://github.com/yagyeshVyas/VibeGuard/pulls">Submit a PR</a></p>
<br/>
<p><sub>VibeGuard v0.1.0 ยท MIT License ยท 693 rules ยท 75 MCP tools ยท 13 defense layers ยท $0 cost ยท zero telemetry</sub></p>
</div>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.