Коротко: как Claude Code подключается к модели
У Claude Code три способа авторизации. Первый — вход в аккаунт с подпиской Pro, Max, Team или Enterprise через браузер (команда /login). Второй — API-ключ в переменной ANTHROPIC_API_KEY: он отправляется в заголовке x-api-key, и расход оплачивается по токенам. Третий — токен в переменной ANTHROPIC_AUTH_TOKEN: он уходит в заголовке Authorization: Bearer и предназначен для прокси и шлюзов.
Куда отправлять запросы, определяет переменная ANTHROPIC_BASE_URL. Если её нет, Claude Code обращается к api.anthropic.com. Если задать свой адрес, все запросы к модели пойдут туда — так Claude Code подключают к OpenRouter, к локальному роутеру OmniRoute или к Anthropic-совместимому шлюзу. Отдельного флага --base-url нет, только переменные окружения или блок env в settings.json.
Для России вопрос сводится к выбору: собственный аккаунт Anthropic плюс HTTP-прокси, агрегатор вроде OpenRouter, самостоятельно поднятый роутер или шлюз с оплатой в рублях. Ниже разберём каждый вариант и сравним их в таблице.
# общая схема подключения через свой base URL
export ANTHROPIC_BASE_URL="https://адрес-шлюза" # без /v1 на конце
export ANTHROPIC_AUTH_TOKEN="токен-этого-сервиса" # уходит как Authorization: Bearer
claudeПодробнее: Как запустить Claude Code из России без VPN
ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN и ANTHROPIC_BASE_URL: в чём разница
Путаница между двумя переменными с ключом — главная причина ошибки 401. Разница только в том, в каком HTTP-заголовке уходит значение. Если положить ключ не в ту переменную, сервер получит его в заголовке, который не читает, и ответит отказом.
Когда задано несколько способов сразу, Claude Code выбирает по приоритету: сначала облачные провайдеры (Bedrock, Vertex, Foundry), затем ANTHROPIC_AUTH_TOKEN, затем ANTHROPIC_API_KEY, затем скрипт apiKeyHelper, долгоживущий CLAUDE_CODE_OAUTH_TOKEN и в самом конце — вход по подписке. Поэтому, если у вас одновременно есть логин и ключ в окружении, работать будет ключ. ANTHROPIC_AUTH_TOKEN применяется сразу, а ANTHROPIC_API_KEY в интерактивном режиме требует один раз подтвердить его использование.
- Если сервис не уточняет, какой заголовок читает, начните с ANTHROPIC_AUTH_TOKEN — так советует и документация Claude Code.
- Проверить, какой способ авторизации реально активен, можно командой /status внутри сессии.
| Переменная | Что задаёт | Заголовок | Когда использовать |
|---|---|---|---|
| ANTHROPIC_BASE_URL | Адрес API вместо api.anthropic.com | — | Любой прокси, шлюз или роутер |
| ANTHROPIC_AUTH_TOKEN | Токен доступа | Authorization: Bearer | Шлюзы и сервисы, которые просят bearer-токен |
| ANTHROPIC_API_KEY | API-ключ | x-api-key | Прямой ключ из Claude Console или сервис, который просит x-api-key |
| HTTPS_PROXY | HTTP(S)-прокси для всего трафика | — | Свой аккаунт Anthropic через прокси |
Где взять API-ключ для Claude Code
Официальный API-ключ выпускается в Claude Console (platform.claude.com) после пополнения баланса. Из России здесь две проблемы: регион не входит в список поддерживаемых Anthropic, а российские карты не принимаются. Ключи с маркетплейсов — это чужие аккаунты, которые Anthropic блокирует вместе с балансом, и агент встаёт посреди задачи.
Если вы используете сторонний сервис, ключ выпускается в его кабинете и работает только с его адресом. Ключ OpenRouter не подойдёт к api.anthropic.com, ключ Anthropic — к OpenRouter, а токен шлюза — к кому-либо, кроме этого шлюза. Пара «base URL + ключ» всегда должна быть от одного сервиса.
Отдельный случай — CLAUDE_CODE_OAUTH_TOKEN, который выдаёт команда claude setup-token. Это не API-ключ, а годовой токен вашей подписки для CI и скриптов: он работает только при активной подписке Pro, Max, Team или Enterprise.
Подробнее: Подписка или API: сколько стоит Claude Code
Вариант 1: свой аккаунт Anthropic через HTTP-прокси
Если у вас есть аккаунт Anthropic (подписка или Console с оплаченным балансом), Claude Code можно пустить через прокси-сервер в поддерживаемой стране. Он понимает стандартные переменные HTTPS_PROXY и HTTP_PROXY, а также NO_PROXY для исключений. SOCKS-прокси Claude Code не поддерживает — нужен именно HTTP(S)-прокси. Адрес обязательно указывается со схемой http:// или https://, иначе Claude Code не запустится и назовёт переменную с ошибкой.
Через прокси проходит весь трафик: вход по подписке, запросы к модели, проверки обновлений. Base URL при этом менять не нужно. Честный минус: вы по-прежнему пользуетесь аккаунтом из неподдерживаемого региона, и оплата российской картой всё равно невозможна. Нестабильный или общий прокси с «грязными» IP повышает риск блокировки аккаунта, а заблокированный аккаунт с оплаченной подпиской никто не вернёт.
- Строка Proxy в /status показывает активный прокси и помечает адрес, который не удалось разобрать.
- Переменные окружения читаются один раз при запуске — после изменения перезапустите claude.
# прокси с авторизацией; SOCKS не поддерживается
export HTTPS_PROXY="http://user:password@proxy.example.com:8080"
export NO_PROXY="localhost,127.0.0.1"
claude
# то же самое в ~/.claude/settings.json
{
"env": {
"HTTPS_PROXY": "http://user:password@proxy.example.com:8080"
}
}Вариант 2: Claude Code через OpenRouter
OpenRouter — зарубежный агрегатор моделей разных провайдеров с единым балансом. У него есть Anthropic-совместимый endpoint, и Claude Code подключается к нему штатными переменными. Официальная инструкция OpenRouter требует явно обнулить ANTHROPIC_API_KEY, чтобы Claude Code не пытался авторизоваться напрямую в Anthropic, и один раз выполнить /logout, если вы раньше входили в аккаунт Anthropic, — иначе возможны конфликты авторизации и странные ошибки «модель не найдена».
Оплата: OpenRouter принимает банковские карты (российские не проходят) и криптовалюту USDC; минимальное пополнение — 5 долларов, крипто-платежи не возвращаются. Сам OpenRouter предупреждает, что Claude Code оптимизирован под модели Anthropic и с моделями других провайдеров может работать некорректно.
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="ваш_ключ_OpenRouter"
export ANTHROPIC_API_KEY="" # обязательно пустой
claude
# внутри сессии: /status — проверить base URL и источник токенаВариант 3: OmniRoute — как установить и подключить к Claude Code
OmniRoute — это не сервис, а open-source программа под лицензией MIT, которую вы запускаете сами: локально или на своём сервере. Это роутер, который собирает за одним адресом много провайдеров (платные API-ключи, бесплатные тарифы, локальные модели), умеет автоматически переключаться между ними при исчерпании лимитов и отдаёт в том числе Anthropic-совместимый endpoint для Claude Code. Устанавливается через npm или Docker, панель управления по умолчанию открывается на http://localhost:20128.
Для Claude Code в документации OmniRoute указан корневой адрес без /v1 — в отличие от OpenAI-совместимых клиентов, которым нужен http://localhost:20128/v1. Токен вида oma_live_… создаётся в панели OmniRoute в разделе Endpoints. В свежих версиях есть команда omniroute launch, которая сама подставляет нужные переменные и запускает Claude Code.
Важные оговорки. Во-первых, OmniRoute сам по себе не даёт доступа к Claude: ему нужен источник — ваш ключ Anthropic, ключ OpenRouter или шлюза. Бесплатные провайдеры внутри обычно отдают не модели Claude, и Claude Code с ними работает хуже: например, документация OmniRoute отдельно предупреждает о несовпадении размера контекстного окна. Во-вторых, OmniRoute умеет подключать подписки через OAuth, но правила Anthropic прямо запрещают пропускать запросы через учётные данные подписок Free, Pro и Max в сторонних сервисах, а Anthropic оставляет за собой право применять меры без предупреждения. Использовать так свою подписку — прямой риск бана.
# установка и запуск роутера
npm install -g omniroute
omniroute # панель: http://localhost:20128
# подключение Claude Code (токен — из Dashboard → Endpoints)
export ANTHROPIC_BASE_URL="http://localhost:20128" # для Claude Code — без /v1
export ANTHROPIC_AUTH_TOKEN="oma_live_..."
claudeВариант 4: Anthropic-совместимый шлюз с оплатой в рублях
Шлюз — это готовый сервис, который принимает запросы в формате Anthropic API и сам обеспечивает доступ к моделям. Вам не нужно ни аккаунт Anthropic, ни прокси, ни свой сервер: вы оплачиваете тариф, получаете токен в кабинете и задаёте две переменные. Идентификаторы моделей совпадают с официальными, поэтому /model claude-sonnet-5 или claude-opus-5-5 работают так же, как при прямом подключении.
Так устроен и наш шлюз: base URL https://claude-gateway.ru/api, токен из личного кабинета в ANTHROPIC_AUTH_TOKEN (шлюз принимает и заголовок x-api-key, то есть ANTHROPIC_API_KEY тоже сработает), сообщения идут на /api/v1/messages, остальные методы /api/v1/* проксируются. Оплата картой РФ или через СБП, есть пробный тариф на один день. Это независимый сервис, не аффилированный с Anthropic.
Минус любого шлюза — вы зависите от стабильности конкретного сервиса, а токены стоят дороже официального прайса, потому что в цену входят инфраструктура и рублёвый биллинг. Выбирая шлюз, смотрите, показывает ли он расход по каждому запросу и можно ли отозвать и перевыпустить ключ.
export ANTHROPIC_BASE_URL="https://claude-gateway.ru/api"
export ANTHROPIC_AUTH_TOKEN="ваш_токен_из_кабинета"
claudeПодробнее: Документация: endpoint, модели и переменные · Тарифы шлюза в рублях
Сравнение вариантов для России
Сведём четыре варианта по критериям, которые важны именно для пользователя из России. Задержку мы оцениваем качественно: она зависит от вашей сети и расположения серверов, а любой промежуточный узел добавляет свой прыжок.
| Критерий | Свой аккаунт + прокси | OpenRouter | OmniRoute | Шлюз в рублях |
|---|---|---|---|---|
| Оплата из РФ | Нет: нужна зарубежная карта | Нет карты РФ; крипто USDC | Сам бесплатный, платите источнику | Карта РФ, СБП |
| Риск бана аккаунта | Есть: регион не поддерживается | Нет аккаунта Anthropic | Высокий, если подключать подписку | Нет аккаунта Anthropic |
| Совместимость с Claude Code | Полная (прямой API) | Хорошая на моделях Claude | Зависит от провайдера и модели | Формат Anthropic API, те же ID моделей |
| Задержка | Плюс прыжок через прокси | Плюс прыжок через агрегатор | Плюс роутер и провайдер | Плюс прыжок через шлюз |
| Что нужно настроить | HTTPS_PROXY | Base URL, токен, пустой API_KEY | Свой сервер и источники | Base URL и токен |
Подробнее: Почему блокируют аккаунты Claude Code и как этого избежать
Где хранить ключ: settings.json и расширение VS Code
Переменные из export или $env: живут только в текущем окне терминала. Чтобы настройка работала всегда, в том числе в фоновых агентах, добавьте её в блок env файла ~/.claude/settings.json. Если одна и та же переменная задана и в оболочке, и в этом файле, приоритет у файла. Не кладите ключ в .claude/settings.json проекта — он коммитится в репозиторий; для одного проекта используйте .claude/settings.local.json и добавьте его в .gitignore.
В расширении Claude Code для VS Code ключ надёжнее всего задавать в пользовательских настройках самого VS Code — параметр claudeCode.environmentVariables (команда Preferences: Open User Settings (JSON)). Расширение проверяет авторизацию до запуска и читает именно этот параметр, а значения из ~/.claude/settings.json до этой проверки не доходят. Подробно про VS Code, Cursor и JetBrains — в отдельной статье.
// VS Code: settings.json пользователя
{
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "https://claude-gateway.ru/api" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "ваш_токен" }
]
}Подробнее: Claude Code в VS Code, Cursor и JetBrains: настройка · Установка Claude Code и переменные на Windows, macOS, Linux
Частые ошибки при подключении через API-ключ и прокси
Прежде чем разбираться с Claude Code, проверьте пару «адрес + ключ» одним запросом из терминала. Ответ с «id»:«msg_…» значит, что адрес и ключ в порядке. Ошибка про неизвестную модель тоже доказывает, что авторизация прошла. 401 — ключ отклонён или лежит не в той переменной.
- Лишний /v1 в base URL. Claude Code сам дописывает /v1/messages, поэтому адрес вида https://claude-gateway.ru/api/v1 превращается в …/v1/v1/messages и даёт 404. Указывайте корень API без /v1.
- Ключ от другого сервиса. Ключ Anthropic с адресом OpenRouter, токен OpenRouter с адресом шлюза и любые другие смешанные пары дают 401.
- Не та переменная. Сервис ждёт Bearer, а ключ лежит в ANTHROPIC_API_KEY (или наоборот) — поменяйте переменную и перезапустите claude.
- Старый логин мешает. Если при запуске появляется предупреждение о двух источниках авторизации, выполните /logout, чтобы остался только токен из переменной.
- ANTHROPIC_API_KEY задан, но игнорируется. В интерактивном режиме ключ нужно один раз подтвердить; если вы когда-то отказались, включите его заново в /config.
- SOCKS-прокси или адрес прокси без http://. Claude Code поддерживает только HTTP(S)-прокси и требует схему в адресе.
- Переменные не подхватились. Они читаются при старте: после изменения перезапустите claude, а проверку делайте через /status — там видны base URL, прокси и источник ключа.
curl -sS "$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-haiku-4-5", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'Что меняется в Claude Code при своём base URL
Основная работа агента — чтение и правка файлов, команды, streaming, инструменты, MCP-серверы, навыки — от смены адреса не зависит, если сервис корректно передаёт формат Anthropic API. Но несколько функций Claude Code, по официальной документации, ведут себя иначе, когда ANTHROPIC_BASE_URL указывает не на api.anthropic.com.
- Поиск инструментов MCP (tool search) по умолчанию выключается. Если сервис пропускает блоки tool_reference, включите его переменной ENABLE_TOOL_SEARCH=true.
- Remote Control, начиная с версии 2.1.196, отключён — как и при работе через Bedrock, Vertex и Foundry.
- Проверка доступности быстрого режима (/fast) обращается напрямую к api.anthropic.com и с одним только bearer-токеном считает режим недоступным.
- Подключения claude.ai (коннекторы) и /schedule завязаны на вход в аккаунт claude.ai, поэтому при работе через токен в переменной на них не стоит рассчитывать.
Подробнее: Скиллы, субагенты и MCP в Claude Code · Claude Code Desktop, Web и Remote Control