Claude Code 2.1.239:让你的 Bedrock API 账单悄悄翻倍的代理 Bug 已修复

代理、API 网关或负载均衡器剥离响应 Content-Type 头部,导致 Claude Code 在每个 Bedrock 请求上以非流式模式重跑一次,等于每次对话付双倍费用。以下是如何判断是否受影响,以及 2.1.239 对网关运营者的其他修复。

发布于 来源 Claude Code Changelog

归档条目:由 AI 根据所引信源辅助生成,发布时未经逐篇审阅。责任编辑:Joe Werner。

抽象技术示意图,展示 HTTP 代理层位于客户端与云端 API 之间,头部检查环节高亮显示

Claude Code 的 changelog 里有一行写着"修复了在会剥离响应 Content-Type 头部的代理后面使用 Bedrock 流式传输时,会悄悄让每次对话的 API 调用量翻倍的问题"。大多数团队扫一眼就过去了,这是个错误。这是一个账单事件,不是体验修复,而且它会在你把 Claude Code 部署在代理背后的每一次 Bedrock 对话里无声积累。

发生了什么,为什么会这样

Amazon Bedrock 的流式 API 使用基于 HTTP 分块传输的响应格式,响应头 Content-Type 为 application/vnd.amazon.eventstream。Claude Code 读取这个头部来判断如何处理传入的流。

当代理剥离该头部时,Claude Code 遇到的是一个流式响应里缺失或不符合预期的 Content-Type,于是它回退到非流式模式,重新发一次请求来获取完整响应。结果是用户感受到的一次对话,底层实际完成了两次完整 API 调用,两次都计费。

企业 HTTP 代理、nginx 反向代理和 AWS 应用程序负载均衡器都有可能在默认配置下剥离或改写响应头。nginx 的 proxy_hide_header 指令是常见的安全加固手段。AWS ALB 对某些响应格式可能改写 Content-Type。如果你的 Bedrock 流量经过任何中间层,在大多数企业部署里都是这样,这个问题就一直在发生。

2.1.239 的修复改变了 Claude Code 检查 Content-Type 的方式,让头部缺失或不符合预期时不再触发回退。现有的流式传输不受影响,失效路径被关闭了。

如何判断你是否受影响

账单翻倍只发生在 Claude Code 成功建立 Bedrock 流式会话、但代理剥除响应 Content-Type 的场景下。你可以做两步回溯核查。

拉 Bedrock API 调用量。 从 CloudWatch 获取你运行 Claude Code 期间的 Bedrock 调用指标(AWS/Bedrock,指标名 InvocationCount)。如果调用次数大约是预期对话轮次的两倍,说明你受影响了。

检查代理的响应头行为。 在代理背后的主机上运行这条命令

curl -v -X POST https://bedrock-runtime.<region>.amazonaws.com/model/... \
  -H "Content-Type: application/json" \
  --aws-sigv4 "aws:amz:<region>:bedrock" \
  -d '{"prompt":"ping","max_tokens":1}' 2>&1 | grep -i content-type

如果响应 Content-Type 缺失,或者被替换成 application/octet-stream 之类的值,你的代理就在剥除它。

对于 nginx,检查配置里的 proxy_hide_header 指令。proxy_hide_header Content-Type; 作用在 Bedrock 上游时会触发这个问题。这条指令有时作为通用安全加固批量添加,没有考虑到流式端点的需求。

跨 provider 的对比

这个 bug 只影响 Claude Code 在 Bedrock 上的部署。Anthropic 直连 API(api.anthropic.com)使用不同的流式协议和 Content-Type 规则,Claude Code 通过另一条代码路径处理,不受这次修复影响。Vertex AI 的 Claude 端点也使用不同的流式协商机制。

把 Claude Code 指向 TheRouter 或其他网关的 OpenAI-compatible 端点而不是直连 Bedrock 的团队,账单翻倍不会发生在那条流量路径上,因为请求根本不走 Bedrock 的流式协商。通过任何代理层使用 Bedrock 的团队,无论是 AWS API Gateway、企业内部 HTTP 网关还是 ALB,都需要检查自己的配置并审计 2.1.239 之前的 Bedrock 账单。

2.1.239 里另外两个对网关运营者有影响的修复

HTTPS_PROXY 在 Bedrock SSO 凭证刷新时没有被遵守。 Claude Code 配合 SSO profile 和 awsAuthRefresh 使用 Bedrock 时,会在第一次请求前做一次凭证预检。这个预检走的是直连 HTTPS,绕过了 HTTPS_PROXY。在 Bedrock 只能通过代理访问的 VPC 隔离环境里,Claude Code 启动时会挂起或静默失败。修复之后,凭证预检会遵守代理设置。

数据驻留成本加成现在可见了。 Anthropic 对数据驻留工作区(美国本地推理路由)收取 1.1 倍的推理费率加成。2.1.239 之前,/cost 命令、状态栏和 --max-budget-usd 的计算都没有包含这个加成。使用数据驻留工作区的团队看到的成本估算比实际 Bedrock 账单低约 9%。修复后,所有成本估算和预算执行都加入了 1.1 倍系数。

现在该做什么

如果你在任何代理背后运行 Claude Code on Bedrock,按照以下步骤处理。

  1. 立即升级到 2.1.239,账单翻倍的修复就在这个版本里。
  2. 对过去 30 到 60 天的 Bedrock 调用次数与对话轮次做对比审计,AWS Bedrock 按请求计费,如果比例接近 2 比 1,可以向 AWS 提出账单异议。
  3. 确认你的代理没有剥除 Bedrock 流量的 Content-Type 响应头。
  4. 如果你遇到过 Bedrock 配合 SSO 启动挂起的问题,升级到 2.1.239 并确保 HTTPS_PROXY 在 awsAuthRefresh 运行之前就已经设置好。
  5. 如果你运行数据驻留工作区,升级后 /cost 显示的数字和预算限制会高出大约 10%,那是修复生效,不是定价调整。

不使用 Bedrock 的团队不会遇到账单翻倍问题。HTTPS_PROXY 和数据驻留这两个修复也只对 Bedrock 部署有效。

TheRouter 用户需要关注的地方

如果你把 Claude Code 指向 TheRouter 的 OpenAI-compatible 端点而不是直连 Bedrock,上面三个 Bedrock 专项修复对这条流量路径都不适用,你的请求从来不走 Bedrock 的流式协商。

如果你通过 TheRouter 把部分 Claude Code 流量路由到 Bedrock 作为 fallback 或主要 provider,对 Bedrock 那一段同样适用上述审计步骤。这个 bug 在 Claude Code 的 Bedrock 集成侧,不在路由层。

完整的代理配置参考可以在 Claude Code Amazon Bedrock 文档 里找到。

帮助与联系