404. It is never on silently.
Matching is hierarchical
One clever hash would miss on real payment traffic where every request carries different amounts and references, so matching degrades in three steps:- exact: method, path, and the normalized request body hash.
- shape: method, path template, and the set of body fields, values ignored.
- sequence: the next unserved recording for that method and template.
Every response says where it came from
Each degradation explains which fields missed, so a shape-tier answer is never mistaken for an exact one.
What it needs
An agent upstream with the same name, or one linked with--upstream, and recordings under <data_dir>/recordings/<upstream>.ndjson. When the flag is on but no recordings are loaded yet, pikopod up says so and unmatched requests answer 404 until traffic is recorded.
Recordings are the redacted ones. Identifiers are tokens and unclassified strings were dropped, so a replayed body is the sanitized body. See Redaction.