Когда запрашивают Ошибки Claude Code ANTHROPIC_AUTH_TOKEN: полная настройка и исправления, исправление обычно начинается с одного вопроса: отправляет ли Claude Code учетные данные в заголовке, который действительно читает ваш шлюз?
Для маршрутизации через шлюз Claude Code ANTHROPIC_AUTH_TOKEN отправляет Authorization: Bearer .... ANTHROPIC_API_KEY отправляет x-api-key: .... Токен в неверной переменной может выглядеть как неверный ключ, устаревший вход или сломанный шлюз, даже если само значение корректно.
Используйте это руководство, когда Claude Code не работает после того, как вы задали ANTHROPIC_AUTH_TOKEN, ANTHROPIC_BASE_URL, файл настроек Claude Code, расширение VS Code или workflow в CI.
Быстрое исправление
Начните с минимально возможной диагностики, прежде чем редактировать каждый файл настроек на вашем компьютере.
- Выберите одну переменную для учетных данных.
- Экспортируйте базовый URL шлюза и эту переменную в той же оболочке.
- Выполните запрос
curlна один токен к$ANTHROPIC_BASE_URL/v1/messages. - Запустите Claude Code из той же оболочки.
- Выполните
/statusи убедитесь, что отображаются иAnthropic base URL, и ожидаемый источник учетных данных. - Если curl проходит успешно, но Claude Code по-прежнему просит вас войти, переместите учетные данные в место, которое Claude Code читает до первоначальной настройки, например
~/.claude/settings.json, экспорт в оболочке или управляемые настройки.
Для шлюза с bearer-токеном:
export ANTHROPIC_BASE_URL="https://llm-gateway.example.com"
export ANTHROPIC_AUTH_TOKEN="REPLACE_WITH_GATEWAY_TOKEN"
curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "replace-with-a-gateway-supported-claude-model",
"max_tokens": 1,
"messages": [{"role": "user", "content": "."}]
}'Для шлюза с x-api-key:
export ANTHROPIC_BASE_URL="https://llm-gateway.example.com"
export ANTHROPIC_API_KEY="REPLACE_WITH_GATEWAY_KEY"
curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "replace-with-a-gateway-supported-claude-model",
"max_tokens": 1,
"messages": [{"role": "user", "content": "."}]
}'Ответ JSON с идентификатором сообщения и content означает, что URL и учетные данные работают. 401 означает, что шлюз отклонил учетные данные или получил их в заголовке, который он не читает.
Контрольный список ошибок Claude Code ANTHROPIC_AUTH_TOKEN: полная настройка и исправления
Используйте эту таблицу как рабочую диагностику. Не меняйте ключи, пока не будут известны активная переменная, заголовок и приоритет настроек.
| Симптом | Наиболее вероятная причина | Исправление |
|---|---|---|
401 недопустимый или нераспознанный токен | Учетные данные отозваны, введены с ошибкой или отправлены в неправильном заголовке | Если шлюз ожидает bearer-авторизацию, используйте ANTHROPIC_AUTH_TOKEN. Если он ожидает x-api-key, используйте ANTHROPIC_API_KEY. Перегенерируйте только после того, как заголовок будет указан правильно. |
| При запуске появляется предупреждение, что активны два источника учетных данных | Одновременно активны учетные данные шлюза и сохраненный вход в Claude или API-ключ | Выберите один путь. Уберите переменную шлюза, чтобы использовать сохраненный вход, или выполните /logout и оставьте только учетные данные шлюза. |
В /status нет строки Anthropic base URL | ANTHROPIC_BASE_URL не дошла до процесса Claude Code | Запустите claude из той же оболочки, перенесите переменную в ~/.claude/settings.json или настройте тот уровень, который вы фактически используете. |
| Curl работает, Claude Code просит вас войти | У CLI есть доступный base URL, но перед первичной настройкой нет доступных учетных данных | Поместите ANTHROPIC_AUTH_TOKEN в экспорт переменной оболочки, пользовательские настройки или управляемые настройки, которые Claude Code читает до запуска мастера настройки. |
ANTHROPIC_API_KEY задан, но игнорируется | Интерактивному Claude Code требуется одноразовое разрешение для пользовательского API-ключа, либо предыдущий ключ был отклонен | Включите его в /config с помощью Use custom API key. |
| Пустой или некорректно сформированный ответ при HTTP 200 | Шлюз или прокси вернул HTML, страницу входа или другой ответ, не являющийся API | Запустите запрос curl и исправьте маршрут, который отвечает JSON, не относящимся к Claude API. |
| Ошибки DNS, firewall или connection refused | По адресу ANTHROPIC_BASE_URL нет доступного отвечающего сервиса | Проверьте DNS, VPN, прокси и доступ к хосту шлюза через firewall. |
400 содержит context_management, Extra inputs are not permitted или поля схемы инструмента | Шлюз пересылает запросы Claude Code в формате Anthropic на upstream, который отклоняет поля, отправляемые Claude Code | Корректно передавайте совместимые поля, используйте маршрут, специфичный для провайдера, или временно установите CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1, когда это уместно. |
400 содержит thinking или adaptive | Сборка upstream-модели не поддерживает adaptive reasoning | Обновите upstream или используйте задокументированный обходной путь CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 для поддерживаемых случаев Claude 4.6. |
/fast не работает, хотя inference работает | Проверки fast mode могут обращаться напрямую к Anthropic вместо следования URL шлюза | Рассматривайте это отдельно от маршрутизации сообщений; добавьте прямую проверку в allowlist или используйте задокументированную переменную для пропуска, если это применимо. |
| Ошибки сертификата, хотя curl работает | Среда выполнения Claude Code доверяет другому набору CA bundle, чем curl | Установите NODE_EXTRA_CA_CERTS в путь к корпоративному CA bundle. |
Выберите ANTHROPIC_AUTH_TOKEN или ANTHROPIC_API_KEY
ANTHROPIC_AUTH_TOKEN предназначен для bearer-токена. Claude Code отправляет его как:
Authorization: Bearer <token>ANTHROPIC_API_KEY — это для API-ключа. Claude Code отправляет его так:
x-api-key: <key>Если ваша команда шлюза говорит только «token» или «Authorization header», начните с ANTHROPIC_AUTH_TOKEN. Если говорят «API key» или «x-api-key», используйте ANTHROPIC_API_KEY. Если вы угадали и получили 401, переключите переменные перед ротацией ключа.
Не задавайте обе переменные во время отладки. Именно так Ошибки Claude Code ANTHROPIC_AUTH_TOKEN: полная настройка и исправления превращается из проблемы аутентификации в проблему приоритета аутентификации.
Поместите переменные туда, откуда Claude Code действительно их читает
Экспорт в shell хорош для первого теста, потому что его легко отменить:
export ANTHROPIC_BASE_URL="https://llm-gateway.example.com"
export ANTHROPIC_AUTH_TOKEN="REPLACE_WITH_GATEWAY_TOKEN"
claudeОни применяются только к этой сессии терминала и программам, запущенным из неё. Если вы откроете VS Code, настольное приложение или фоновый агент из другого места, экспорт может быть недоступен.
Для постоянной пользовательской CLI-настройки используйте ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://llm-gateway.example.com",
"ANTHROPIC_AUTH_TOKEN": "REPLACE_WITH_GATEWAY_TOKEN"
}
}Для одного проекта используйте .claude/settings.local.json и убедитесь, что файл добавлен в gitignore, прежде чем добавлять учётные данные. Не помещайте учётные данные в .claude/settings.json, потому что этот файл предназначен для совместного использования с репозиторием.
Когда экспорт в shell и блок env в файле настроек задают одну и ту же переменную, Claude Code использует значение из файла настроек. Поэтому /status — более надёжный источник истины, чем echo $ANTHROPIC_AUTH_TOKEN.
Исправьте расширение VS Code
У расширения Claude Code для VS Code есть собственные проверки запуска. Настройте переменные шлюза в пользовательских настройках VS Code в разделе claudeCode.environmentVariables:
{
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "https://llm-gateway.example.com" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "REPLACE_WITH_GATEWAY_TOKEN" }
]
}Используйте команду VS Code Preferences: Open User Settings (JSON). Затем перезапустите сеанс расширения и выполните /status. Если расширение всё ещё запрашивает вход, значит оно не видит учётные данные на собственной проверке входа.
Исправьте GitHub Actions
Claude Code GitHub Actions читает ANTHROPIC_BASE_URL из блока env workflow. Для шлюза с x-api-key передайте ключ шлюза как входной параметр action:
env:
ANTHROPIC_BASE_URL: https://llm-gateway.example.com
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}Для шлюза с bearer-токеном action по-прежнему требует anthropic_api_key, чтобы пройти свою проверку запуска, а ANTHROPIC_AUTH_TOKEN — это значение, которое Claude Code отправляет как Authorization: Bearer:
env:
ANTHROPIC_BASE_URL: https://llm-gateway.example.com
ANTHROPIC_AUTH_TOKEN: ${{ secrets.GATEWAY_API_KEY }}
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}Храните эти значения в GitHub Secrets. Не вставляйте учетные данные gateway в логи workflow, комментарии к issue или коммитимые файлы.
Используйте /status как проверку истины
После любого изменения конфигурации выполните:
/statusДля gateway в формате Anthropic вкладка Status должна показывать:
Anthropic base URL: https://llm-gateway.example.com
Auth token: ANTHROPIC_AUTH_TOKENили:
Anthropic base URL: https://llm-gateway.example.com
API key: ANTHROPIC_API_KEYЕсли строка base URL отсутствует, ANTHROPIC_BASE_URL не дошел до сессии. Если источником учетных данных является сохраненный вход, Claude Code не использует учетные данные gateway. Если оба значения выглядят корректно, а сообщение по-прежнему не проходит, проблема, скорее всего, теперь в маршрутизации gateway, совместимости upstream, поведении прокси или доверии к сертификату.
Примечание о Flatkey для маршрутизации gateway в Claude Code
Flatkey полезен в двух разных рабочих процессах Claude Code, и это различие имеет значение.
Для вызовов моделей, совместимых с OpenAI, из проекта или agent skill базовый URL Flatkey:
https://router.flatkey.ai/v1Для собственного пути gateway Claude Code следуйте настройке gateway в формате Anthropic Messages и не добавляйте /v1 к ANTHROPIC_BASE_URL, если только собственные инструкции gateway для Claude Code явно не говорят вам это сделать. Типичный шаблон провайдера:
export ANTHROPIC_BASE_URL="https://router.flatkey.ai"
export ANTHROPIC_API_KEY="$FLATKEY_API_KEY"Затем выполните /status, отправьте короткий prompt и проверьте ledger или логи gateway. Держите настройку Claude Code SKILL.md отдельно от этого пути: skill обучает Claude Code тому, как вызывать поддерживаемые Flatkey модели и инструменты из вашего репозитория; маршрутизация gateway управляет тем, куда Claude Code отправляет свой собственный трафик семейства Claude.
Если вы стандартизируете трафик agent между провайдерами, сопоставьте эту статью с руководствами Claude API proxy vs multi-model router и Flatkey API quickstart.
Проверки оператора gateway, когда токен — не настоящая проблема
Некоторые поисковые запросы по Claude Code ANTHROPIC_AUTH_TOKEN Errors: Complete Configuration Fixes начинаются как проблема локальной настройки и заканчиваются на стороне gateway. Если однобуквенный curl проходит аутентификацию и /status выглядит правильно, проверьте следующие условия на стороне gateway:
| Проверка шлюза | Почему это важно |
|---|---|
Отдавайте формат Anthropic Messages по адресу /v1/messages | ANTHROPIC_BASE_URL заставляет Claude Code воспринимать шлюз как конечную точку в формате Anthropic. |
Пробрасывайте anthropic-version и anthropic-beta без изменений | Возможности Claude Code меняются от релиза к релизу; статические allowlist могут сломать более поздние запросы. |
| Сохраняйте потоковую передачу и поведение keep-alive | Буферизация или удаление байтов потока может привести к зависанию Claude Code. |
| Пробрасывайте тела ошибок без изменений | Claude Code использует текст ошибок upstream для некоторых путей восстановления. |
| Не возвращайте HTML с HTTP 200 | Claude Code ожидает JSON Claude API или ответы event-stream, а не страницу входа браузера. |
Исключите /v1/messages из правил WAF для тела запроса | Подсказки Claude Code могут содержать теги в стиле XML и исходный код, которые триггерят общие фильтры тела. |
| Возвращайте полезные заголовки повторных попыток | retry-after и x-should-retry влияют на поведение повторных попыток. |
Если ваш шлюз стоит перед провайдером, который не принимает полный формат запроса Anthropic Messages, используйте переменные, специфичные для провайдера, вместо ANTHROPIC_BASE_URL, или преобразуйте схему внутри шлюза. Не удаляйте поля без разбора; это лишь заменит одну видимую ошибку на более поздний сбой возможностей.
Копируемая запись для отладки
Используйте эту запись, когда передаете проблему коллеге или оператору шлюза:
claude_code_auth_debug:
date_checked: 2026-09-22
surface: cli # cli | vscode | github_actions | agent_sdk | desktop
claude_code_version: ""
expected_gateway_base_url: "https://llm-gateway.example.com"
variable_used: "ANTHROPIC_AUTH_TOKEN"
expected_header: "Authorization: Bearer"
status_tab_base_url_seen: false
status_tab_credential_source: ""
curl_status_code: ""
curl_response_shape: "json_message | 401 | html_200 | dns_error | tls_error | other"
settings_files_checked:
- "~/.claude/settings.json"
- ".claude/settings.local.json"
- ".claude/settings.json"
shell_started_claude: false
saved_login_present: unknown
gateway_logs_received_request: unknown
suspected_fix: ""Эта запись заставляет расследование разделить три вещи: где Claude Code прочитал конфигурацию, какой заголовок он отправил и что вернул шлюз.
Часто задаваемые вопросы
Что использовать: ANTHROPIC_AUTH_TOKEN или ANTHROPIC_API_KEY?
Используйте ANTHROPIC_AUTH_TOKEN, когда шлюз ожидает bearer token или заголовок Authorization. Используйте ANTHROPIC_API_KEY, когда шлюз ожидает x-api-key. Если вы не знаете, начните с ANTHROPIC_AUTH_TOKEN, проверьте с помощью curl-запроса и переключитесь, если получите 401.
Почему /status не показывает мой базовый URL?
ANTHROPIC_BASE_URL не дошел до процесса Claude Code. Запустите claude из той же оболочки, переместите значение в правильный файл настроек или настройте используемую поверхность, например настройки VS Code или env в GitHub Actions.
Почему curl работает, но Claude Code все равно просит меня войти?
Базовый URL доступен, но у Claude Code нет доступных учетных данных в момент, когда они нужны. Поместите ANTHROPIC_AUTH_TOKEN или правильную переменную с учетными данными в экспорт shell, пользовательские настройки или управляемые настройки, которые Claude Code читает до первоначальной настройки.
Можно ли положить токен в .claude/settings.json?
Не помещайте секреты в .claude/settings.json, потому что это общий файл проекта. Используйте ~/.claude/settings.json, .claude/settings.local.json, управляемые настройки, менеджер секретов или секреты CI.
Направляет ли ANTHROPIC_AUTH_TOKEN Claude Code к моделям, не относящимся к Claude?
Нет. Он только меняет способ аутентификации Claude Code в настроенном шлюзе в формате Anthropic. Шлюз может маршрутизировать или проксировать запросы в соответствии со своей собственной реализацией, но Claude Code по-прежнему ожидает формат Claude API на пути ANTHROPIC_BASE_URL.
Какова самая безопасная финальная проверка?
Выполните однократный запрос curl с одним токеном, запустите Claude Code из настроенной среды, выполните /status, отправьте короткий запрос и подтвердите, что журнал или логи шлюза показывают запрос. Эта четырехшаговая проверка — надежное исправление, стоящее за Ошибки Claude Code ANTHROPIC_AUTH_TOKEN: полная настройка и исправления.
Проверенные источники
- Документация Anthropic Claude Code: подключение Claude Code к шлюзу LLM, доступ 2026-09-22.
- Документация Anthropic Claude Code: файлы настроек и приоритет, доступ 2026-09-22.
- Документация Anthropic Claude Code: руководство по совместимости шлюза Claude Code, доступ 2026-09-22.
- Справочный центр Claude: управление переменными окружения API key в Claude Code, доступ 2026-09-22.
- Общедоступный
SKILL.mdFlatkey, доступ 2026-09-22. - База знаний Flatkey: обзор продукта, маркетинговая стратегия, тон бренда.



