Your AI-built app. One question:
is it safe to ship?
Paste a public GitHub repo. Greenlit scans it for the security problems AI-generated code reliably introduces and gives you one verdict:
We never store your code. The repo is cloned to a temporary directory, scanned, and deleted. What persists is the report — findings only, with evidence snippets redacted — at a permanent link you can share. Public repos up to 100 MB; no accounts, no sign-up.
- 48
- AI-built apps scanned
- 65%
- weren't safe to ship
- 2,135
- findings
From our corpus of public vibe-coded apps — every repo pinned to a commit, findings hand-labelled.
We scan ourselves
Greenlit's own repo goes through the same scan as everyone else's. Latest verdict: Ship — score 100 (scanned 2026-09-22). Read the report.
What that looks like in practice
An admin password of “1234”
One app shipped with its admin password literally set to “1234” — and code that restores it whenever the config file goes missing. Deleting the config resets the app to broken.
A rate limiter on the wrong endpoint
One app configured a rate limiter, used it on the cheap endpoint, and forgot it on the endpoint that makes three LLM calls per request. The expensive route was the unguarded one.
118 “secrets” flagged. 2 were real.
Off-the-shelf tools flagged 118 secrets across the corpus; hand-verification confirmed genuinely private credentials in 2 repos — the rest were publishable keys and sample data. Greenlit measures itself against hand-labelled ground truth (100% precision on the labelled set) so you don't chase ghosts.
What it checks
- Secrets
- API keys, DB URLs and JWT secrets in source or committed .env files
- Auth & access
- Routes with no auth, role checks only in the UI, open CORS
- Data flow
- PII sent to third parties, analytics capturing form contents
- Dependencies
- Hallucinated packages, typosquats, abandoned libs, known CVEs
- AI smells
- Tests that assert nothing, catch-all error handlers, TODO validation
- Missing basics
- No rate limiting, no input validation, secrets in the client bundle
How the verdict works
Score starts at 100 and drops per finding, weighted by severity and confidence. Any critical secret means Do not ship, whatever the arithmetic says. Style nits never move the score — the verdict is about what would actually burn you in production.
The merge gate
Coming to GitHub MarketplaceThe same engine runs as a GitHub App. It scans every pull request, annotates findings on the diff, reads AI-Authored commit trailers to attribute which changes came from AI tools, and blocks the merge on critical or high findings.
| Critical | 0 | |
| High | 1 | blocks the merge |
| Medium | 2 | |
| Low | 3 |
Merging stays blocked until the high-severity finding is fixed.
Want the gate on your private repos?
Leave an email.
Used only to announce the private-repo gate — nothing else, and never shared.
How it works — and what we never do
- Clone, scan, delete
- Your repo is cloned to a temporary directory, scanned, and deleted the moment the scan finishes.
- Secrets never reach the AI pass
- gitleaks runs first; anything it finds is redacted before the Claude review sees a line of code.
- Reports persist, code never does
- The permanent link holds findings with short, redacted evidence snippets — never your source.
Questions
- Why does AI-generated code need its own security scan?
- AI coding tools like Cursor, Claude Code, Lovable and Bolt produce working apps fast, but they repeat the same mistakes: API keys committed to the repo, routes with no auth check, role checks that only exist in the UI, packages that don't exist, and tests that assert nothing. Greenlit's rules target exactly those patterns instead of burying you in generic lint.
- Is Greenlit free?
- Yes. Scanning a public GitHub repo up to 100 MB is free, with no account and no sign-up.
- Do you store my code?
- No. The repo is cloned to a temporary directory, scanned, and deleted as soon as the scan finishes. Only the report persists — findings with short, redacted evidence snippets — at a permanent link you can share.
- What does the scan actually run?
- Semgrep with rules written for AI-code failure patterns, gitleaks for hardcoded secrets, osv-scanner for vulnerable dependencies, and a Claude review pass for problems pattern-matching can't see. Secrets are redacted before any code reaches the language model.
- How long does a scan take?
- A couple of minutes for a typical vibe-coded app. If the same commit was scanned recently, you get the existing report instantly.
- Can it scan private repos or check pull requests?
- The free scanner only handles public repos. A GitHub App that runs the same checks on every pull request — and blocks the merge on high-severity findings — is in the works.