5 min read

Claude Code 2.1.260 Finally Tells You Why Your Prompt Cache Missed

Tuesday afternoon I checked the cost of a long Claude Code session and did a double take. I had been running a refactor on Fable 5.1 for a couple of hours, mostly small edits across a dozen files. Nothing huge. But the input token count looked like I had pasted my entire repo into the chat a few hundred times.

My first suspect was my own setup. I toggled some hooks off, restarted, watched the cost climb anyway. It was not until Thursday that I found out what actually happened: Fable 5.1 had a caching bug, and version 2.1.260 of Claude Code, released late the night before, fixed it. It also shipped the diagnostic I had been wishing for every time a session got weirdly expensive.

A terminal window showing a development session in progress

The cache miss report I kept wanting

Quick refresher on how this works. Anthropic's API caches the conversation prefix, so a cache hit means the model re-reads your context at a steep discount. A cache miss means every token above the break gets billed at full input price. In an agentic session with a big system prompt, a CLAUDE.md, and dozens of tool calls, that discount is most of your bill.

Until now, Claude Code would only tell you that the cache missed, never why. You saw the cost go up and got to guess. As of 2.1.260, /cost and the prompt_cache field in the status line name a likely cause. Three big ones:

  • Your tool definitions changed (a plugin or MCP server loaded differently)
  • Something edited the system prompt, your CLAUDE.md included
  • The session sat idle past the cache TTL, which is about five minutes on the default setting

That middle one bit me more than once. I would pause a session, go fix something in CLAUDE.md, come back, and wonder why the next request cost three times the previous one. Editing instructions mid-session quietly rewrites the cached prefix. Now the tool just tells me that instead of me reverse-engineering it from token counts.

The Fable 5.1 bug was the expensive part

The diagnostics are nice. The fix in this release matters more if you run Fable 5.1.

Before 2.1.260, prompt caching on Fable 5.1 did not cover context attached after tool results. Tool results are exactly what agentic sessions are made of, so effectively the tail of every tool-call turn went out as uncached input, over and over. If your agent touched a file, ran a test, read output, that output got re-billed at full price on every subsequent call in the session.

Two related fixes rode along: switching /effort mid-session no longer invalidates the cache on Fable 5.1, and the /model picker finally shows Fable 5.1 for orgs that have access instead of making you type the model name by hand.

If you have been on Fable 5.1 since Tuesday, update and pull up /cost. Your cache hit rate should look noticeably healthier than what you remember.

# make sure you actually have the fix
claude --version

# then, inside a session
/cost   # spend plus, as of 2.1.260, likely cache-miss causes
/diff   # toggle the live diff panel (fullscreen mode)

The diff panel

The feature everyone will notice first. In fullscreen mode, /diff opens a panel beside the conversation showing your uncommitted changes while Claude edits. Previously you either split your terminal or kept an IDE open on the side just to watch what the agent was doing to your working tree.

I was skeptical, honestly. I already review diffs in my editor. But watching the panel fill up while an agent churns through a multi-file change catches certain mistakes early, like an edit landing in the wrong file, before the agent builds ten more steps on top of it. Small thing, but it stays open now.

The permission rule fixes deserve attention too

One more thing from the changelog, and it is security-adjacent. Several permission rule bugs got fixed, and one of them was real: Edit, Write, and Read rules whose path contained parentheses were being dropped as invalid, which left folders that were supposed to be read-only writable. Another bug let a single malformed deny rule break every file edit in the session. And Bash checks were auto-approving zsh commands that hid a command substitution inside a REPORTTIME or DIRSTACKSIZE assignment.

If you maintain a strict settings.json with deny rules, this release is worth the update on its own. I went back and re-checked my rules with parentheses in paths after reading that one.


Release cadence on this tool is absurd, a new version a day, and most of them are forgettable. This one is not. The diff panel is the visible feature, but the cache diagnostics plus the Fable 5.1 fix are what actually change what you pay. I wrote before about how much money bad habits waste on coding agents; this update hands you the tooling to verify the waste is gone.

Update, run /cost, and look at your cache hit rate. If it is still ugly, the report will now tell you which part of your setup is to blame.