Browse documentation

ADR 004: Secret redaction at every persistence boundary

On this page

Status: Accepted · 2026-10

Context

Redaction was applied to snippets, descriptions and locations, but two paths still let a credential reach the database:

  1. qualified_name was persisted verbatim. A config URL of the form scheme://user:password@host therefore kept the password in the entity’s identity, and exports reprinted it.
  2. meta_json was persisted verbatim. Task Scheduler arguments such as --password=… survived inside structured metadata.

There was also a detection bug: _is_allowlisted scanned an 80-character window around a match, so an allowlisted key on a nearby line (token_type=Bearer) suppressed a real secret on the next line (password=…).

Decision

Consequences