AI writes bugs.
We catch them.

AINAScan detects 33 security vulnerabilities + 15 vibe-coding patterns in AI-generated code β€” deterministic AST, no LLM, always the same result.

9 languages 48 patterns 33 security + 15 vibe-coding No code storage GitHub Action ready
πŸŽ‰ Promo (until June 24): Use key vg_free_test for full Pro access β€” no signup required.
# Try it in 30 seconds
curl -X POST https://pleasing-transformation-production-90c2.up.railway.app/v1/scan \
  -H "X-API-Key: vg_free_test" \
  -F "file=@your_file.py"

What vibe-coding bugs look like

MISSING_WRITE

Save function with no write

AI generates save_user(data) that validates input but never runs INSERT or UPDATE.

FAKE_ASYNC

async with no await

async def fetch(): that never awaits β€” runs synchronously, blocking the event loop.

STUB_SKELETON

Placeholder functions

Functions that just return {} or return None with no real logic.

DEAD_CALL_RESULT

Ignored return values

Calls 3 external services, discards all results, returns a constant.

HARDCODED_TABLE

Dict instead of DB query

40-key hardcoded dictionary where a DB query belongs.

+ 10 more

SQL injection, SSRF, path traversal…

Plus 33 standard security patterns across 9 languages.

How it compares

AINAScanBanditSemgrepCodeRabbit
Vibe-coding patterns (15) βœ… Dedicated❌❌❌
Deterministic AST βœ…βœ…βœ…βŒ LLM
No code storage βœ…βœ…βœ…βŒ
9 languages βœ…βŒ Python onlyβœ…βœ…
GitHub Action βœ…βœ…βœ…βœ…
Free tier βœ… 50 files/dayβœ…limited❌

GitHub Action β€” PR security gate

# .github/workflows/vibeguard.yml
name: VibeGuard Security Scan
on: [pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Moonsehwan/aina-vibeguard-action@v1
        with:
          api-key: \${{ secrets.VIBEGUARD_KEY }}
          fail-on-block: 'true'
View on GitHub API Status GitHub Action