concept · concepts/Allowlist over Blocklist.md
Allowlist over Blocklist
For sensitive data, name what you keep and drop everything else (allowlist), rather than enumerating what to exclude (blocklist). An allowlist fails closed; a blocklist leaks by omission the moment a new sensitive field appears that nobody remembered to ban.
Explanation
The source (Working Heuristics — Data, Matching, Product, Org, Tooling) applies this to ingestion: allowlist, not blocklist, for sensitive fields — name the fields you intend to keep and drop the rest, so sensitive data can't leak by omission. The asymmetry is the whole point:
- A blocklist is only as complete as your memory of every sensitive field. Add a new source column tomorrow, forget to ban it, and it flows straight through. The default is expose.
- An allowlist flips the default to deny. A field you didn't explicitly admit simply doesn't pass. New, unanticipated sensitive fields are excluded automatically — the safe failure mode.
Why it matters / where it shows up
- It fails in the safe direction. When you're wrong (and you eventually will be), an allowlist errs toward dropping a field, a blocklist toward leaking one. Choose the mistake you can live with.
- It's a Data Contract decision. What to expose is part of the contract; this heuristic says express that contract as an allowlist.
- Same shape as Control-Flow Integrity. CFI is default-deny for control flow — only the edges in the legitimate control-flow graph are permitted, everything else is rejected. "Enumerate the legitimate, deny the rest" is one security principle showing up in both data handling and software security.
Open questions
- Allowlists can over-drop — silently losing a field a downstream consumer needed. How do you get the fail-closed safety without starving legitimate use?
Connections
- Data Contract — handling of sensitive fields is a contract decision; express it as an allowlist.
- Provable Inference — "model approval" is an allowlist of weights: a regulator accepts only responses proved against an approved model's commitment (Anthropic — Progress on Provable Inference for Large Language Models).
- Control-Flow Integrity — the software-security instance of the same default-deny, enumerate-the-legitimate stance.
- Pipeline Legibility — an explicit allowlist is also more legible than a scattered set of exclusion rules: the kept fields are stated in one place.
Sources
- Working Heuristics — Data, Matching, Product, Org, Tooling — "allowlist, not blocklist, for sensitive fields at ingestion."