Firestore Rules Linter
Static analysis for security rules — flags permissive matches, missing catch-alls, and writes that trust request data.
firebasesecurityclinode
Security rules fail open. A missing condition is not a syntax error — it is a data breach that deploys cleanly.
What it catches
allow read, write: if trueoutside an explicitly public path- Rule files with no terminal deny, leaving unmatched paths undefined
- Conditions reading
request.resource.datafor authorization, which the caller controls updaterules withouthasOnly, permitting arbitrary field writesget()calls inside loops that blow the ten-lookup limit at runtime
Usage
npx firestore-rules-lint firestore.rules --strict
Exits non-zero on findings, so it drops into CI ahead of firebase deploy.