A Proxy Stripped One Header and Silently Doubled Claude Code's API Bill
2.1.239 fixes Bedrock streaming behind proxies that drop the response Content-Type header, which re-ran every turn non-streaming and billed both. Nothing failed. Only the invoice knew.
NeuroX AI · August 22, 2026

The Claude Code 2.1.239 changelog fixes Bedrock streaming behind proxies that strip the response Content-Type header — a failure that silently doubled billed API calls by re-running every turn non-streaming.
Nothing broke. Turns completed, output arrived, tests passed. The only place the bug was observable was the invoice.
Follow the chain. The request goes out streaming. An egress proxy rewrites response headers on the way back. Claude Code can't confirm it got a stream, falls back to a non-streaming retry, and both calls bill. The fallback is correct behavior in isolation — that is what a fallback is for. What's missing is anything that asks whether the first attempt already cost money.
Same release, adjacent: /cost, the status line, and --max-budget-usd now include the 1.1× US-only-inference premium for data-residency workspaces. For every team that picked a residency option, the number the tool printed and the number finance received were different numbers.
This is the seam nobody owns. Retry logic sits in the SDK, egress proxies sit with the platform team, the bill lands on finance. Each layer is defensible on its own, the aggregate double-charges, and no dashboard shows it — because the dashboards are built from client-side estimates of what should have happened.
Every retry path is a spend path. A token counter incremented by the code that decided to retry isn't measuring your bill; it's repeating your intent.