CLAUDE LABJP
PRICING — September 1 was the scheduled date for the Sonnet 5 price increase, and it did not happen. The introductory $2/$10 per MTok now stands as the regular pricePARTNER — Salesforce and Anthropic announced Claudeforce, an expanded partnership. The Salesforce in Claude plugin ships with 37 prebuilt sales skills, from meeting prep to pipeline managementTRUST — Claudeforce serves Claude through Amazon Bedrock inside the Salesforce Trust Boundary, so data and inference never leave the security perimeter — an answer aimed squarely at regulated industriesBETA — Salesforce in Claude is with select pilot customers for now, with an open beta expected during SeptemberLIMITS — The 50% weekly-limit boost runs through September 13. From September 14 the permanent level is 25% above the pre-promotion baseline, roughly a 17% cut from todayRELEASE — Claude Code has shipped nothing since v2.1.251 on August 28. Against a pace of one release every 0.8 days, a four-day gap is among the longest yetPRICING — September 1 was the scheduled date for the Sonnet 5 price increase, and it did not happen. The introductory $2/$10 per MTok now stands as the regular pricePARTNER — Salesforce and Anthropic announced Claudeforce, an expanded partnership. The Salesforce in Claude plugin ships with 37 prebuilt sales skills, from meeting prep to pipeline managementTRUST — Claudeforce serves Claude through Amazon Bedrock inside the Salesforce Trust Boundary, so data and inference never leave the security perimeter — an answer aimed squarely at regulated industriesBETA — Salesforce in Claude is with select pilot customers for now, with an open beta expected during SeptemberLIMITS — The 50% weekly-limit boost runs through September 13. From September 14 the permanent level is 25% above the pre-promotion baseline, roughly a 17% cut from todayRELEASE — Claude Code has shipped nothing since v2.1.251 on August 28. Against a pace of one release every 0.8 days, a four-day gap is among the longest yet
Articles/API & SDK
API & SDK/2026-04-28Intermediate

Diagnosing Claude API Prompt Cache Misses — How to Read the usage Field

If your Claude API prompt cache isn't reducing your bill, the usage field is where to start. This guide walks through the five most common reasons cache_read_input_tokens stays at zero and how to fix each one.

claude-api81prompt-caching14troubleshooting89cost-optimization30anthropic12

Premium Article

"I added cache_control last week, but my invoice didn't shrink at all" — this is the single most common message I get from people who just tried Claude's prompt caching. I went through the same thing the first time I shipped it: three days of zero hits before I noticed the cache hadn't been working at all.

The good news is that the failure modes are surprisingly limited, and every diagnosis starts in the same place: the usage object that the API returns on every response. This guide walks through the five misses I run into most often, in the order I check them.

Start with the usage field

Every Claude API response includes a usage object. When you have prompt caching enabled, two extra fields appear there.

import anthropic
 
client = anthropic.Anthropic()
 
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are an experienced technical writer." * 200,  # ~2,000 tokens
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[{"role": "user", "content": "Hello"}],
)
 
print(response.usage)
# Usage(
#   input_tokens=8,
#   cache_creation_input_tokens=2103,
#   cache_read_input_tokens=0,
#   output_tokens=42
# )

Three numbers matter here.

  • input_tokens: tokens that bypass the cache and get re-read every request
  • cache_creation_input_tokens: tokens written to the cache on this request (billed at 1.25× standard for the 5-minute TTL, 2× for the 1-hour TTL — but only on first write)
  • cache_read_input_tokens: tokens served from the cache (billed at 0.1× standard)

A working cache means: from the second request onward, cache_read_input_tokens is positive and cache_creation_input_tokens drops toward zero. If you keep firing identical prompts and these numbers never shift, something is wrong.

Cause #1: The prefix is below the minimum token count

Claude enforces a minimum number of tokens for a prefix to be eligible for caching. As of April 2026:

  • Claude Sonnet 4.6 / Claude Opus 4.6: 1,024 tokens
  • Claude Haiku 4.5 family: 2,048 tokens

If your cached prefix is shorter than that, the server quietly skips caching. cache_creation_input_tokens stays at zero, input_tokens keeps climbing, and you wonder why nothing is happening.

This is the trap I fell into first — a 600-token system prompt with cache_control attached and lots of confused log diving. Run your prefix through the token counter before assuming the cache is broken. If you're under the threshold, your next move isn't caching; it's compressing the prompt itself.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
A five-cause diagnostic order for reading cache_read_input_tokens in the usage field
Real numbers from a 1,000-image batch — input_tokens from 3,210 to 12, TTFT from 1.42s to 0.83s
A decision table for choosing the 5-minute vs 1-hour TTL and holding a 10-to-1 read-to-write ratio
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

API & SDK2026-04-26
How I Cut My Claude API Bill in Half With Prompt Caching
Done right, Anthropic's prompt caching can roughly halve your monthly API spend on workloads with long, repeated system prompts. Here is the design playbook I use after six months of running it in production.
API & SDK2026-06-29
When Context Editing Made My Agent Re-run the Same Search — Field Notes on Clear Boundaries and Cache Invalidation
After turning on Context Editing to auto-clear tool results, the agent forgot what it had just read, re-ran the same tool, and the cache rebuilt every turn so costs went up. Field notes on instrumenting the silent regression and setting trigger, keep, and clear_at_least from measured data.
API & SDK2026-06-24
I Edited One Line of a Tool Description and the Whole Prompt Cache Rebuilt — Where to Place cache_control Breakpoints
Hit rate suddenly flatlined at zero because a volatile block sat upstream of stable ones. This walks through how prefix-cache cascade invalidation works, how to reorder blocks from stable to volatile, and where to spend your four cache_control breakpoints — with code and decision tables.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →