# Prompt caching: breakpoint placement and ordering

1. Mark cache breakpoints with `cache_control` set to `{"type": "ephemeral"}` on the blocks you want cached. You can define up to 4 breakpoints per request.
2. Order content from longest-lived to shortest-lived: tool definitions first, then the system parameter, then stable context like few-shot examples or reference documents, then the per-request user message last. The cache is a prefix cache; the first block that differs from the cached version invalidates everything after it.
3. Put the breakpoint on a block that stays byte-identical across calls. A timestamp, a request ID, or user-specific text placed before the breakpoint silently kills the hit rate while still costing you the cache-write tokens.
4. Validate you are caching at least the model's minimum token count (see the companion minimums skill). Anthropic's troubleshooting guidance says to confirm the breakpoint is on a block that stays identical across calls and that the minimum token threshold is met.
5. The default cache lifetime is 5 minutes from last use, and each use refreshes it at no extra cost. Design your breakpoint so the cached prefix is actually reused inside that window; a breakpoint on content that changes every call is pure overhead.
6. When caching different sections that change at different frequencies (tools rarely change, context updates often), use multiple breakpoints so the stable sections keep hitting while the volatile tail reprocesses.

Failure modes this prevents: a dynamic preamble that poisons every cache lookup; breakpoints on content below the minimum that never cache; paying cache-write pricing for a prefix that is never reused.
