# Claude в AWS Bedrock отвечает 400: причина по тексту ошибки

> Статус 400 причину не называет — её называет текст ошибки. Claude Code ходит в Bedrock только через Invoke API, и его 400 разбирается иначе, чем в своём коде.

- URL: https://blog.laozhang.ai/ru/posts/aws-claude-400-error
- Published: 2026-09-21
- Updated: 2026-09-25
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ru/about)
- Topic: Claude Code
- Tags: Claude, Amazon Bedrock, Claude Code, Ошибки API

---
## Смотрите на текст ошибки, а не на код 400

HTTP 400 от Claude в AWS значит одно: запрос дошёл до сервиса и был отклонён. Что исправлять, подсказывает не статус, а код ошибки (чаще всего `ValidationException`) и дословный текст после него. Под одной и той же «ошибкой 400» скрываются несовместимые поля запроса, устаревшая версия Claude Code, переполненный контекст, неверный ID модели, режим хранения данных аккаунта и даже исчерпанная квота. У каждой причины своё исправление, и переключатель, спасающий в одном случае, в другом ничего не меняет.

Второе, что определяет путь диагностики, — кто отправляет запрос. Claude Code с `CLAUDE_CODE_USE_BEDROCK=1` работает с Bedrock только через Invoke API (`InvokeModel` / `InvokeModelWithResponseStream`) и Converse API не поддерживает. Советы про форму тела Converse пользователю Claude Code не помогут, а переменные окружения Claude Code бесполезны тому, кто вызывает Bedrock из собственного кода.

Найдите в таблице фрагмент своего сообщения и переходите к нужному разделу:

| Фрагмент сообщения | Что это обычно значит | Первое действие |
| --- | --- | --- |
| `Extra inputs are not permitted`, `Unexpected value(s) for the anthropic-beta header` | beta-поля дошли до API без заголовка `anthropic-beta` или модель их не принимает | настроить шлюз на пересылку `anthropic-beta`; запасной вариант — `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` |
| `"thinking.type.enabled" is not supported for this model` | Claude Code старше минимальной версии для выбранной модели | `claude update` и перезапуск |
| `max_tokens must be greater than thinking.budget_tokens` | бюджет мышления не помещается в лимит вывода | снизить `MAX_THINKING_TOKENS` или поднять `CLAUDE_CODE_MAX_OUTPUT_TOKENS` |
| `Input is too long for requested model.` | вход вместе с запрошенным выводом не влезает в окно модели | `/compact` или `/clear`; на версиях до v2.1.217 сначала обновиться |
| `orphaned tool_result`, `duplicate tool_use ID`, `thinking blocks ... cannot be modified` | испорчена последовательность вызовов инструментов в истории | `/rewind` или двойное нажатие Esc |
| `The provided model identifier is invalid`, `on-demand throughput isn't supported` | ID модели, префикс профиля, регион или статус аккаунта | сверить ID с `aws bedrock list-inference-profiles` |
| `data retention mode 'default'` | модель требует режим хранения `aws_review` | решение администратора AWS |
| `ServiceQuotaExceededException` | превышена квота аккаунта | повторить позже |
| `Access to Anthropic models is not allowed from unsupported countries, regions, or territories` | адрес аккаунта или место вызова вне стран, где работает Anthropic | смена региона AWS не поможет |

Если в ответе не 400, а 403, 404, 429 или 529, это другие проблемы; коротко о них — в разделе «Что повторять, что нет и когда это вовсе не 400».

## Claude Code, Mantle, шлюз или свой код

Внутри Claude Code команда `/status` показывает, какой провайдер и регион реально используются. Дальше возможны четыре ситуации:

- **Прямой Bedrock** (`CLAUDE_CODE_USE_BEDROCK=1`): Claude Code вызывает Invoke API, а модели указываются как ID профилей вывода (inference profile) вроде `us.anthropic.claude-opus-5-5`.
- **Mantle** (`CLAUDE_CODE_USE_MANTLE`): `/status` показывает `Amazon Bedrock (Mantle)`, у моделей свои ID без суффикса версии.
- **Шлюз, корпоративный прокси или сторонний маршрут «AWS Claude»**: между Claude Code и Bedrock стоит посредник, и большая часть ошибок `Extra inputs are not permitted` рождается именно здесь.
- **Собственный код** на boto3, AWS SDK или Anthropic SDK: вам нужен раздел про форму запроса ниже.

Как понять, какой из маршрутов включён и откуда Claude Code берёт настройки, подробно разобрано в материале [«Настройка Claude Code API: ключи, settings.json, модели и шлюзы»](https://blog.laozhang.ai/ru/posts/claude-code-api-configuration).

Команды и фрагменты кода ниже составлены по документации Anthropic и AWS по состоянию на 24 сентября 2026 года и в живом аккаунте AWS не запускались. Подставьте свои регион и ID модели. Номера версий Claude Code меняются часто, поэтому сверяйте их с текущей документацией.

## Claude Code: сообщения и исправления

### Extra inputs are not permitted: потерялся заголовок anthropic-beta

Типичный вид ошибки:

```text
API Error: 400 ... Extra inputs are not permitted ... context_management
API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header
```

Claude Code отправляет поля, доступные только в beta, например `context_management` и `effort`, вместе с заголовком `anthropic-beta`, который их включает. Если шлюз пересылает тело запроса, но отбрасывает заголовок, API видит незнакомые поля и отклоняет запрос.

Правильное исправление — настроить шлюз так, чтобы он пересылал `anthropic-beta`. Если шлюз не ваш и настроить его нельзя, отключите экспериментальные возможности до запуска Claude Code:

```bash
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
claude
```

Или постоянно, через блок `env` в `~/.claude/settings.json`; если там уже заданы `ANTHROPIC_BASE_URL` и ключ шлюза, добавьте переменную рядом с ними:

```json
{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}
```

Переменная убирает заголовки `anthropic-beta` и beta-поля в схемах инструментов (`defer_loading`, `eager_input_streaming`), а стандартные `name`, `description`, `input_schema` и `cache_control` оставляет; кэширование промптов она не выключает. У неё есть цена: отключается поиск MCP-инструментов, и все MCP-инструменты загружаются сразу, даже если задан `ENABLE_TOOL_SEARCH`. При большом числе MCP-серверов это заметно съедает окно контекста и может привести к `Input is too long for requested model.` — как с этим справляться, объясняет статья [«Claude Code и перегрузка контекста MCP»](https://blog.laozhang.ai/ru/posts/claude-code-mcp-context-overload). Начиная с v2.1.227 поиск инструментов можно оставить включённым через управляемые настройки (managed settings).

Этот переключатель лечит только несовместимость полей. Ошибки ID модели, прав IAM, квоты и режима хранения данных он не исправит.

Если шлюза нет, а Bedrock всё равно отвечает `output_config.effort: Extra inputs are not permitted`, дело может быть в сочетании модели и клиента. В открытом с 4 марта 2026 года обсуждении [claude-code-action #1005](https://github.com/anthropics/claude-code-action/issues/1005) так падали запросы к Sonnet 4.5 через профиль вывода приложения; участники пишут, что помог переход на Sonnet или Opus 4.6. Это пользовательские отчёты, а не официальное описание, но вывод из них практичный: сначала проверьте через `/status` и `/model`, какую модель на самом деле использует сессия.

Похожие ошибки beta-заголовков в OpenClaw разобраны отдельно: [«Исправление OpenClaw Invalid Beta Flag»](https://blog.laozhang.ai/ru/posts/openclaw-invalid-beta-flag).

Для тех, кто подключается через маршрут AWS Claude от LaoZhang API, есть [отдельная страница FAQ об этой ошибке](https://docs.laozhang.ai/en/faq/claude-code-aws-400-validation-error) на английском. Она относится только к этому маршруту. Модели Claude в LaoZhang API были временно отключены 24 сентября 2026 года и [снова доступны с 18 октября 2026 года](https://docs.laozhang.ai/en/announcements/claude-models-2026-10).

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

### Мышление: версия клиента и бюджет токенов

Сообщение

```text
API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
```

означает, что версия Claude Code старше минимальной для выбранной модели: клиент отправляет настройку мышления, которую модель уже не принимает. Запустите `claude update` и перезапустите Claude Code. Минимальные версии по состоянию на 24 сентября 2026 года:

| Модель | Минимальная версия Claude Code |
| --- | --- |
| Opus 4.7 | v2.1.111 |
| Opus 4.8 | v2.1.154 |
| Sonnet 5 | v2.1.197 |
| Opus 5 | v2.1.219 |
| Opus 5.5 | v2.1.280 |

Если обновиться нельзя, выберите через `/model` Opus 4.6 или Sonnet 4.6. У Agent SDK свои пороги: например, Opus 5.5 требует TypeScript SDK v0.3.280 или новее.

Тот же запрет действует и на стороне AWS для собственного кода. По документации Bedrock, Claude Fable 5.1, Mythos 5.1, Mythos 5 и Fable 5 не поддерживают расширенное мышление (extended thinking): запрос с `thinking.type: "enabled"` или `"disabled"` получает 400. Замените его на `{"type": "adaptive"}` вместе с `output_config.effort` или уберите `thinking` из запроса.

Второе сообщение про мышление касается бюджета:

```text
API Error: 400 ... max_tokens must be greater than thinking.budget_tokens
```

На API Anthropic Claude Code подгоняет эти значения сам, а на Amazon Bedrock и Google Cloud ошибка обычно появляется, когда `MAX_THINKING_TOKENS` выше лимита вывода у провайдера или когда режим планирования поднимает бюджет. Снизьте `MAX_THINKING_TOKENS` или поднимите `CLAUDE_CODE_MAX_OUTPUT_TOKENS` выше бюджета. Учтите, что рост `CLAUDE_CODE_MAX_OUTPUT_TOKENS` уменьшает часть окна, доступную до автоматического сжатия.

У сторонних провайдеров, включая Bedrock, `MAX_THINKING_TOKENS=0` просто убирает параметр `thinking` из запроса. У Opus 5.5 и моделей Fable мышление отключить нельзя, так что для них остаётся только согласовать бюджет с лимитом вывода. В собственном коде для моделей со стандартным расширенным мышлением правило то же: `budget_tokens` должен быть меньше `max_tokens` и не меньше 1 024; исключение — чередующееся мышление (interleaved thinking, beta) с инструментами.

### Input is too long for requested model.

Так Bedrock называет переполнение контекста. Ограничение считается по сумме входных токенов и запрошенного вывода, поэтому ошибка возможна и тогда, когда сам диалог вроде бы помещается в окно.

Claude Code воспринимает эту формулировку как обычное `Prompt is too long` начиная с v2.1.217. В более ранних версиях автоматическое сжатие на неё не срабатывало, а `/compact` падал с той же ошибкой, поэтому на старом клиенте начните с обновления. Дальше:

- `/compact` сжимает историю, `/clear` начинает сессию с чистого листа;
- `/context` показывает, что занимает окно;
- `/mcp disable <name>` отключает MCP-серверы, которые сейчас не нужны;
- слишком большой `CLAUDE.md` стоит сократить.

Если вы недавно включили `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, помните, что с ней все MCP-инструменты грузятся сразу и занимают место в окне.

### Испорченная история: tool_use, tool_result и thinking

Все эти сообщения значат одно и то же — последовательность блоков `tool_use`, `tool_result` и `thinking` в истории больше не соответствует ожиданиям API:

```text
API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.
API Error: 400 orphaned tool_result in conversation history. Run /rewind to recover the conversation.
API Error: 400 duplicate tool_use ID in conversation history. Run /rewind to recover the conversation.
API Error: 400 ... unexpected `tool_use_id` found in `tool_result` blocks
API Error: 400 ... thinking blocks ... cannot be modified
```

Обычно так бывает после прерванного вызова инструмента или правки хода посреди потока. Выполните `/rewind` или дважды нажмите Esc и вернитесь к контрольной точке до испорченного хода. На Opus 4.7 и 4.8 сначала обновитесь, если версия Claude Code ниже v2.1.156: такие версии могут вызывать эту ошибку при обычной работе с инструментами, и `/rewind` её не снимает. К Bedrock эта группа ошибок не привязана и встречается у любого провайдера.

### ID модели, префикс профиля и Mantle

Без закреплённых моделей Claude Code на Bedrock по умолчанию использует Opus 5.5 как основную модель (в регионах `us-*` это `us.anthropic.claude-opus-5-5`) и Sonnet 4.5 как быструю (`us.anthropic.claude-sonnet-4-5-20250929-v1:0`). До v2.1.280 основной моделью по умолчанию была Opus 5.

Префикс профиля Claude Code выводит из региона: `us-gov-*` → `us-gov.`, `us-*` → `us.`, `eu-*` → `eu.`, `ap-*` → `apac.`, остальные → `global.`. Переменная `ANTHROPIC_BEDROCK_REGION_PREFIX` (v2.1.224+, значения `us`, `eu`, `apac`, `jp`, `au`, `global`) задаёт предпочтение, но не гарантию. Главная ловушка: если у роли нет права перечислять профили вывода в аккаунте, Claude Code подставляет префикс без проверки, и когда профили с таким префиксом в аккаунте не включены, запросы падают с 400. Поэтому не добавляйте `us.` или `global.` наугад. Что помогает:

- выдать роли `bedrock:ListInferenceProfiles` и `bedrock:GetInferenceProfile` — второе право нужно, чтобы Claude Code определил модель за ARN профиля вывода приложения;
- выставить префикс, профили с которым в аккаунте действительно включены;
- закрепить модели явно — ID и ARN, которые вы задали сами, Claude Code не переписывает.

Сообщение `on-demand throughput isn't supported` значит, что модель нужно указывать как ID профиля вывода, а не как ID базовой модели. Список доступных профилей:

```bash
aws bedrock list-inference-profiles --region "$AWS_REGION"
```

Псевдонимы вроде `opus` могут указывать на модель, ещё не включённую в аккаунте. Если модель не закреплена и недоступна, Claude Code при старте заменит её более ранней версией, но только на текущую сессию; чтобы выбор был постоянным, закрепите версии:

```bash
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1
export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-8'
export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'
```

Это примеры из документации Claude Code, а не список, гарантированно доступный в любом аккаунте и регионе: сверяйте их с выводом `list-inference-profiles`.

У Mantle свои правила. ID моделей там начинаются с `anthropic.` и не содержат версии, например `anthropic.claude-sonnet-5`. Ответ 400 с ID модели в тексте значит, что эта модель в Mantle не обслуживается; ID профилей Invoke API вроде `us.anthropic.claude-sonnet-4-6` там не работают. Если `/status` не показывает `Amazon Bedrock (Mantle)`, переменная `CLAUDE_CODE_USE_MANTLE` не доходит до процесса. Ответ 403 от Mantle при рабочих учётных данных означает, что у аккаунта нет доступа к модели, — это вопрос к команде вашего аккаунта AWS.

Если Claude Code жалуется на `top_p`, это отдельная история с собственным разбором: [«Claude Code показывает top_p deprecated?»](https://blog.laozhang.ai/ru/posts/claude-code-top-p-deprecated).

## data retention mode 'default': решает администратор AWS

После перехода на модели Fable каждое сообщение может завершаться так:

```text
API Error: 400 data retention mode 'default' is not available for this model
```

Такой отчёт с моделью `global.anthropic.claude-fable-5` и Claude Code 2.1.170 опубликован 9 июня 2026 года в [issue #66594](https://github.com/anthropics/claude-code/issues/66594). Механизм описан в документации AWS о хранении данных (data retention): режимы упорядочены как `none < default < aws_review < provider_data_share`, а `inherit` означает «взять значение уровнем выше». Claude Fable 5 и Fable 5.1 требуют `aws_review`. Если действующий режим `none` или `default`, эндпоинт `bedrock-runtime` возвращает `ValidationException`, а в Mantle модель помечена как недоступная с причиной `This model is not available under data retention mode 'default'.`

Это не баг, который можно обойти настройкой клиента. Режим `aws_review` разрешает AWS хранить входы и выходы внутри AWS до 30 дней и проверять их вручную; модельному провайдеру данные не передаются. Режим `provider_data_share` устаревший и сейчас ведёт себя так же, для новых настроек AWS советует `aws_review`. Для моделей, выпущенных до Claude Fable 5, ничего не изменилось. Модели вроде Opus 4.8 допускают `none`, поэтому более разрешительная настройка аккаунта не заставляет их хранить данные.

Для `bedrock-runtime` режим задаётся на уровне аккаунта отдельно в каждом регионе, уровня проекта там нет. Настройки в консоли на момент запуска не было — только API плоскости управления и SDK; нужные действия IAM — `bedrock:GetAccountDataRetention` и `bedrock:PutAccountDataRetention`. Проверить текущий режим в регионе:

```bash
curl https://bedrock.us-east-1.amazonaws.com/data-retention \
  -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK"
```

Изменение выглядит как `PUT` на тот же адрес с телом `{"mode": "aws_review"}`, но это решение для всего аккаунта в регионе и вопрос комплаенса. Его принимает администратор AWS или владелец политики данных, а политика SCP в организации может вообще запрещать режимы, отличные от `none`. Если менять режим нельзя, выберите модель, которой он не нужен, например через `/model` или закрепление версии. Нулевое хранение (ZDR) для моделей Claude согласуется с представителем Anthropic по каждому аккаунту и модели.

## Собственный код: форма запроса под свой API

Если Bedrock вызывает ваш код, первым делом сверьте, какой API вы используете и совпадает ли с ним тело запроса. У Claude на Bedrock три разные формы запроса, и поля одной схемы в другой приводят к 400.

![Схема «Один Claude — разные форматы запроса»: Converse с modelId, inferenceConfig.maxTokens и content с блоками text, InvokeModel с modelId, max_tokens и anthropic_version, эндпоинт /anthropic/v1/messages с model и заголовком anthropic-version; предупреждение не объединять схемы разных API](https://blog.laozhang.ai/posts/ru/aws-claude-400-error/img/request-formats.webp)

- **InvokeModel**: ID модели передаётся в `modelId` операции, а в теле обязательны `"anthropic_version": "bedrock-2023-05-31"`, `max_tokens` и `messages` с ролями user/assistant. Системная инструкция — отдельное поле `system`, а не сообщение.
- **Converse**: `modelId` в пути, содержимое сообщений вида `[{"text": "..."}]`, `system` — массив верхнего уровня, лимит вывода — `inferenceConfig.maxTokens`, поля конкретной модели — в `additionalModelRequestFields`. С ARN из управления промптами (Prompt management) поля `additionalModelRequestFields`, `inferenceConfig`, `system` и `toolConfig` передавать нельзя.
- **Anthropic Messages API на Bedrock**: базовый адрес `https://bedrock-runtime.{region}.amazonaws.com/anthropic` (AWS рекомендует его для новых приложений) или `https://bedrock-mantle.{region}.api.aws/anthropic/v1/messages`. Версия передаётся заголовком `anthropic-version: 2023-06-01`, а `model` — в теле.

Самые частые смешения: `2023-06-01` в поле `anthropic_version` тела InvokeModel (это значение заголовка Messages API), `inferenceConfig` в теле InvokeModel и `max_tokens` на верхнем уровне Converse вместо `inferenceConfig.maxTokens`.

Каталог сообщений `ValidationException` в базе знаний AWS (обновлён 21 сентября 2026 года) сводится к такой таблице:

| Сообщение | Причина | Что делать |
| --- | --- | --- |
| `Malformed input request: extraneous key [...] is not permitted` | в теле поле из другой схемы или другой модели | убрать поле или перенести в нужное место |
| `The provided model identifier is invalid` | неверный ID или модель недоступна в регионе | сверить ID и доступность модели в регионе |
| то же сообщение при доступе через партнёра AWS Marketplace или реселлера | реселлер не участвует в партнёрской программе Anthropic или Amazon Bedrock Authorized Reseller Program | кодом, IAM и запросом доступа не решается — участие должен оформить реселлер |
| `Your AWS account is not authorized to invoke this API operation` | у роли или пользователя IAM нет права вызывать модели | добавить разрешение в политику IAM |
| `Input is too long for requested model.` | вход плюс запрошенный вывод больше лимита модели | сократить вход или `max_tokens` |
| `"claude-..." is not supported on this API. Please use the Messages API instead.` | старый формат запроса без `messages` | перейти на формат Messages |
| `Guardrail was enabled but input is in incorrect format` | неверно заданы параметры ограничителя (guardrail) | один действующий ID и только номер версии в `guardrailVersion` |
| `Access to Anthropic models is not allowed from unsupported countries, regions, or territories` | налоговый или платёжный адрес аккаунта либо место вызова вне списка поддерживаемых стран Anthropic | смена региона AWS не помогает; сверьтесь со списком на anthropic.com/supported-countries |

Точная формулировка может немного отличаться в зависимости от SDK.

Не каждый 400 от Bedrock связан с телом запроса. Тем же статусом AWS возвращает `IncompleteSignature` (подпись, SDK или учётные данные), `InvalidAction`, `NotAuthorized` (IAM или SCP), `RequestExpired` (расхождение часов) и `ValidationError`. А `ServiceQuotaExceededException` у `InvokeModel` тоже приходит с кодом 400: запрос превысил квоту аккаунта, и AWS прямо пишет, что его можно отправить позже.

Две ошибки 400 из собственного кода, не специфичные для AWS, разобраны отдельно: [«Ошибка 400 prefill в Claude: на каких моделях и чем заменить»](https://blog.laozhang.ai/ru/posts/claude-opus-prefill-error-fix) и отклонённая роль `system` в [«Как исправить API 400 с неподдерживаемой ролью»](https://blog.laozhang.ai/ru/posts/api-400-role-system-is-not-supported-on-this-model).

## Как найти виновника и проверить исправление

Когда текст ошибки не указывает на поле прямо, сократите запрос до минимума и возвращайте параметры по одному.

![Схема «Проверяйте изменения по одному»: минимальный запрос, успешный ответ, возврат одного параметра — tools, thinking или истории — и повторная проверка; если снова 400, проверить последнее изменение](https://blog.laozhang.ai/posts/ru/aws-claude-400-error/img/restore-parameters.webp)

Минимальный вызов InvokeModel через AWS CLI с вашими регионом и ID модели в переменных окружения:

```bash
aws bedrock-runtime invoke-model \
  --region "$AWS_REGION" \
  --model-id "$MODEL_ID" \
  --body '{"anthropic_version": "bedrock-2023-05-31", "max_tokens": 256, "messages": [{"role": "user", "content": "ping"}]}' \
  --cli-binary-format raw-in-base64-out \
  output.json
```

Если падает даже он, тело запроса ни при чём: проверяйте ID модели и регион, права IAM, режим хранения данных и статус аккаунта. Если минимальный вызов проходит, возвращайте по одному `system`, инструменты, `thinking` и историю — параметр, после которого вернулась ошибка 400, и есть причина.

В Claude Code аналог минимального запроса — новая короткая сессия. Если после `/clear` первое сообщение проходит, дело в истории или объёме контекста (`/rewind`, `/compact`, `/context`). Если падает и первое сообщение, ищите причину в конфигурации: версия клиента, модель, префикс, шлюз, аккаунт.

Исправление подтверждено, когда тот же запрос с тем же ID модели и в том же регионе проходит. В Claude Code проверьте через `/status`, что провайдер и регион те, которые вы ожидали, отправьте сообщение после перезапуска, а для ошибок переполнения посмотрите `/context` и убедитесь, что запас окна есть.

## Что повторять, что нет и когда это вовсе не 400

`ValidationException` без изменений в запросе повторять бессмысленно: тот же запрос получит тот же отказ. Исключение — `ServiceQuotaExceededException`, его можно отправить позже. Когда повторять, когда переключать модель, а когда остановиться, подробно разбирает статья [«Повторить запрос LLM API или переключить модель: пять проверок»](https://blog.laozhang.ai/ru/posts/llm-api-retry-vs-fallback-model).

Без администратора AWS не обойтись, если причина в режиме хранения данных, политиках IAM или SCP, доступе аккаунта к модели, участии реселлера в программе Anthropic или адресе аккаунта в неподдерживаемой стране.

Другие статусы — уже другие проблемы:

- **403**: Claude Code показывает её как «AWS authentication failed». Bedrock возвращает 403 и для просроченных токенов, и для `AccessDeniedException` (нет права IAM); если сообщение говорит об отсутствии доступа к ID модели, включите модель для аккаунта и региона.
- **404**: `FTUFormNotFilled` значит, что не отправлена форма с описанием сценария использования моделей Anthropic; `ResourceNotFound` — ресурс не найден.
- **429**: `ThrottlingException`, то есть ограничение частоты. Кому принадлежит лимит и что с ним делать, объясняет статья [«Claude Rate Exceeded: как понять, чей лимит сработал»](https://blog.laozhang.ai/ru/posts/claude-rate-exceeded-error).
- **503 и 529**: `ServiceUnavailable` и `overloaded_error` — перегрузка сервиса, а не ошибка в вашем запросе.

## Частые вопросы

### Я выставил CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1, а 400 осталась. Почему?

Есть две частые причины. Переменная должна попасть в окружение до запуска процесса: экспорт в другом терминале или правка `settings.json` без перезапуска Claude Code не сработают. И переключатель исправляет только несовместимость beta-полей — если в тексте ошибки ID модели, `thinking`, `Input is too long`, режим хранения данных или квота, ищите причину в соответствующем разделе выше.

### Поможет ли откат Claude Code на старую версию?

Как правило, нет. Отчёты о старых регрессиях вроде `invalid beta flag` в версии 2.1.23 относятся к январю 2026 года, и эти обсуждения закрыты. Для новых моделей нужны, наоборот, свежие версии клиента: со слишком старой версией вы получите `thinking.type.enabled is not supported for this model`.

### Мой код через Converse работает, а Claude Code с той же моделью получает 400. Как так?

Claude Code вызывает не Converse, а Invoke API и отправляет свои поля: настройки мышления, `effort`, beta-поля, схемы инструментов. Успешный вызов Converse подтверждает, что модель доступна аккаунту, но не доказывает, что профиль вывода, префикс и поля Claude Code подходят. Сверьте ID и префикс через `/status` и `list-inference-profiles`, затем найдите текст ошибки в таблице в начале страницы.

## Источники

Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2026-09-25.

- [claude-code-action #1005](https://github.com/anthropics/claude-code-action/issues/1005) (github.com)
- [issue #66594](https://github.com/anthropics/claude-code/issues/66594) (github.com)
