VibeScan
Security scanner for AI-generated (vibe-coded) code
The Problem
AI coding tools (Cursor, Claude, Copilot) generate code fast — but 45% of it has security vulnerabilities (Veracode 2025). Existing scanners (GitLeaks, TruffleHog) scan for secrets only. They miss what VibeScan catches.
Architecture
Features
| Feature | Status |
|---|---|
| 14 secret patterns (AWS, OpenAI, GitHub, Stripe, JWT, DB URLs…) | ✅ |
| Shannon entropy detection (unknown tokens) | ✅ |
| 22 AI-specific vulnerability patterns | ✅ |
| Live secret validation (GitHub + OpenAI tokens) | ✅ |
| Auto-fix suggestions with safe code snippets | ✅ |
| Git hooks (block push on CRITICAL) | ✅ |
| GitHub Actions PR bot | ✅ |
| HTML report + Security dashboard (0–100 score, A–F grade) | ✅ |
| Config file with allowlist & baseline | ✅ |
| Zero cost · Works offline · MIT license | ✅ |
Quick Start
# Install — one time
pip install vibescan-ai
# Scan any project
vibescan scan .
# Save HTML report
vibescan scan . -o report.html
Output: File | Line | Issue | Risk | Match in a colorful Rich table.
📸 Screenshots
| Feature | Image |
|---|---|
| Terminal Output | |
| HTML Report | |
| Security Dashboard |
Demo
VibeScan v1 Demo | VibeScan v2 Demo
Usage
# Scan current folder
vibescan scan .
# Scan specific folder
vibescan scan path/to/your/project
# HTML report
vibescan scan . -o report.html
# Security dashboard (0-100 score + A-F grade)
vibescan scan . -d dashboard.html
# JSON export (CI/CD integration)
vibescan scan . -j results.json
# Fast scan — secrets only, skip AI patterns
vibescan scan . --no-vibe
# Fail on critical (exit code 1 for CI/CD)
vibescan scan . --fail-on-critical
# Verify if detected secrets are live or revoked
vibescan scan . --validate
Detected Issues
Secrets
AWS Access Key · AWS Secret Key · OpenAI API Key · GitHub Token / OAuth / PAT · Google API Key · JWT Token · Database URL (PostgreSQL / MongoDB / MySQL / Redis) · Generic API Key · Generic Password · Private Key · Stripe Secret / Test Key · Slack Token · Hardcoded .env values
AI-Specific Vulnerabilities
Prompt injection · Unvalidated LLM input · Password / token logged · subprocess with shell=True · os.system() · Path traversal · .env served in route · Hardcoded admin credentials · Weak random module · yaml.load() · pickle.loads() · Missing rate limit on auth · Unvalidated file upload · Missing auth check · SQL injection via f-strings · Debug mode in production · CORS wildcard · Direct .env read · eval() usage
Why VibeScan Over GitLeaks?
| Feature | GitLeaks | VibeScan |
|---|---|---|
| Secret detection | ✅ | ✅ |
| Entropy analysis | ❌ | ✅ |
| AI-specific patterns | ❌ | ✅ |
| Missing auth detection | ❌ | ✅ |
| SQL injection check | ❌ | ✅ |
| Auto-fix suggestions | ❌ | ✅ |
| GitHub Actions / PR bot | ❌ | ✅ |
| Security dashboard | ❌ | ✅ |
| Cost | Free | Free |
Tech Stack
Python · Click · Rich · Jinja2 · Regex · Shannon Entropy · GitHub Actions
Installation (from source)
git clone https://github.com/tanikush/vibescan.git
cd vibescan
pip install -r requirements.txt
pip install -e .
Contributing
Pull requests are welcome. For major changes, open an issue first to discuss what you would like to change.
- Fork it
- Create your feature branch (
git checkout -b feature/my-change) - Commit your changes (
git commit -m 'Add: my new feature') - Push the branch (
git push origin feature/my-change) - Open a Pull Request
License
MIT — see LICENSE for details. Free forever. No license fees. No cloud lock-in.
Release files for vibescan-ai 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vibescan_ai-1.0.0.tar.gz | 3.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vibescan_ai-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.3 MB
Release files / vibescan_ai-1.0.0.tar.gz
| Download URL | vibescan_ai-1.0.0.tar.gz |
|---|---|
| Size | 3.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00c35a8708d6e3cf8c5ea99d802c4dcdf89685046bf5359318f0dbd8c9a82a87
|
|
BLAKE2b-256 checksum How to use checksums |
160504485b9ad4a721bcdadb55ff7d30ea952f1d59bada3f078825480d1a96c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / vibescan_ai-1.0.0-py3-none-any.whl
| Download URL | vibescan_ai-1.0.0-py3-none-any.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1bb8915fc9d09088d8cab71a4818328a2668be06e3866fa52d5550ca9211bd97
|
|
BLAKE2b-256 checksum How to use checksums |
1bfd830cb654ac42b52b0812ee297bb20e06614ee526ac8b010db710fcfe4182
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|