Security & Data Handling
RootFetch is designed to publish only safe aggregates.
- No secrets are committed to git (`.env`, `.env.mcp`, tokens are local-only).
- No raw zone files are stored or committed (`*.zone`, `*.zone.gz`, `*.txt.gz`).
- Vercel runtime is read-only; CZDS ingestion runs locally only.
- Public site serves committed aggregates under `/rootfetch/*` only.
- `.ai/` is agent workspace and never committed.
- MCP endpoint enforces bearer-token and origin allowlist checks; no PII is exposed.
Threat Model
Short version
Primary risks: secret leakage, accidental publication of raw zone data, and exposing mutable ingestion runtime to the public app.
Mitigations: strict gitignore + staged-path checks, aggregate-only artifacts, read-only Vercel serving path, and protected MCP endpoint.
How To Verify
Run these locally from the repository root.
git ls-files | rg -n '(^\.ai/|(^|/)\.env($|\.|/)|\.zone$|\.zone\.gz$|\.txt\.gz$)' || true
python - <<'PY'
import json
print(json.load(open('data/signals/security_status_latest.json')))
PY