Диагностика · на 2026-10-07

Ошибки Claude Code за сторонним шлюзом и официальные исправления (2026)

На 2026-10-07 для распространённых ошибок 400, которые Claude Code выдаёт за сторонним шлюзом или с собственным ANTHROPIC_BASE_URL, есть официальное исправление или способ решения: «400 … Input tag 'advisor_20260301'» исправлена в 2.1.276 и новее; если шлюз отклоняет структурированный вывод, задайте CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1 (переменная появилась в 2.1.288); сбои запросов, когда шлюз отклоняет beta-заголовок со статусом, отличным от 400, исправлены в 2.1.290. Ошибку «Extra inputs are not permitted» официальный справочник ошибок связывает со шлюзом, который срезал заголовок anthropic-beta, — шлюз должен пересылать его без изменений. Здесь для каждой ошибки приведены точный текст, причина и исправление — по официальному журналу изменений Claude Code и документации по шлюзам.

Обновлено 2026-10-08

#ANTHROPIC_BASE_URL#anthropic-beta#Extra inputs are not permitted#advisor_20260301

Четыре версии и заголовка, которые стоит запомнить

2.1.276

Исправление 400 с advisor_20260301

По официальному журналу изменений, когда ANTHROPIC_BASE_URL указывал на прокси или шлюз, каждый запрос падал с «400 … Input tag 'advisor_20260301'». Это регрессия 2.1.275, исправленная в 2.1.276 (выпуск 2026-09-18).

2.1.288

Новая CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS

Исправляет сбои заголовков сессий, вызова памяти и prompt hooks за шлюзами, которые отклоняют структурированный вывод. Значение 1 убирает только поле output_config.format и парное ему beta-значение; остальные предварительные возможности остаются включены.

2.1.290

Отказ beta-заголовков не с 400: исправлено

Официальный журнал изменений: исправлены сбои запросов за прокси и шлюзами, которые отклоняют один из beta-заголовков Claude Code со статусом, отличным от 400, или вместе со вторым beta (выпуск 2026-10-05).

anthropic-version + anthropic-beta

Заголовки, которые шлюз пересылает без изменений

Из официального руководства по совместимости шлюзов: оба пересылайте без изменений и не фильтруйте anthropic-beta белым списком отдельных значений — набор меняется от релиза к релизу Claude Code.

Почему со шлюзом появляются ошибки 400

На 2026-10-07 у ошибок 400 в Claude Code за сторонним шлюзом два основных источника. Первый — регрессии клиента: схема инструмента Artifact в 2.1.265–2.1.267 и запись инструмента advisor в 2.1.275; это лечится обновлением. Второй — шлюз, который не пересылает beta-заголовки вместе с парными полями тела запроса. Официальное руководство по совместимости говорит, что Claude Code считает шлюз из ANTHROPIC_BASE_URL эндпоинтом формата Anthropic и отправляет ему те же beta-заголовки и поля тела, что и api.anthropic.com; шлюз, который срезает заголовок, но пропускает тело, или пересылает тело в сервис с другой схемой, даёт жёсткие ошибки 400, и только когда обе половины отсутствуют одновременно, функция тихо отключается. Там же сказано, что шлюз, переписывающий тело запроса ради проверки содержимого, ломает эту пару точно так же.

С 2.1.285: свои эндпоинты по умолчанию на 1M

Запись журнала изменений Claude Code 2.1.285 (выпуск 2026-09-29) гласит: «Changed sessions behind a custom ANTHROPIC_BASE_URL to use the 1M context window of models that have one (Opus 4.7+, Sonnet 5+, Fable); run /autocompact 200k if your gateway stops at 200K». То есть модели с окном 1M (Opus 4.7+, Sonnet 5+, Fable) за собственным эндпоинтом работают с 1M, а если шлюз ограничен 200K, нужно выполнить /autocompact 200k. Официальная страница настройки моделей добавляет, что Claude Code не может определить более низкий лимит, заданный шлюзом или сервером за ним; если шлюз отклоняет запросы больше 200K токенов, задайте CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 в окружении, из которого запускается Claude Code.

Хронология (даты релизов на GitHub)

2026-09-18

Вышел Claude Code 2.1.276: исправлены сбои каждого запроса с «400 … Input tag 'advisor_20260301'», когда ANTHROPIC_BASE_URL указывает на прокси или шлюз, — регрессия версии 2.1.275, вышедшей накануне.

2026-10-02

Вышел 2.1.288 с новой переменной CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS; накануне 2.1.287 научил CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS убирать формат структурированного вывода и из запросов заголовков сессий и prompt hooks.

2026-10-05

Вышел 2.1.290: исправлены сбои запросов, когда шлюз отклонял beta-заголовок со статусом, отличным от 400, или вместе со вторым beta. На 2026-10-07 последний релиз — 2.1.292 (вышел 2026-10-06).

Подтверждено vs не подтверждено

Подтверждено (дословно в официальных источниках)

Всё перечисленное можно дословно сверить с официальным журналом изменений и документацией Claude Code: 2.1.276 исправляет 400 с advisor_20260301 (регрессия 2.1.275), а начиная с 2.1.280 при включённом advisor Claude Code после такого же отказа один раз повторяет запрос без этой записи; 2.1.287 распространяет CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS на формат структурированного вывода, а 2.1.288 добавляет CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS; 2.1.290 исправляет отказ beta-заголовков со статусом не 400; с 2.1.285 модели с окном 1M за своими эндпоинтами по умолчанию работают с 1M; шлюз должен пересылать anthropic-version (сейчас 2023-06-01) и anthropic-beta без изменений; а поскольку восстановление в Claude Code опирается на текст ошибки, тела ответов с ошибками тоже нужно пересылать без изменений. Даты релизов взяты из GitHub Releases.

Не подтверждено / официально не сказано

На три вопроса официального ответа нет, поэтому не делайте по ним выводов. Во-первых, запись о 2.1.290 не приводит текст ошибки и не называет конкретный beta-заголовок. Во-вторых, какие заголовки пересылает ваш шлюз, какие поля проверяет и каков его лимит контекста, зависит от самого шлюза: официальная документация за него не отвечает, а Claude Code не видит более низкий лимит шлюза. В-третьих, набор возможностей, которые отправляет Claude Code, растёт от релиза к релизу, и официально советуют проверять шлюз на новых релизах, а не фиксировать наблюдаемый список. Поэтому этот перечень не окончательный, и страница не обещает, что какой-либо шлюз, включая QCode, пропускает конкретное beta-значение.

Что выбрать: обновление, правка шлюза или переменная

Обновить Claude Code или временная переменная

При регрессиях клиента сначала обновляйтесь: 400 из-за схемы инструмента в 2.1.265–2.1.267 исправлена с 2.1.268, advisor_20260301 в 2.1.275 — с 2.1.276. Если обновиться пока нельзя, официальные временные меры — отключить инструмент Artifact (CLAUDE_CODE_DISABLE_ARTIFACT=1) и задать CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 соответственно. Для обновления официальная страница установки указывает claude update, а для установки через npm — npm install -g @anthropic-ai/claude-code@latest.

DISABLE_EXPERIMENTAL_BETAS vs DISABLE_STRUCTURED_OUTPUTS

CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 действует широко: убирает context management и его поле context_management, beta-поля инструментов вроде strict и defer_loading, поле структурированного вывода output_config.format (с 2.1.287), output_config.task_budget и поиск инструментов MCP. При этом beta-значения для расширенного контекста, interleaved thinking и effort остаются, как и значения, которые вы сами добавили через ANTHROPIC_BETAS. CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1 (с 2.1.288) убирает только поле формата структурированного вывода и парное ему beta-значение, остальные предварительные возможности не трогает.

Текст ошибки → причина → исправление

① «400 … Input tag 'advisor_20260301'» на каждом запросе → при постепенном развёртывании 2.1.275 запросы несут запись инструмента advisor даже при выключенном advisor, а шлюз, проверяющий типы инструментов, отклоняет весь запрос → обновитесь до 2.1.276 или новее; на 2.1.275 задайте CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1. При включённом advisor с 2.1.280 Claude Code один раз повторяет запрос без этой записи и до выхода не отправляет advisor на этот base URL. ② «API Error: 400 ... Extra inputs are not permitted ... context_management» → прокси или LLM-шлюз срезал заголовок anthropic-beta, и API отклонил зависящие от него поля → пусть шлюз пересылает anthropic-beta без изменений; запасной вариант — CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Такие 400 Claude Code не повторяет. ③ Ошибка «Unexpected value(s)» для заголовка anthropic-beta → шлюз отклоняет beta-значение → CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1; сбои, когда шлюз отклоняет beta-заголовок со статусом не 400 или вместе со вторым beta, исправлены в 2.1.290 (текст ошибки для этого случая в журнале изменений не приведён); неустранимая «API Error: 400» на каждом ходе за шлюзом, который переписывает ответы с ошибками, исправлена в 2.1.275. ④ 400 с упоминанием output_config, часто «Extra inputs are not permitted», при этом сбоят заголовки сессий, вызов памяти или prompt hooks → сервис за шлюзом отклоняет поля структурированного вывода → с 2.1.288 задайте CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1, она убирает только поле формата; либо CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 (охватывает это с 2.1.287), effort она оставляет. ⑤ 400 с упоминанием thinking или adaptive, например «Input tag 'adaptive' found» → сборка модели за шлюзом не принимает adaptive reasoning → обновите эту модель; на Opus 4.6 и Sonnet 4.6 вместо этого подойдёт CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1. ⑥ 400 на каждом запросе в 2.1.265–2.1.267, шлюз своими словами отклоняет input schema инструмента или её pattern → регулярное выражение в схеме инструмента Artifact, которое такие эндпоинты отклоняют → обновитесь до 2.1.268 или новее либо отключите инструмент Artifact. ⑦ «API returned an empty or malformed response (HTTP 200)» → шлюз или промежуточный прокси вернул не ответ API, чаще всего HTML-страницу ошибки или входа → проверьте прямым запросом curl и исправьте участок, который отвечает не ответом Claude API; та же ошибка из-за того, что шлюз помечает непотоковый ответ как text/plain, исправлена в 2.1.271. ⑧ 400 о лимите контекста словами самого шлюза, например «ContextWindowExceededError» или «prompt token count of N exceeds the limit of M» → лимит шлюза меньше родного окна модели, а ошибка переписана, поэтому Claude Code не сжимает контекст и не повторяет запрос автоматически → восстановите сессию через /compact; для профилактики задайте CLAUDE_CODE_AUTO_COMPACT_WINDOW равным лимиту шлюза (минимум 100 000); с 2.1.285, если шлюз ограничен 200K, выполните /autocompact 200k.

На QCode

На 2026-10-07 документация QCode описывает подключение Claude Code так: ANTHROPIC_BASE_URL — https://api.qcode.cc/api (без /v1 и без завершающего слэша), ANTHROPIC_AUTH_TOKEN — ключ, начинающийся с cr_, который создаётся в консоли; модели Claude работают только через эндпоинт протокола Anthropic. Страница диагностики QCode приводит те же исправления: для «400 … Input tag 'advisor_20260301'» в 2.1.275 — обновиться до 2.1.276 или выше, для «Unexpected value(s) … anthropic-beta» — задать CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1; и советует убедиться, что у вас последняя версия, потому что многие проблемы уже исправлены в новых релизах. Начните с curl-самопроверки из документации: POST на /api/v1/messages без тела вернул 400 — путь и ключ работают, 401 — ключ недействителен. Оплата по токенам, цены каждой модели — на /models.

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

Как исправить «400 … Input tag 'advisor_20260301'»?

Обновите Claude Code до 2.1.276 или новее. Это регрессия 2.1.275: при постепенном развёртывании запросы несли запись инструмента advisor даже при выключенном advisor, и шлюзы, проверяющие типы инструментов, отклоняли весь запрос; с 2.1.276 за шлюзом из ANTHROPIC_BASE_URL эта запись не отправляется, пока вы сами не включите advisor. Если обновиться пока нельзя, задайте CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1. При включённом advisor с 2.1.280 Claude Code после такого же отказа один раз повторяет запрос без записи, а затем до выхода не отправляет advisor на этот base URL, и /advisor на это время отключён.

«Extra inputs are not permitted» — это проблема шлюза?

Как правило, да. Официальный справочник ошибок говорит, что прокси или LLM-шлюз между Claude Code и API срезал заголовок anthropic-beta, и API отклонил зависящие от него поля; типичный текст — «API Error: 400 ... Extra inputs are not permitted ... context_management». Правильное решение — чтобы шлюз пересылал anthropic-beta без изменений; запасной вариант — задать CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 перед запуском. В документации также сказано, что некоторые beta этой переменной не управляются, а ошибки 400 из-за полей context management и схем инструментов Claude Code не повторяет.

Какие заголовки шлюз должен пересылать?

anthropic-version и anthropic-beta — без изменений, а если за шлюзом стоит Claude Platform on AWS, ещё и anthropic-workspace-id. Текущее значение anthropic-version — 2023-06-01; anthropic-beta пересылайте дословно и не фильтруйте белым списком отдельных значений, потому что набор меняется от релиза к релизу. Учётные данные идут в Authorization или x-api-key в зависимости от того, какую переменную вы задали; всё, что не помечено как «пересылать без изменений», шлюз может читать сам или игнорировать. Документация также просит пересылать тела ответов с ошибками без изменений, потому что автоматические повторы Claude Code сверяются с текстом ошибки.

Чем ANTHROPIC_BETAS отличается от CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS?

Они действуют в противоположных направлениях. ANTHROPIC_BETAS — список дополнительных значений anthropic-beta через запятую; по документации, Claude Code и так отправляет нужные ему beta-заголовки, а эта переменная позволяет включить beta Anthropic API раньше, чем в Claude Code появится встроенная поддержка. CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 убирает предварительные значения anthropic-beta и парные им поля тела — для шлюзов, которые отвечают «Unexpected value(s)» или «Extra inputs are not permitted». Вторая переменная не убирает значения, добавленные вами через ANTHROPIC_BETAS, поэтому если шлюз отклоняет именно их, удалите их из ANTHROPIC_BETAS сами.

Мой шлюз поддерживает только 200K. Что делать после 2.1.285?

Выполните /autocompact 200k — это решение из записи журнала изменений 2.1.285. С 2.1.285 модели с окном 1M (Opus 4.7+, Sonnet 5+, Fable) за собственным ANTHROPIC_BASE_URL работают с 1M, а официальная страница настройки моделей предупреждает, что Claude Code не видит более низкий лимит шлюза. Чтобы настройка действовала при каждом запуске, задайте CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 в окружении, из которого запускается Claude Code. Если шлюз сообщает о переполнении своими словами, например ContextWindowExceededError, Claude Code сам не сожмёт контекст и не повторит запрос — сначала выполните /compact вручную.

Что проверить первым делом, если эти ошибки появились на QCode?

Проверьте версию Claude Code и обновитесь до последней: документация QCode тоже отмечает, что многие проблемы уже исправлены в новых версиях. На 2026-10-07 последняя — 2.1.292, официальная команда обновления — claude update. Затем проверьте настройки: ANTHROPIC_BASE_URL должен быть https://api.qcode.cc/api (без /v1 и без завершающего слэша), учётные данные — в ANTHROPIC_AUTH_TOKEN, который отправляется как заголовок Authorization: Bearer. Если «Unexpected value(s) … anthropic-beta» не уходит, задайте CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1, как сказано в документации QCode.

Источники

Номера версий и исправления: официальный журнал изменений Claude Code (CHANGELOG.md в репозитории anthropics/claude-code на GitHub, записи 2.1.268, 2.1.271, 2.1.275, 2.1.276, 2.1.280, 2.1.285, 2.1.287, 2.1.288 и 2.1.290), даты релизов (UTC) — из GitHub Releases того же репозитория. Причины и исправления: на code.claude.com — таблица диагностики в «Connect Claude Code to an LLM gateway», Claude Code gateway compatibility guide, Error reference, а также страницы переменных окружения, настройки моделей и Advanced setup. Подключение к QCode и порядок проверки: страницы диагностики, переменных окружения и эндпоинтов и форматов API на docs.qcode.cc. Всё получено 2026-10-07.

Обновитесь и подключитесь снова

Укажите base URL https://api.qcode.cc/api и ключ в ANTHROPIC_AUTH_TOKEN — одного ключа cr_ достаточно, чтобы подключить Claude Code. Оплата по токенам, цены каждой модели — на /models.

Читайте также

Номера версий, тексты ошибок и официальные формулировки на этой странице сверены 2026-10-07 с официальным журналом изменений и документацией Anthropic, приоритет у официальных страниц; изменения на стороне вендора возможны без предупреждения. Какие заголовки пересылает конкретный шлюз и каков его лимит контекста, смотрите в документации этого сервиса; доступность моделей — по списку на /models.

Сначала попробуйте, потом решайте

Не уверены, какой тариф выбрать? Начните со «Стартового» ($8.57/мес), а при апгрейде остаток старого тарифа вернётся на баланс.