Claude Code 2.1.243 to 2.1.245: the one-hour prompt cache is now yours to set

After two silent releases, 2.1.243 lands with around sixty entries, including the setting every API-key user was missing: choosing your own prompt cache lifetime. Plus a Linux startup crash fix shipped the same day.

claude-code changelog cost

Two releases on August 25: 2.1.243 with around sixty entries, and 2.1.245 with exactly one. Quite a shift after two releases that announced nothing at all.

Going through it entry by entry would be unreadable. Here is what actually changes something, in the order you should deal with it.

The prompt cache TTL becomes a setting

This is the change with the biggest effect on your bill, and the one the changelog says the least about.

The mechanism, briefly: prompt caching avoids reprocessing your whole conversation on every turn. The cache expires after a period of inactivity, and the prompt caching docs explain that the API offers two lifetimes, five minutes or one hour. Until now you did not pick. Here is what you were getting by default:

Request bucketClaude subscription, within plan usageUsage credits, API key, cloud provider
Main conversationOne hourFive minutes
Everything else (subagents, workflows, compaction)Five minutesFive minutes

Two things jump out. If you authenticate with an API key, Bedrock, Vertex or Foundry, you were on five minutes everywhere: any coffee break longer than five minutes made you pay to reprocess the entire conversation. And even on a subscription, your subagents have always been on five minutes, which almost nobody knows.

2.1.243 adds two settings that take precedence over those defaults, one per bucket:

{
  "promptCacheTtl": "1h",
  "subagentPromptCacheTtl": "1h"
}

promptCacheTtl covers the main conversation, subagentPromptCacheTtl covers everything else. The environment variable equivalents are CLAUDE_CODE_PROMPT_CACHE_TTL and CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL.

Three limits the changelog skips and the docs spell out:

  1. The only accepted values are 5m and 1h. Anything else is silently ignored. No 30m.
  2. The hour is not free. Cache writes are billed at a higher rate. The docs are blunt about it: the one-hour TTL costs more on short bursts of work that never idle past five minutes, because you pay the write premium and never use the extra lifetime. It pays off on the session you leave sitting and come back to.
  3. It is not available everywhere. The one-hour TTL does not work through the Claude apps gateway, and on Amazon Bedrock availability varies by model.

If several controls apply, the order is: FORCE_PROMPT_CACHING_5M=1 beats everything, then the bucket's environment variable, then the bucket's setting, then ENABLE_PROMPT_CACHING_1H=1, then the default. Worth knowing if your organization pushes a value through managed settings and you need to override it while debugging.

One thing to check before you start: the docs give 2.1.242 or later as the minimum version for both settings, even though the public changelog page lists no 2.1.242. Run claude --version instead of assuming.

The sandbox stops assuming a host is blocked

A quiet behavior change you will notice. The sandboxed Bash tool prompt no longer lists the allowed network hosts. As a result, Claude attempts the request instead of assuming an unlisted host is blocked, and you can approve a new host at that moment.

It pairs with a fix in the same release that matters more than it looks: sandbox network violation details were dropped when the blocked command still exited 0. The classic case is curl quietly printing the proxy's 403 page and exiting cleanly. Claude saw a successful command full of unexplained HTML, with no way to know the sandbox had cut the connection. The unsandboxed retry escape hatch described in the sandboxing docs relies precisely on those violation details being appended to the command output. Without them there is no informed retry, just a confused loop.

If you configure allowed domains in sandbox.network.allowedDomains, these two changes finally make it legible when a host is missing.

API silence now has a deadline

When the API never started a response, the session could sit silent for ten minutes or more. The request now times out after roughly three minutes, retries once, then shows API Error: No response from API.

Three minutes is still a long wait, but at least you know the problem is not on your end. In the same spirit, auth and model-availability errors no longer render as if the model were speaking; they show up as error lines.

On Linux, go straight to 2.1.245

2.1.245 is one line: a fix for a startup crash on distributions shipping glibc 2.44, specifically Arch Linux, CachyOS and Fedora Rawhide.

The changelog assigns no cause, but the timing is hard to ignore: 2.1.243, same day, ships a native binary overhaul with zstd compression and on-demand code loading. If you are on one of those distributions and Claude Code refuses to start, look no further and update.

That overhaul comes with pleasant numbers, by the way. The install and auto-update download drops from roughly 340 MB to 75 MB on Linux x64 (that is the download size, not the installed binary), and on-demand code loading saves 40 to 70 MB of memory per session. Startup is faster too: sandbox and MCP bring-up no longer block the first frame.

The rest, briefly

  • /usage gains a Loops section: run count, total tokens, tokens per run and last run for each scheduled task. The costs docs note that a row is keyed by the task's prompt, so a /loop you stop and re-create stays one row. The fastest way to spot a loop that has turned chatty.
  • modelPicker: build the /model picker list yourself, in your order and with your labels. Watch the scope: the docs say the whole value is taken from the highest source among managed settings, --settings and user settings, and that the key is ignored in project and local settings.
  • modelPricing, a managed setting: your organization's contracted rates replace list price in /cost, the status line and telemetry. It answers a known limitation, since /usage computed figures at standard list rates and could therefore diverge from your actual bill.
  • Keyless sign-in: /login then Anthropic Console now offers signing in with your Console account, for organizations that do not allow API keys.
  • Sonnet 5 at $2 / $10 per Mtok is now shown as its standard list price rather than a limited-time promo. The price is not changing; the label is becoming permanent.
  • A hook fix worth reading: an if condition like Bash(cat *) fired on unrelated Bash commands whenever the command contained a $() or backtick substitution followed by more arguments. If you run conditional hooks, they were filtering less tightly than you thought.
  • /resume is no longer capped at the 50 most recent sessions; the picker loads more as you scroll.
  • /model, /fast and /effort now run immediately instead of queueing until the turn ends on Bedrock, Vertex and Foundry, and when telemetry is disabled.
  • Cross-session messaging works again inside user namespaces and rootless containers, broken since the 2.1.232 socket hardening.
  • On macOS, computer use now requires an explicit Finder grant before clicking the desktop, the Dock or a Finder window.
  • Consecutive /loop wake-ups with nothing to do fold into a single terminal line.

What to take away

One action per profile. On Arch, CachyOS or Fedora Rawhide: update to 2.1.245, it is blocking. If you pay by API key or through a cloud provider: look at promptCacheTtl, keeping in mind that the one-hour cache only pays for itself if your sessions genuinely idle between bursts. If you have hooks with if conditions, re-read them.

For everyone else, 2.1.243 is mostly a cleanup release: a lighter client, errors that finally present themselves as errors, and a sandbox that says what it blocked instead of leaving Claude to guess.

Pierre Rondeau

Pierre Rondeau

Developer and indie builder. I build products and automations with AI. Creator of Claude Hub.

LinkedIn