How it works
Real attacks. Safe by design.
We test your app the way attackers do, inside guardrails that make it safe to run on the thing you just shipped.
Four steps
01
Connect
Paste your URL. Optionally link GitHub, Supabase or Firebase so we can see the whole stack.
02
Verify
Prove you own it with a DNS record, a file or a meta tag. Nothing beyond a browser-level look happens until you do.
03
Attack (safely)
We run the attacks that actually hit AI-built apps: leaked keys, open tables, broken access, injection. Throttled, scoped and non-destructive.
04
Fix
Every finding comes with a prompt for your AI tool, a ready-to-paste file, or a pull request. Re-scan confirms it.
Scan profiles
| Profile | Modes | What it does | Time | Request cap |
|---|---|---|---|---|
| Quick | Passive | What any browser can see: your JavaScript, headers, TLS, trackers and legal pages. | ~1 min | 150 |
| Standard | Authenticated · code · backend | Logs in as two test users to find broken access control, reads your repo and backend config. | 5–15 min | 3,000 |
| Deep | Active · write | Safe injection payloads, AI-feature attacks and canary write tests you explicitly allow. | 15–45 min | 15,000 |
| Launch | Everything + report | Deep plus the full lawsuit-risk module and a Launch Readiness Report. | 15–45 min | 15,000 |
The guardrails
Verification before anything active
Nothing beyond a browser-level look runs until you prove you control the target with a DNS TXT record, a file at /.well-known/redteam-verification.txt, a meta tag, or a platform connection. Shared hosting domains (like *.vercel.app) are verified per exact host.
Scope lock
Every request is checked against your verified scope, including after redirects. Third-party hosts we see are recorded but never tested. In our headless browser, requests to third parties are blocked instead of sent.
Gentle by default
5 requests per second per host by default. We halve the rate on HTTP 429 or 503 and stop after 20 consecutive server errors: “Your app started erroring, so we stopped to avoid harm.”
No data taking
Data-exposure checks count records instead of reading them. Evidence is truncated and redacted before storage. Secrets are stored only as a fingerprint and a mask like sk_l…9fQ2.
Safe payloads only
Injection tests use a reviewed allowlist of non-destructive payloads. No DROP, DELETE or UPDATE. Write tests create clearly marked canary records and delete them.
What we never do
- Never scan sites you can't prove you own
- Never download your users' data
- Never store your secrets
- Never run destructive payloads
- Never keep hammering if your app starts erroring
Automated testing finds common and high-impact issues. It can't prove an app is secure and isn't a substitute for a professional penetration test. Responsible Scanning Policy
