Claude Code 2.1.239: баг, который незаметно удваивал счёт в Bedrock API

Прокси, удаляющий Content-Type, заставлял Claude Code повторять Bedrock-запрос без стриминга, выставляя двойной счёт. Как выявить затронутых, что исправлено в 2.1.239.

Опубликовано источник Claude Code Changelog

Архивный материал, подготовленный с помощью ИИ по указанному источнику и опубликованный без индивидуальной проверки. Ответственный редактор: Joe Werner.

Абстрактная техническая схема — HTTP-прокси между клиентом и облачным API с выделенной проверкой заголовков
Машинный перевод с английского оригинала — читать оригинал

В changelog Claude Code появилась строка: «Исправлен баг с потоковой передачей через Bedrock за прокси, удаляющим заголовок Content-Type из ответа — это незаметно удваивало количество выставляемых к оплате API-вызовов при перезапуске каждого хода без стриминга». Большинство команд прочитают и забудут. Зря. Это инцидент с биллингом, а не фикс UX-поведения, и он тихо накапливался с момента, как вы поставили Claude Code за прокси.

Что происходило и почему

Streaming API Amazon Bedrock передаёт ответы в формате HTTP chunked transfer с заголовком Content-Type: application/vnd.amazon.eventstream. Claude Code читает этот заголовок в ответе, чтобы понять, как обрабатывать входящий поток.

Если прокси удаляет этот заголовок — а многие делают это по умолчанию — Claude Code видит неожиданный или отсутствующий Content-Type у потокового ответа и переключается в нестриминговый режим. Затем он повторяет тот же запрос, чтобы получить полный ответ. В результате пользователь видит один диалоговый ход, а под капотом выполняется два полных API-вызова — и оба попадают в счёт.

Корпоративные HTTP-прокси, nginx-реверспрокси и AWS Application Load Balancer в конфигурации по умолчанию способны удалять или перезаписывать заголовки ответов. Директива proxy_hide_header в nginx — стандартная рекомендация по безопасности. AWS ALB может перезаписать Content-Type для определённых форматов ответа. Если трафик в Bedrock проходит через любой промежуточный слой — а в большинстве enterprise-деплоев это так — баг работал у вас.

Фикс в 2.1.239 изменяет логику проверки Content-Type так, что отсутствие или несоответствие заголовка больше не вызывает fallback. Существующий стриминг не затронут; аварийная ветка убрана.

Как понять, были ли вы затронуты

Удвоение биллинга происходило только при условии, что Claude Code успешно устанавливал стриминговую сессию Bedrock, но прокси убирал Content-Type из ответа. Проверить ретроспективно можно двумя способами.

Посмотрите количество вызовов Bedrock API. Откройте CloudWatch, метрика InvocationCount в пространстве AWS/Bedrock за период работы Claude Code за прокси. Если количество вызовов примерно вдвое больше ожидаемого числа диалоговых ходов — вы были затронуты.

Проверьте поведение прокси с заголовками ответа. С хоста за прокси выполните:

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 — прямой триггер бага. Эту директиву нередко добавляют как часть общего харднинга, не учитывая потоковые endpoint-ы.

Сравнение с другими provider-ами

Баг специфичен для Claude Code на Bedrock. Прямой Anthropic API (api.anthropic.com) использует другой протокол стриминга и другую схему Content-Type — Claude Code обрабатывает этот путь через отдельную ветку кода, не затронутую этим фиксом. Vertex AI endpoint для Claude также использует другую схему согласования стриминга.

Команды, направляющие Claude Code через TheRouter или другой шлюз на OpenAI-compatible endpoint, а не напрямую в Bedrock, не были подвержены удвоению биллинга — их запросы никогда не попадали в стриминг-согласование Bedrock. Если же Bedrock используется как fallback или основной provider через шлюз, применяйте те же шаги аудита к этому плечу трафика. Баг живёт в интеграции Claude Code с Bedrock, не в слое маршрутизации.

Ещё два изменения в 2.1.239, важных для операторов

HTTPS_PROXY не соблюдался при обновлении SSO-учётных данных Bedrock. При использовании Bedrock с SSO-профилем и включённым awsAuthRefresh Claude Code выполняет предварительную проверку учётных данных перед первым запросом. Эта проверка делала прямое HTTPS-соединение в обход HTTPS_PROXY. В средах, где Bedrock доступен только через прокси — например, в изолированной VPC — Claude Code зависал при запуске или молча завершался с ошибкой. Фикс заставляет предпроверку учётных данных соблюдать настройку прокси.

Надбавка за data residency теперь видна в расчётах стоимости. Anthropic берёт коэффициент 1.1× за инференс для рабочих пространств с data residency (маршрутизация только через серверы в США). До 2.1.239 команда /cost, строка статуса и --max-budget-usd не включали эту надбавку. Команды с data-residency видели оценки стоимости примерно на 9% ниже реальных счетов Bedrock. Фикс добавляет коэффициент 1.1× во все расчёты стоимости и бюджетное ограничение.

Что делать сейчас

Если вы запускаете Claude Code на Bedrock за прокси любого рода:

  1. Обновитесь до 2.1.239 немедленно — фикс удвоения биллинга находится в этом релизе.
  2. Проверьте количество вызовов Bedrock за последние 30–60 дней в сравнении с числом диалоговых ходов. Bedrock тарифицируется за запрос; если соотношение около 2:1, у вас есть основания для обращения по поводу биллинга в AWS.
  3. Убедитесь, что ваш прокси не удаляет заголовок Content-Type из ответов Bedrock.
  4. Если вы сталкивались с зависанием Claude Code при старте на Bedrock с SSO — обновитесь до 2.1.239 и проверьте, что HTTPS_PROXY задан до того, как запустится awsAuthRefresh.
  5. При использовании data-residency рабочего пространства после обновления показания /cost и лимиты бюджета вырастут примерно на 10% — это следствие фикса, а не изменение тарифов.

Команды, не использующие Bedrock, не подвержены удвоению биллинга. Фиксы HTTPS_PROXY и data residency также применимы только к деплоям на Bedrock.

На что обратить внимание пользователям TheRouter

Если вы направляете Claude Code на OpenAI-compatible endpoint TheRouter, а не напрямую в Bedrock, три Bedrock-специфичных фикса не касаются этого пути трафика — ваши запросы никогда не проходят через согласование стриминга Bedrock.

Если вы маршрутизируете часть трафика Claude Code через Bedrock в качестве fallback или основного provider, применяйте шаги аудита выше к этому плечу. Баг — в интеграции Claude Code с Bedrock, не в routing-слое.

Полную документацию по настройке прокси можно найти в Claude Code Amazon Bedrock docs.

Абстрактная схема разрешения ARN-путей AWS Bedrock в отдельные уровни моделей с исправленным биллинговым реестром

Claude Code 2.1.218 устраняет скрытую ошибку биллинга Bedrock: операторы с ARN-маппингом моделей должны проверить исторические логи расходов

С февраля 2026 года Claude Code приписывал трафик Bedrock ARN к одному model ID, фиксируя ~$0.23 для Haiku и Opus одинаково. Версия 2.1.218 исправляет разрешение ARN, но исторические логи расходов gateway недостоверны.

источник Claude Code CHANGELOG
Изменения Claude Code 2.1.273: hint-заголовки gateway и смена классификатора auto-режима, представленные как панель наблюдаемости прокси с сигналами классификации запросов

Claude Code 2.1.273: пять новых hint-заголовков для gateway и смена классификатора на Bedrock, Vertex и Foundry

Claude Code 2.1.273 добавляет opt-in hint-заголовки, передающие LLM-прокси класс запроса, тип агента и состояние компакции. Одновременно на Bedrock, Vertex AI и Foundry по умолчанию включается локальный классификатор auto-режима — откатить можно только это изменение.

источник Anthropic
Диаграмма исправлений gateway в Claude Code 2.1.268: HTTP 400 регрессия ANTHROPIC_BASE_URL и контроль gatewayInternalNetworks

Claude Code 2.1.268: Трёхверсионный сбой gateway, который прошёл незамеченным, и четыре новых контроля

Начиная с 2.1.265 каждый запрос через сторонний ANTHROPIC_BASE_URL endpoint завершался HTTP 400. Версия 2.1.268 устраняет регрессию, добавляет gatewayInternalNetworks, синхронизацию цен через gateway.yaml и байт-стабильный prompt cache для Bedrock, Vertex и Foundry.

источник Anthropic Claude Code
Помощь и контакты