The 1-hour cache you already have, and the one that would cost more

Issue #3876. CC 2.1.243 added promptCacheTtl and subagentPromptCacheTtl. The Fable 5.1 divergence review ranked "both unset" as the top cost exposure and asked for a measurement of idle gaps before any policy. This is that measurement.

What the usage payload already says

Every assistant turn carries usage.cache_creation.ephemeral_5m_input_tokens and ephemeral_1h_input_tokens, so the TTL each write used is observable from any transcript. 14 days, one workstation, 1,657 main and 1,972 subagent transcripts, 170,367 turns.

kindturnswrites on 1h TTLturns after a 5 to 60 min gapwrite tokens in those turnsshare of all writes
main sessions92,05394% (no setting present)1,860 (2.0%)87.1 MTok7.6%
subagents78,3140.01%161 (0.2%)27.6 MTok2.8%

Two facts the review did not have. On a subscription the main conversation is already on the 1-hour cache; the setting is for API-key and cloud-provider users. Subagents do evict (in the 5 to 15 minute bucket their writes are 22.7 MTok against 4.6 MTok of reads, the shape of a gone prefix), but that is 134 turns in two weeks.

Break-even slider

A 1-hour TTL makes every write cost 2x input instead of 1.25x, and turns re-writes after 5 to 60 minute gaps into 0.025x reads. Drag the share of write tokens that are such re-writes; the meter shows the 14-day delta at Fable 5.1 list price on the subagent write volume measured above (974 MTok).


Break-even from the ratios alone: (2.0 - 1.25) / (2.0 - 0.025) = 38%. Opus tiers (read 0.1x) land at 39.5%. Prices are list arithmetic, not a measured bill.

Verdict and how to re-check

Leave both keys unset. The eviction cost is real and small; the premium on every write is large and certain. Re-measure when fan-out patterns change, for example long Monitor waits inside subagents:

python3 scripts/measure-cache-gaps.py --days 14

Method note: streaming writes several assistant rows per API turn with identical usage; the script keeps the first row of each turn (rows under 0.5 s apart are dropped) or the turn count inflates.