Multi-target scanning
Scan your SPA frontend (form auth) and Supabase API (JWT auth) in one
casa-ready scan invocation. Per-target ZAP context, per-target findings,
one aggregated TAC bundle.
Open source · MIT · Built in the open
If your app uses restricted Gmail, Drive, or Calendar scopes, Google requires an annual CASA Tier 2 assessment. Two paths exist: TAC Security's official lab ($540–$1,800/year, but you're on your own for a 50-question SAQ and the OWASP ZAP setup), or a pen-test from a security consultancy (typically thousands to tens of thousands, plus weeks of back-and-forth). CASA Ready is an open-source toolkit that automates the scan, scaffolds the config, and gives you the playbook the lab doesn't include.
v0.5.2 shipped June 10, 2026
It isn't the money. It's:
npm install -g casa-ready casa-ready init
Interactive prompts walk you through your app's URLs and login form (or Supabase
JWT auth). Writes a casa-ready.yml with IDE autocomplete wired up via
the published JSON Schema.
export CASA_READY_USER=test-user@your-app.com
export CASA_READY_PASS=test-password
casa-ready scan
Spins up OWASP ZAP in Docker with the right context, runs the baseline or full CASA
scan, writes TAC-portal-ready artifacts to scan-output/.
Scan your SPA frontend (form auth) and Supabase API (JWT auth) in one
casa-ready scan invocation. Per-target ZAP context, per-target findings,
one aggregated TAC bundle.
Native supabase-jwt auth type does the Supabase password login from
Node, then injects the JWT and anon key into every in-scope ZAP request via the
replacer addon. Fails fast with an actionable error if creds are wrong.
casa-ready.yml is a regular YAML file. The
$schema directive at the top wires up VS Code's YAML extension
for inline validation, autocomplete on every key, and schema-aware error messages.
${VAR} expansion keeps secrets out of the file.
Every ZAP container spawns as
casa-ready-<target>-<runId>
and the name is printed to stdout when the scan starts. No more guessing which
"competent_pasteur" container is yours.
A failed target gets reported in the summary; remaining targets still scan. The process exit code is non-zero only if something actually failed. CI-friendly.
MIT licensed. Every release is exercised against real applications before it ships — the rules knowledge base and scan flavors come from findings on live targets, not synthetic test pages.
| Version | Scope | Status |
|---|---|---|
| V1.0 | Anonymous + form-auth ZAP scan, single target | Shipped Apr 29, 2026 — v0.1.0 |
| V1.1 | Multi-target scanning + supabase-jwt auth | Shipped Apr 29, 2026 — v0.2.0 |
| V1.2 | YAML config + init command + JSON Schema + TS types | Shipped May 1, 2026 — v0.3.0 |
| V2 | Endpoint seeding (seedDir/seedUrls) shipped; OAuth callback active-scanning experimental | v0.4.x — May 1, 2026 |
| Triage | casa-ready triage — classifies findings into Actionable / SAQ-explainable / Noise, plus the casa-ready Claude Code plugin skill | Shipped May 29, 2026 — v0.5.x |
| V2.1 | OAuth callback active-scan rewrite (custom hook bypassing zap-api-scan normalization) | Next |
| V3 | casa-ready saq — SAQ Copilot drafting answers from repo + cloud config | Once V1/V2 produce real scan output to feed it |