Перейти к основному содержанию
Шлюз LLM — это прокси, который ваша организация запускает между Claude Code и поставщиком модели. Когда ваша организация использует его, Claude Code аутентифицируется на шлюзе с учетными данными, которые выдает ваша организация, вместо вашего личного входа claude.ai. Эта страница предназначена для разработчиков, запускающих Claude Code через шлюз, который управляет их организация. Она охватывает два пути: проверка того, уже ли администратор его настроил для вас, и самостоятельная настройка, если он этого не сделал.

Проверка существующей конфигурации

Администраторы могут распространять адрес шлюза и учетные данные через управляемые параметры, управление устройствами или apiKeyHelper, чтобы Claude Code подхватил их при запуске без каких-либо действий с вашей стороны. Чтобы проверить, уже ли ваша организация это сделала:
1

Запустите Claude Code

Запустите claude. Если он открывается на экран входа вместо сеанса, учетные данные шлюза не были распространены; настройте его самостоятельно ниже.
2

Проверьте вкладку Status

Если Claude Code запустил сеанс без отображения экрана входа, запустите /status, откройте вкладку Status и проверьте две строки:
  • Anthropic base URL: эта строка появляется только при установке адреса шлюза. Если ее нет, Claude Code не указан на шлюз; настройте его самостоятельно ниже.
  • Auth token или API key: строка, называющая ANTHROPIC_AUTH_TOKEN, ANTHROPIC_API_KEY или apiKeyHelper, подтверждает, что учетные данные шлюза активны. Строка Login method, называющая учетную запись claude.ai, означает, что учетные данные не были распространены; установите их самостоятельно.
3

Отправьте тестовое сообщение

Закройте меню /status и отправьте любой запрос в Claude Code. Обычный ответ от Claude без ошибок подтверждает, что соединение с шлюзом работает.
Если обе строки в меню /status выглядят правильно, но сообщение Claude не проходит, см. таблицу устранения неполадок.

Самостоятельная настройка Claude Code

Чтобы самостоятельно настроить Claude Code для шлюза, вам нужны от команды шлюза:
  • Базовый URL шлюза
  • Учетные данные: строка ключа или токена, или команда, которая их получает
Разделы ниже охватывают конфигурацию по порядку:

Установка переменной учетных данных

Чтобы аутентифицировать Claude Code на шлюзе, установите ваши учетные данные в переменную окружения. Какая переменная зависит от того, что вам сказала команда шлюза:
Установите учетные данные вИспользуйте когда
ANTHROPIC_AUTH_TOKENКоманда шлюза сказала “bearer token” или “Authorization header”
ANTHROPIC_API_KEYКоманда шлюза сказала “API key” или “x-api-key”
apiKeyHelperУчетные данные ротируются или поступают из хранилища
Если вам не сказали, какой тип, используйте ANTHROPIC_AUTH_TOKEN; запрос проверки ниже показывает, как определить, нужно ли переключиться.

Установка базового URL и учетных данных

Установите базовый URL шлюза и переменную учетных данных, которую вы выбрали выше, как переменные окружения. Примеры используют ANTHROPIC_AUTH_TOKEN; замените его на ANTHROPIC_API_KEY, если это переменная, которую вы выбрали. Вы можете установить их в вашей оболочке, что длится один сеанс терминала, или в файле параметров Claude Code, что сохраняется везде, где работает Claude Code. Для вашего первого соединения начните с экспорта оболочки и запустите запрос проверки перед перемещением значений в файл параметров.

Установка как переменные окружения оболочки

Замените значения на те, которые вам дала команда шлюза:
export ANTHROPIC_BASE_URL=https://llm-gateway.example.com
export ANTHROPIC_AUTH_TOKEN=sk-gateway-key
Экспорты оболочки применяются только к этому сеансу терминала и программам, запущенным из него; редактор, запущенный с док-станции или меню “Пуск”, их не увидит. Чтобы они сохранялись в новых терминалах, добавьте те же строки в профиль вашей оболочки, такой как ~/.zshrc, ~/.bashrc или ваш PowerShell $PROFILE, или используйте файл параметров вместо этого.

Установка в файле параметров

Чтобы конфигурация применялась везде, где работает Claude Code, без зависимости от вашей оболочки, установите переменные в блоке env файла параметров. Файлы параметров имеют разные области:
  • ~/.claude/settings.json применяется ко всем вашим проектам. На Windows путь — %USERPROFILE%\.claude\settings.json
  • .claude/settings.local.json применяется к одному проекту. Claude Code добавляет его в ваш gitignore при создании файла; если вы создаете его самостоятельно, сначала добавьте его в gitignore вручную, чтобы случайно не зафиксировать ваши учетные данные
Не помещайте учетные данные в .claude/settings.json проекта. Этот файл фиксируется и совместно используется со всеми, кто клонирует репозиторий.
Блок env выглядит одинаково в любом файле:
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://llm-gateway.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-gateway-key"
  }
}
Когда и экспорт оболочки, и блок env файла параметров устанавливают одну и ту же переменную, применяется значение файла параметров. Запустите /status, чтобы увидеть, какой базовый URL и источник учетных данных использует Claude Code.

Проверка соединения

С переменными, экспортированными в вашей оболочке, отправьте однотокенный запрос на шлюз напрямую. Это подтверждает, что URL и учетные данные работают, прежде чем вы откроете Claude Code, поэтому сбой указывает на шлюз, а не на вашу конфигурацию. Команды ниже читают переменные оболочки, поэтому им нужны экспорты оболочки даже если вы также поместили значения в файл параметров.
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": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'
Если ваш шлюз ожидает ключи в заголовке x-api-key, замените заголовок Authorization на x-api-key: $ANTHROPIC_API_KEY в команде Bash или запись таблицы хеша "Authorization" на "x-api-key" = "$env:ANTHROPIC_API_KEY" в команде PowerShell. Ответ JSON, начинающийся с {"id":"msg_ и включающий поле "content":[...], означает, что шлюз доступен и учетные данные работают. Ошибка, называющая неизвестную модель, все еще доказывает, что URL и учетные данные работают, так как шлюз аутентифицировал запрос перед отклонением имени модели; вам не нужно находить модель, которую обслуживает ваш шлюз, для этого теста. 401 означает, что учетные данные были отклонены: если вы угадали переменную, переключитесь на другую и переэкспортируйте.

Подтверждение в Claude Code

Запустите claude из той же оболочки, чтобы он унаследовал экспорты, отправьте сообщение и запустите /status. На вкладке Status строка Anthropic base URL должна показывать адрес вашего шлюза, что подтверждает маршрутизацию запросов туда; если строки нет, переменная не достигла сеанса. Строка Auth token или API key, называющая переменную, которую вы установили, подтверждает, что учетные данные шлюза активны, а не сохраненный вход claude.ai. Если сообщение не проходит или /status не показывает URL шлюза, см. таблицу устранения неполадок ниже.

Как переменная учетных данных отображается на заголовок

Каждая переменная отправляет учетные данные в другом HTTP-заголовке: ANTHROPIC_AUTH_TOKEN в Authorization: Bearer, ANTHROPIC_API_KEY в x-api-key и apiKeyHelper в обоих. Учетные данные в неправильной переменной достигают шлюза в заголовке, который он не читает, и запрос не проходит с 401. Если запрос проверки вернул 401, переключитесь на другую переменную и попробуйте снова.

Конфликты с существующим входом

Переменная учетных данных шлюза имеет приоритет над сохраненным входом claude.ai или ключом Console. Ваш вход claude.ai остается сохраненным и неиспользуемым, пока переменная установлена; отмените установку переменной, и Claude Code вернется к нему. С ANTHROPIC_AUTH_TOKEN переменная имеет приоритет немедленно. С ANTHROPIC_API_KEY вам предлагается один раз в интерактивном режиме одобрить ключ перед тем, как он возьмет верх. Запустите /status, чтобы подтвердить, какой источник учетных данных активен. Если при запуске показывается предупреждение о конфликте аутентификации, называющее два источника, см. первую строку таблицы устранения неполадок, чтобы узнать, какой из них отбросить. Чтобы очистить сохраненный вход, чтобы остались только учетные данные шлюза, запустите /logout.

Настройка каждой поверхности

CLI читает переменные окружения и файлы параметров выше. Другие поверхности — это расширение VS Code, настольное приложение, GitHub Actions, Agent SDK и облачные поверхности, такие как Slack и веб; разделы ниже охватывают, достигают ли эти параметры каждую.

Расширение VS Code

Установите переменные шлюза для расширения VS Code в claudeCode.environmentVariables в собственных параметрах пользователя VS Code, открытых командой Preferences: Open User Settings (JSON). Расширение проверяет учетные данные из этого параметра перед запуском, поэтому это надежное место для учетных данных шлюза; значения в ~/.claude/settings.json достигают порожденного процесса, но не проверку входа самого расширения.
{
  "claudeCode.environmentVariables": [
    { "name": "ANTHROPIC_BASE_URL", "value": "https://llm-gateway.example.com" },
    { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-gateway-key" }
  ]
}

Настольное приложение

Настольное приложение читает маршрутизацию шлюза из конфигурации, распределяемой администратором, а не из ANTHROPIC_BASE_URL или settings.json. Если ваша организация распределила ее, настольное приложение маршрутизирует через шлюз без каких-либо действий с вашей стороны; если нет, используйте терминальный CLI или расширение VS Code для сеансов шлюза. Администраторы распределяют конфигурацию, как описано в развертывании организации. Если настольное приложение показывает Gateway was unreachable, приложение не смогло достичь настроенный базовый URL при запуске; проверьте URL и сетевой путь с помощью теста curl выше.

GitHub Actions

Claude Code GitHub Actions читает ANTHROPIC_BASE_URL и ANTHROPIC_CUSTOM_HEADERS из блока env рабочего процесса. Передайте учетные данные как вход anthropic_api_key действия; действие устанавливает его как ANTHROPIC_API_KEY, поэтому он достигает шлюза в заголовке x-api-key. Для шлюза x-api-key установите базовый URL в env и передайте ключ шлюза как вход:
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-token передайте один и тот же секрет как вход anthropic_api_key и ANTHROPIC_AUTH_TOKEN в блоке env рабочего процесса. Действие требует anthropic_api_key, CLAUDE_CODE_OAUTH_TOKEN или федерацию рабочей нагрузки перед запуском Claude Code, и оно не читает ANTHROPIC_AUTH_TOKEN, поэтому вход удовлетворяет эту проверку запуска, а переменная окружения помещает ключ в заголовок Authorization, который читает шлюз. Копия в x-api-key игнорируется:
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 }}
Для других вариантов аутентификации действия, включая CLAUDE_CODE_OAUTH_TOKEN и федерацию рабочей нагрузки, см. Claude Code GitHub Actions и README действия.

Agent SDK

Agent SDK не имеет опций, специфичных для шлюза; он передает переменные окружения процессу Claude Code, который он порождает. Каждый SDK принимает опцию env, которая устанавливает окружение порожденного процесса, и SDK TypeScript и Python обрабатывают это по-разному:
  • TypeScript: порожденный процесс по умолчанию наследует родительское окружение, но установка options.env полностью заменяет окружение. Распределите process.env в него, чтобы сохранить переменные шлюза.
  • Python: ClaudeAgentOptions(env=...) объединяется поверх унаследованного окружения, поэтому переменные шлюза, установленные в родительском процессе, проходят без распределения.
const result = query({
  prompt: "...",
  options: {
    env: {
      ...process.env,
      ANTHROPIC_BASE_URL: "https://llm-gateway.example.com",
      ANTHROPIC_AUTH_TOKEN: process.env.GATEWAY_KEY,
    },
  },
})

Slack, веб и Remote Control

Claude Code в Slack и Claude Code на веб — это размещенные Anthropic продукты, которые всегда используют API Anthropic; они не являются частью развертывания шлюза. Переменные шлюза, установленные в конфигурации окружения облачного сеанса, не применяются. Если ваш трафик должен оставаться на шлюзе, не включайте эти поверхности для этих пользователей. Remote Control и голосовая диктовка оба полагаются на идентичность claude.ai: Remote Control для связи живого сеанса с вашей учетной записью и голосовая диктовка для достижения конечной точки транскрипции claude.ai. Они недоступны, пока активны ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN или apiKeyHelper. Чтобы использовать любой из них, отмените установку учетных данных шлюза и вместо этого войдите с claude.ai; /doctor называет переменную для отмены установки.

Дополнительная конфигурация

Эти параметры охватывают случаи, выходящие за рамки базового URL и учетных данных. Устанавливайте их только если инструкции администратора или таблица устранения неполадок требуют одного.

Отправка дополнительных заголовков

Некоторые шлюзы маршрутизируют или помечают запросы, используя пользовательский заголовок в дополнение к учетным данным, например идентификатор клиента или ключ маршрутизации. Чтобы отправить один, установите ANTHROPIC_CUSTOM_HEADERS с одной парой Name: Value на строку. Пример ниже добавляет заголовок маршрутизации с именем X-Org-Route:
export ANTHROPIC_CUSTOM_HEADERS="X-Org-Route: prod"
Вы также можете установить ANTHROPIC_CUSTOM_HEADERS в блоке env файла параметров. Используйте \n между парами там, так как строки JSON не могут охватывать несколько строк:
{
  "env": {
    "ANTHROPIC_CUSTOM_HEADERS": "X-Org-Route: prod\nX-Tenant: acme"
  }
}

Добавление моделей шлюза в средство выбора модели

Обнаружение модели запрашивает шлюз для его списка моделей при запуске и добавляет эти имена в средство выбора /model наряду со встроенными записями. Включите его, если ваш шлюз обслуживает имена моделей, которых нет в встроенном списке Claude Code, и вы хотите выбрать их из средства выбора. Если встроенные модели — это то, что вы используете, вам не нужно обнаружение; администратор также мог уже включить его через управляемые параметры. Чтобы включить его, установите CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 в вашей оболочке или в блоке env ~/.claude/settings.json. Обнаружение требует Claude Code v2.1.129 или позже. Обнаруженные модели появляются как дополнительные записи /model, помеченные From gateway. Чтобы подтвердить, что обнаружение запустилось, запустите claude --debug и ищите строки [gatewayDiscovery]: успех регистрирует, сколько моделей было кэшировано, и 404, timeout или перенаправление также записываются там. Для того, когда запускается обнаружение, что оно фильтрует и формат ответа, который обслуживают шлюзы, см. справочник обнаружения модели.

Ротация учетных данных с apiKeyHelper

apiKeyHelper — это команда, которую Claude Code запускает для получения ваших учетных данных шлюза, вместо чтения их из статической переменной окружения. Используйте помощника, когда учетные данные истекают по расписанию, поступают из хранилища или команды SSO, или администратор сказал вам настроить один. Если ваши учетные данные — это фиксированная строка, которую вы устанавливаете один раз, переменная учетных данных — это все, что вам нужно, и вы можете пропустить этот раздел. Помощник — это любая команда оболочки, которая выводит текущие учетные данные на stdout. Claude Code запускает ее через вашу системную оболочку, поэтому на Windows это может быть исполняемый файл или вызов PowerShell. Напишите скрипт, сделайте его исполняемым и ссылайтесь на него из apiKeyHelper в вашем файле параметров:
Например, скрипт, который читает из хранилища:
#!/bin/bash
vault kv get -field=api_key secret/llm-gateway/claude-code
Ссылайтесь на его путь в ~/.claude/settings.json:
{
  "apiKeyHelper": "~/bin/get-gateway-key.sh"
}
Claude Code кэширует вывод помощника в течение пяти минут по умолчанию и переустанавливает его, когда запрос возвращает HTTP 401. Чтобы изменить время жизни кэша, установите CLAUDE_CODE_API_KEY_HELPER_TTL_MS в миллисекундах, например CLAUDE_CODE_API_KEY_HELPER_TTL_MS=900000 на 15 минут. Значение помощника отправляется в оба заголовка Authorization и x-api-key, поэтому оно работает, какой бы заголовок ни читал ваш шлюз.

Маршрутизация к облачному поставщику через шлюз

Эти конфигурации направляют Claude Code на шлюз через переменную базового URL, специфичную для поставщика, вместо ANTHROPIC_BASE_URL. Шлюзы Bedrock и Vertex принимают собственные форматы запросов этих поставщиков; шлюзы Foundry и Claude Platform на AWS принимают формат Anthropic Messages и отличаются только тем, какая переменная базового URL их достигает. Используйте один только если команда шлюза специально назвала Bedrock, Vertex, Foundry или Claude Platform на AWS. Если запрос проверки выше вернул JSON, вы можете пропустить этот раздел. Установите блок для поставщика, которого назвала команда шлюза. Переменные skip-auth говорят Claude Code не подписывать запросы с учетными данными поставщика, так как шлюз их держит. Если шлюзу нужен свой собственный токен, добавьте ANTHROPIC_AUTH_TOKEN после блока, кроме Foundry, который использует ANTHROPIC_FOUNDRY_API_KEY, как показано.

Amazon Bedrock

export ANTHROPIC_BEDROCK_BASE_URL=https://llm-gateway.example.com/bedrock
export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1
export CLAUDE_CODE_USE_BEDROCK=1

Google Vertex AI

export ANTHROPIC_VERTEX_BASE_URL=https://llm-gateway.example.com/vertex
export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id
export CLAUDE_CODE_SKIP_VERTEX_AUTH=1
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=us-east5

Microsoft Foundry

Поместите учетные данные шлюза в ANTHROPIC_FOUNDRY_API_KEY; они отправляются на шлюз как заголовок x-api-key. CLAUDE_CODE_SKIP_FOUNDRY_AUTH здесь не применяется: без ключа API клиент Foundry не проходит каждый запрос перед тем, как он покидает машину.
export ANTHROPIC_FOUNDRY_BASE_URL=https://llm-gateway.example.com/foundry
export ANTHROPIC_FOUNDRY_API_KEY=sk-gateway-key
export CLAUDE_CODE_USE_FOUNDRY=1

Claude Platform на AWS

См. Claude Platform на AWS для ID рабочего пространства.
export ANTHROPIC_AWS_BASE_URL=https://llm-gateway.example.com/anthropic-aws
export ANTHROPIC_AWS_WORKSPACE_ID=wrkspc_01ABCDEFGHIJKLMN
export CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH=1
export CLAUDE_CODE_USE_ANTHROPIC_AWS=1

Устранение неполадок с ошибками шлюза

Это наиболее распространенные ошибки при запуске Claude Code через шлюз, с причиной на стороне шлюза и исправлением:
ОшибкаПричинаИсправление
Предупреждение при запуске, называющее два источника учетных данных и заканчивающееся на auth may not work as expected. Более старые версии показывают Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set вместо этого.Учетные данные шлюза и сохраненный вход оба активны; переменная используется для запросов, но устаревший вход может вызвать неожиданное поведение аутентификацииОтмените установку переменной, чтобы использовать сохраненный вход, или запустите /logout, чтобы использовать учетные данные шлюза
Ошибки 401, называющие недействительный или неузнанный токенУчетные данные не являются теми, которые выдал шлюз, или они находятся в заголовке, который шлюз не читаетПодтвердите, что переменная соответствует вашему типу учетных данных в таблице учетных данных, и переустановите ключ на шлюзе, если он был отозван
Unable to connect to API (ConnectionRefused) или (ECONNREFUSED) из установок npm, часто после молчаливой паузы, пока Claude Code повторяет с отступомНичто не ответило на базовый URL: адрес неправильный или VPN или брандмауэр блокирует путь к шлюзуЗапустите тест curl выше, который немедленно не проходит с той же причиной, и подтвердите URL и сетевой путь с командой шлюза
API returned an empty or malformed response (HTTP 200)Шлюз или промежуточный прокси вернул ответ, отличный от API, часто HTML-ошибку или страницу входаПротестируйте с запросом curl выше; исправьте маршрут шлюза, который возвращает не-JSON
Ошибки 400, называющие context_management, Extra inputs are not permitted или другие неузнанные поляШлюз пересылает запросы на вышестоящий, который отклоняет поля, которые Claude Code отправляет на конечные точки формата AnthropicУстановите CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1, что подавляет большинство полей предварительного выпуска; см. передача функций. Некоторые бета-версии не управляются этим флагом; для них установите соответствующую переменную поставщика CLAUDE_CODE_USE_*, чтобы Claude Code отправлял только то, что этот поставщик принимает
Ошибки 400, называющие thinking или adaptive, такие как Input tag 'adaptive' foundСборка вышестоящей модели не принимает адаптивное рассуждение, которое Claude Code запрашивает для моделей Claude 4.6 и позжеОбновите вышестоящий шлюз. На Opus 4.6 и Sonnet 4.6 вместо этого работает CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1. Переменные возможностей конфигурации модели применяются только к конфигурациям поставщика, таким как CLAUDE_CODE_USE_BEDROCK и CLAUDE_CODE_USE_VERTEX, а не за шлюзом ANTHROPIC_BASE_URL
Ошибки 400, указывающие контекст или лимит токена в собственных словах шлюза, такие как ContextWindowExceededError или prompt token count of N exceeds the limit of MШлюз применяет меньший контекст, чем собственное окно модели, и переписывает ошибку вышестоящего, поэтому автоматическое сжатие и повтор, которое соответствует формулировке prompt is too long Anthropic, не срабатываетЗапустите /compact, чтобы восстановить сеанс. Чтобы предотвратить это, установите CLAUDE_CODE_AUTO_COMPACT_WINDOW на лимит шлюза; значение зажимается как минимум на 100,000 токенов и максимум на контекстное окно модели, поэтому лимит шлюза ниже 100,000 не может быть согласован и /compact остается восстановлением там. Также установите CLAUDE_CODE_MAX_OUTPUT_TOKENS ниже лимита вывода модели шлюза
Модели отсутствуют в средстве выбора /modelИмена моделей шлюза отсутствуют в встроенном списке Claude CodeВключите обнаружение модели шлюза или добавьте имена с переменными конфигурации модели
Claude Code просит вас войти, даже если тест curl успешенCLI не имеет собственных учетных данных: достижимый базовый URL не является одним, и блок env в .claude/settings.json или .claude/settings.local.json проекта применяется только после мастера первого запуска и подсказки доверияУстановите ANTHROPIC_AUTH_TOKEN где-то, где Claude Code читает перед первоначальной настройкой: экспорт оболочки, блок env в ~/.claude/settings.json или управляемые параметры
ANTHROPIC_API_KEY установлен, но игнорируется, без подсказкиКлюч требует одобрения один раз в интерактивных сеансах, и ранее отклоненный ключ игнорируется без повторного запросаВключите его под /config с опцией Use custom API key
This machine's managed settings require a first-party loginУправляемые параметры включают forceLoginMethod или forceLoginOrgUUID, которые на Claude Code v2.1.146 и позже не могут сосуществовать с ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN или apiKeyHelperАдминистратор должен удалить forceLoginMethod и forceLoginOrgUUID из управляемых параметров, чтобы использовать учетные данные шлюза, или удалить учетные данные шлюза, чтобы использовать вход первой стороны. Эти два не могут быть объединены
403 с телом HTML, такое как 403 Forbidden, когда собственные журналы шлюза не показывают полученный запросВеб-приложение брандмауэра или обратный прокси перед шлюзом заблокировал тело запроса перед тем, как оно достигло шлюза. Подсказки Claude Code включают теги в стиле XML и исходный код, которые соответствуют правилам тела межсайтового скриптинга, поэтому короткий тест curl проходит, а реальный сеанс нетИсключите путь /v1/messages шлюза из проверки тела запроса. На AWS WAF это управляемое правило CrossSiteScripting_Body; на nginx с ModSecurity это эквивалентные правила тела OWASP CRS
Ошибки сертификата или TLS, такие как SSL certificate verification failed или Self-signed certificate detected, когда тест curl успешенСреда выполнения Claude Code не доверяет тому же центру сертификации, что и curl. Обычно за корпоративными прокси-серверами проверки TLSУстановите NODE_EXTRA_CA_CERTS на путь пакета CA; см. хранилище сертификатов CA
Если Claude Code повторно просит вас войти после удаления конфигурации шлюза, причина обычно в хранилище учетных данных, а не в шлюзе; см. ошибки аутентификации.