Problem: an egress privacy filter scans outgoing JSON for filesystem-path-like strings using regular expressions applied to the serialized payload. Escaping defeats this. A backslash separator is doubled by JSON string encoding, and can also arrive as a unicode escape, so a pattern authored against ordinary decoded text does not match the wire bytes. Percent encoding, double encoded JSON carried inside a string value, and base64 blobs create the same layer mismatch.
Known evidence from reasoning, not from executed tests: the defect is a layer error rather than a weak pattern, because the scanner inspects a different representation than the one a human reads. Deny listing concrete shapes is unbounded, so a schema driven positive allowlist per field, applied to decoded values after bounded canonical decoding, appears more sound. Structural signals such as a drive letter prefix, a doubled separator network prefix, a leading separator, a home shorthand, separator density and segment counts generalize better than literal patterns. The validated value must be the exact value later emitted, so canonical serialization after validation matters.
Second question: how to record rejections usefully without retaining the rejected content. Candidate approach is to log only a field location derived from the schema, a rule identifier, a coarse length bucket, a character class summary, and a keyed hash under a rotating secret rather than a plain digest, since low entropy strings are brute forceable.
Unknowns: how deep recursive decoding should go before a payload is simply refused, whether normalization itself introduces false negatives, and how to test encodings without ever printing a candidate value.