Description
Prompt caching works correctly on Sonnet 4.5 and Opus 4.1, but is completely bypassed on Opus 4.5 and Haiku 4.5. The cache_control JSON and request structure are identical across all models.
Steps to reproduce
Tested with a sequence of API calls using the same cached content:
Sonnet 4.5 call: creates cache ✓
Opus 4.5 call: no cache read, no cache write
Haiku 4.5 call: no cache read, no cache write
Sonnet 4.5 call: reads from cache created in call 1 ✓
Opus 4.5 and Haiku 4.5 act as if the cache_control headers don't exist. They don't read, write, or invalidate the cache.
Expected behavior
All models should read from and write to the prompt cache when cache_control is specified, as Sonnet 4.5 and Opus 4.1 do.
Additional context
I reported the Haiku 4.5 issue previously and provided request IDs when asked, but never received follow-up. Opus 4.5 has now shipped with the same behavior.
Happy to provide request IDs again if needed.