What
Before each request, Claude Code tidies up the conversation into a standard form, called normalization. The prompt cache lets the service reuse the start of a conversation it has already seen, which only works if that start stays exactly the same. A new cache keeps that start stable:
- Messages already sent are kept as stable objects, so identical copies are reused.
- Checkpoints of the normalization pass are saved and later requests resume from them instead of starting over.
CLAUDE_CODE_NORMALIZE_PREFIX_CACHEset to false turns it off and set to true turns it on. There is also a kill switch.- Without the variable, the server value
tengu_wise_salamanderdecides. It is used only if it is a number greater than 0 and at most 1, and the built-in fallback is 0, which leaves the feature off when neither supplies a value. Nothing has been read about this switch. - With
CLAUDE_CODE_NORMALIZE_PREFIX_CACHE_VERIFYset, a resumed pass is compared with a full pass. If they differ, the full pass is sent and every later request in that process is normalized in full. Whether this check runs depends on a self-check share value, not a plain switch.
Why
Where it is active, this could change how often the prompt cache is reused and so how many tokens requests cost. The verify mode falls back to the full pass if the shortcut ever gives a different result.
tengu_wise_salamander Not enough to sayNothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.
This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.319: not a boolean we can read
These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.
Read once, for one account on one subscription tier, against v2.1.319. It isn't a statement about your account. What a flag value here can and cannot tell you
New in this build: tengu_wise_salamander