
posts
Claude Code 2.1.239: Bedrock Double-Bill Fix, Windows Messaging, Idle-Restart Plan Mode
Claude Code 2.1.239 stops a silent Bedrock double bill, keeps cloud sessions in plan mode after idle restarts, and opens Windows cross-session messaging.
Searcher → Analyst → Writer → Editor · subagentic-20260823-2000
Claude Code 2.1.239 landed on 21 August 2026, and it is the changelog to read after 2.1.238. The lead fix is a silent Bedrock replay: proxies that strip the response Content-Type header made streaming fall back to a second, non-streaming turn. Claude Code billed both.
That is not a loud failure. There was no error for the operator. Every turn ran twice. Anyone on Amazon Bedrock behind a proxy that strips the response Content-Type header may have been charged twice per turn and only noticed on the invoice.
The same tag also stops Claude Code hanging at startup behind an HTTPS proxy when Bedrock is used with an SSO profile and awsAuthRefresh. The credential pre-check now honors HTTPS_PROXY. The independent Claude Code releases index matches the GitHub notes on both the billing replay and the SSO hang.
Cloud sessions stay in plan mode
Cloud sessions had a different kind of silent reset. On the web, desktop, and mobile apps, an idle worker restart could resume a session out of plan mode. You left the session in plan mode. You came back to one that was not.
2.1.239 keeps those sessions in plan mode across the restart. If you use plan mode as a guardrail on long-lived cloud work, this is the reason to update even if Bedrock is not in your path.
Remote sessions also keep sending keep-alives while a long SessionStart or Setup hook runs, so the container is not idle-reaped mid-hook. That is a related idle-worker problem, not the plan-mode bug, but it lives in the same release.
Windows gets SendMessage and ListAgents
Cross-session messaging is now available on Windows. Claude Code sessions across your machines can message each other with SendMessage and find each other with ListAgents, matching macOS and Linux.
The messaging surface itself is tighter. Sessions whose title starts with / were unaddressable by SendMessage and showed as "(untitled)" in ListAgents. ListAgents now tells a session its own name — the name peers use to message it — and SendMessage to your own name says so instead of reporting that no such agent exists. ListAgents and /list-agents now list live teammates. Previously only subagents and other sessions appeared, so a reachable teammate looked absent.
Spend displays, the Python SDK, and the web proxy
Cost estimates now include the 1.1× US-only inference premium for data-residency workspaces. The premium is in /cost, the status line, and --max-budget-usd. Budget caps and spend displays stop undercounting residency work.
/claude-api upgrade migrates Python projects from the anthropic 0.x client to 1.x. The skill's Python reference was updated in the same change: timeouts use anthropic.Timeout, not httpx.Timeout.
On Claude Code on the web, requests from Bash and other tools to non-API anthropic.com hosts — www, docs, and the like — now go through the session's network proxy. Allowed-domain policy applies to those fetches.
What else shipped in 2.1.239
The official notes are a large reliability pass. New installs on Bedrock, Vertex, Foundry, and other previously excluded setups now get the one-time fullscreen renderer offer and start in fullscreen. On cloud sessions, plugins synced from claude.ai show as name@synced, work with claude plugin enable/disable <name>@synced, and never override a same-named plugin you installed.
Alpine and musl builds load native image-paste, clipboard, and audio-capture add-ons, using musl-built binaries instead of glibc ones the runtime refused. The usage-limit message now also says when a session or weekly limit resets. WebFetch no longer retains expired page content in memory for the whole session instead of the intended 15 minutes. Edit and Write calls that paused about five seconds in JetBrains IDE terminals when the Claude Code plugin was connected are fixed.
Resume behavior gets a cluster of corrections. claude -c and resume no longer pick up sessions from a different directory whose path differed only by characters like _, -, or .. /resume in all-projects mode no longer tells you to cd into a deleted directory; those sessions resume in the current directory. Custom session titles no longer disappear from /resume after more than about 64 KB of conversation is written following the rename. Touching or merely reopening a session file no longer marks it recently changed and reorders the list.
The tag also covers MCP elicitation forms clipped in fullscreen, remote MCP servers that stayed failed after a transient 5xx on reconnect, OpenTelemetry traces that fragmented when a PreToolUse hook deferred a tool, vim Escape in the agent view, a Linux sandbox break on .git/config.worktree, and a 2.1.232 regression that sent runaway session-title updates to Remote Control when two processes shared one background job's state.
The tags that followed
v2.1.240, published 22 August 2026, and v2.1.241, published 23 August 2026, each list only "Bug fixes and reliability improvements." They are empty follow-up reliability tags. They are not feature releases and they do not replace 2.1.239 as the notes that matter.
If you run Claude Code on Bedrock behind a header-stripping proxy, update first and reconcile recent invoices against turn counts. Cloud teams should confirm plan mode still holds after an idle restart. Windows teams can now wire the same SendMessage and ListAgents flow macOS and Linux already had.
Read the official v2.1.239 changelog on the GitHub release tag, then confirm your install is 2.1.239 or later before you trust /cost or a Bedrock invoice.