When the Control Was the Failure

The DLP control that removed its own evidence binding

A broad high-entropy detector correctly treated a value as suspicious, then removed the digest that made a safety receipt verifiable. The answer was a typed exception, not a weaker detector.

Published
Evidence state
Historical control-design finding on my own tooling, generalized with synthetic examples

The detector found something suspicious because the evidence looked like a secret

Data-loss prevention rules often look for high-entropy strings. That is a reasonable signal: many credentials, private keys, and tokens look random and have no natural-language context around them.

Cryptographic digests have the same property. They are deliberately high-entropy strings.

In one evidence workflow, a receipt carried a digest that bound a plan, a result, and the artifacts used to produce it. Removing the digest did not just redact an incidental detail. It removed the link that let a later reviewer tell whether the receipt belonged to the thing it claimed to describe.

The DLP rule had done its local job: it saw a secret-shaped value and removed it. The receipt then survived in a form that looked safe but could no longer be verified.

A redacted receipt can be a misleading receipt

There are two different kinds of redaction:

The first improves safety. The second can convert a truthful record into an uncheckable assertion.

Suppose a receipt says that a review passed, but the binding to the reviewed plan is gone. A future reader cannot determine whether the result came from this plan, an earlier draft, or an unrelated run. The record may still be accurate, but it no longer proves enough to support a consequential decision.

That is especially dangerous because the absence is quiet. A clean-looking redaction can be mistaken for a complete receipt unless the verifier knows which fields are mandatory.

Do not solve this by allowing all hashes

The tempting repair is a global exception: “ignore digest-shaped strings.” That would create a new blind spot for values that resemble digests, including real credentials in an inconvenient format.

The safer pattern is a typed, path-bound exception. It permits a digest only when all of the following are true:

  1. the record matches one narrowly defined receipt schema;
  2. the field name is an expected binding field, not an arbitrary text field;
  3. the value has the expected algorithm and format;
  4. the record appears only in an approved evidence location;
  5. the surrounding receipt passes its own structural validation; and
  6. similar values outside that structure are still detected and blocked.

The allow rule is therefore not “this string is harmless.” It is “this exact kind of evidence needs this exact field to remain verifiable.”

The tests have to attack the exception

An exception is complete only when its failure modes are tested. The useful negative cases are more important than the happy path:

Test Expected result
Valid receipt with its required binding Allowed and independently verifiable.
Same-looking value in prose or configuration Detected rather than allowed.
Valid field name in the wrong record type Rejected.
Valid record with a modified digest Receipt verification fails.
Receipt missing the binding Rejected as incomplete, not silently accepted.
Secret-shaped value in an approved directory Still detected unless it occupies the typed field.

This test set changes the discussion from “make the scan stop complaining” to “prove that the new rule preserves both confidentiality and evidence.”

Controls need a shared vocabulary for evidence

DLP, logging, audit receipts, backups, and build systems are often designed as separate layers. Their interactions are where subtle failures appear.

A practical fix is to give evidence artifacts a small, explicit vocabulary:

That makes it possible for the DLP policy and the receipt verifier to agree on what must remain. It also keeps a later change from relaxing a detector merely because a different system did not label its evidence precisely enough.

The principle is simple: protect secrets aggressively, but do not confuse evidence binding with a secret. If a control removes the only way to verify a claim, the control needs a narrower design—not a broader bypass.

Three commentaries

These are invited responses to the article's argument and its possible evolution. They are viewpoints, not independent reviews, endorsements, or evidence for the claims above.

Codex

This is a sharp example of a control succeeding locally while weakening the system that needed to verify it. The typed exception is more durable than a broad allowlist because it preserves both data protection and evidence binding. Next, the interaction contract should have a versioned negative test so either the DLP rule or verifier schema fails visibly when their shared assumptions drift.

Qwen, local model

The insight that DLP can inadvertently destroy evidence integrity is crucial, showing how security controls can conflict with auditability. By treating digests as secrets, the system removed the binding that made receipts verifiable, creating a dangerous blind spot. The proposed typed exception is a strong step forward. To evolve this, organizations should implement a control interaction map that explicitly documents how DLP, logging, and verification systems interact, ensuring that evidence schemas are designed to survive security filtering. This prevents future conflicts where one control’s success becomes another’s failure.

Claude

The distinction between redacting what a reviewer doesn't need and redacting what makes a record checkable is the insight, and refusing the global hash exemption is the right instinct. The cost is coupling: the detector and the verifier now share a schema that will drift apart over time. I'd add the drift case to the test table—unknown schema version, verifier fails closed rather than assuming.


If this overlaps with something you are working on

Send me a short note describing the workflow, what is frustrating about it today, and any data, timing, or approval constraints that matter. Start a conversation.

How I use AI in my writing