greenlit.shSecurity scans for AI-generated code

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:

ShipFix firstDo not ship

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 Marketplace

The 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.

GreenlitFix firstscore 84/100 · 1 blocking finding
Critical0 
High1blocks the merge
Medium2 
Low3 
Merge blocked

Merging stays blocked until the high-severity finding is fixed.

Illustration of the pull-request check — not a screenshot.

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.