π All member features free until June 30, 2026 β Star the repo and sign in. No credit card. No catch.
Β· β Sign in with GitHub β
π v4.5 β ZIP Scan Β· GitHub Login Β· 51 patterns Β· 9 languages
AI writes the bugs. AINAScan catches them.
Deterministic AST analysis β no LLM, no false surprises. Precision 100%, Recall 100%, F1 100% on 90-case benchmark.
terminal β ~/myproject
β
total scans
β
findings caught
0
patterns
0
languages
100%
F1 score (90 cases)
The problem
AI-generated code has repeating patterns of failure
Claude, GPT, and Cursor reliably produce these bugs. They look correct on the surface. They break in production.
BLOCKMISSING_WRITE
# AI writes this β looks complete
def save_user(name, email):
user = {"name": name, "email": email}
return {"status": "saved"}# No INSERT. Data silently vanishes.
BLOCKSQL_INJECTION_RISK
# Copy-pasted from every tutorial
def get_user(user_id):
return db.execute(
f"SELECT * FROM users WHERE id='{user_id}'"
)
WARNFAKE_ASYNC
# async keyword, zero benefitasync def fetch_data(url: str):
# Blocks the event loop
return requests.get(url).json()
BLOCKCOMMAND_INJECTION
# AI uses shell=True constantly
def run(cmd):
subprocess.run(
f"process {cmd}",
shell=True # β exploit here
)
These exact patterns appear repeatedly in AI-generated codebases. Semgrep missed them all.
You must star the repository to activate your account
New in v4.0
ZIP / Folder Scan π
Upload a ZIP of your whole project. AINAScan checks every source file in parallel β up to 200 files.
π Member only. β Star the repo & sign in to unlock ZIP scan.
β Member β up to 200 files per ZIP Β· max 50 MB
Compared against common static analysis tools. Synthetic test cases based on real AI-generated bug patterns.
Finding
AINAScan
Semgrep (free)
Bandit
Claude inline
COMMAND_INJECTION (shell=True + user input)
β BLOCK
β
β
β
COMMAND_INJECTION (f-string in subprocess)
β BLOCK
β
β
β
PATH_TRAVERSAL (open with user path)
β BLOCK
β οΈ partial
β
β
MISSING_WRITE (no INSERT in save fn)
β BLOCK
β
β
β
FAKE_ASYNC (blocking event loop)
β WARN
β
β
β
LLM_OUTPUT_INJECTION (AI output β eval)
β BLOCK
β
β
β
Live stats
Pattern leaderboard
Most commonly detected patterns across all real-world scans. Updated live.
#
Pattern
Frequency
Count
Loadingβ¦
API
Integrate in 30 seconds
REST API. Free key included. Works with any language that can do HTTP.
bash
# Scan a file (free β no signup)
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"
# Get auto-fix suggestions
curl -X POST https://pleasing-transformation-production-90c2.up.railway.app/v1/fix \
-H "X-API-Key: vg_free_test" \
-F "file=@your_file.py"
# Install CLI
pip install aina-scan
aina-scan config --key vg_free_test
aina-scan scan your_file.py
Trust & Privacy
We never see your code.
This isn't a policy promise β it's the architecture. Here's exactly what happens to your files.
π¬
Analyzed in memory, never saved
Your file is read into RAM, scanned by our AST engine, and the buffer is released immediately.
No file is written to permanent storage. Python temp files used during analysis are deleted
within the same request lifecycle.
ποΈ
What we actually store
We store: filename (not path), issue type (e.g. COMMAND_INJECTION), line number, severity.
We never store: source code, function bodies, variable values, file contents, or any data that can reconstruct your code.
π
Scan history is yours
Scan history (filename, verdict, timestamp) is stored per API key in server memory β it resets on redeploy.
We don't persist scan results to a database. Member login stores only your GitHub public profile
(login, avatar) via OAuth.
β
Verifiable β not just a promise
The api.py source is the entire backend.
You can scan it with AINAScan itself (we do). No hidden services, no data pipelines, no analytics SDKs.
SQLite schema: fp_store (FP reports),
users (GitHub profile),
vg_scan_log (vuln_type + 0/1 flag only).
Member ZIP / Folder Scan limits:
20 scans/day Β· 500 MB total upload/day Β· resets at midnight UTC.
These limits exist to prevent abuse β not to monetize your usage. Normal development workflows
(scan once per PR, a few times per sprint) will never hit them.
Free period:
All member features are free until June 30, 2026.
After that, ZIP scan and auto-docs will require a Pro subscription ($19/mo).
Single-file scan stays free forever.