Ошибки 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
Четыре версии и заголовка, которые стоит запомнить
Исправление 400 с advisor_20260301
По официальному журналу изменений, когда ANTHROPIC_BASE_URL указывал на прокси или шлюз, каждый запрос падал с «400 … Input tag 'advisor_20260301'». Это регрессия 2.1.275, исправленная в 2.1.276 (выпуск 2026-09-18).
Новая CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS
Исправляет сбои заголовков сессий, вызова памяти и prompt hooks за шлюзами, которые отклоняют структурированный вывод. Значение 1 убирает только поле output_config.format и парное ему beta-значение; остальные предварительные возможности остаются включены.
Отказ beta-заголовков не с 400: исправлено
Официальный журнал изменений: исправлены сбои запросов за прокси и шлюзами, которые отклоняют один из beta-заголовков Claude Code со статусом, отличным от 400, или вместе со вторым beta (выпуск 2026-10-05).
Заголовки, которые шлюз пересылает без изменений
Из официального руководства по совместимости шлюзов: оба пересылайте без изменений и не фильтруйте 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)
Вышел Claude Code 2.1.276: исправлены сбои каждого запроса с «400 … Input tag 'advisor_20260301'», когда ANTHROPIC_BASE_URL указывает на прокси или шлюз, — регрессия версии 2.1.275, вышедшей накануне.
Вышел 2.1.288 с новой переменной CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS; накануне 2.1.287 научил CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS убирать формат структурированного вывода и из запросов заголовков сессий и prompt hooks.
Вышел 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.
Читайте также
Настройка своего эндпоинта в Claude Code (ANTHROPIC_BASE_URL)
Как направить Claude Code на свой эндпоинт: две переменные, в каком заголовке идёт ключ и запись в settings.json.
Контекст 1M в Claude Code через шлюз
С 2.1.285 свои эндпоинты по умолчанию работают с 1M; что задать, если шлюз ограничен 200K.
Диагностика Context Length Exceeded
В каких формах приходит ошибка превышения контекста и как исправить каждую.
Номера версий, тексты ошибок и официальные формулировки на этой странице сверены 2026-10-07 с официальным журналом изменений и документацией Anthropic, приоритет у официальных страниц; изменения на стороне вендора возможны без предупреждения. Какие заголовки пересылает конкретный шлюз и каков его лимит контекста, смотрите в документации этого сервиса; доступность моделей — по списку на /models.