Перейти к содержимомуKumoДокументация
Разделы
На странице
Интеграции

Claude Code

Три переменные окружения — и Claude Code ходит через шлюз. Плюс вариант через settings.json, порядок приоритетов ключей и проверка одной командой.

Открыть как Markdown

Быстро

Claude Code — клиент протокола Anthropic, поэтому base URL у него голый origin, без `/v1`: клиент дописывает /v1/messages сам.

Выберите один из двух путей. Переменные окружения действуют на все проекты в этой оболочке; файл настроек — на пользователя (~/.claude/settings.json) или на один репозиторий (.claude/settings.local.json).

# ~/.zshrc — или тот профиль, который читает ваша оболочка
export KUMO_API_KEY="kumo_sk_..."
export ANTHROPIC_BASE_URL="https://api.kumorouter.com"
export ANTHROPIC_AUTH_TOKEN="$KUMO_API_KEY"
export ANTHROPIC_MODEL="<model>"

claude

Вариант с settings.local.json несёт ключ в самом файле, а команды проверки ниже читают его из переменной KUMO_API_KEY: экспортируйте ключ один раз в том терминале, из которого проверяете.

Claude Code списывает с того же кошелька, что и прямой вызов — пустой кошелёк ответит 402 (пополните его).

Заметка

Настройки читаются при старте. Открытая сессия продолжит ходить по старому адресу, пока вы её не перезапустите: откройте новый терминал.

Где живут настройки

Файл настроек существует в двух областях, и обе законны одновременно.

  • ~/.claude/settings.json — пользовательские настройки, действуют во всех проектах; ключ здесь уместен. На Windows это %USERPROFILE%\.claude\settings.json.
  • .claude/settings.json внутри репозитория — общие для всей команды настройки. Файл коммитится вместе с репозиторием, поэтому кладите в него только несекретные значения — не ключ.
  • .claude/settings.local.json внутри репозитория — личные настройки для этого репозитория, и именно сюда идёт ключ. Claude Code исключает этот файл из Git сам; если вы создаёте его руками, добавьте .claude/settings.local.json в .gitignore сами.

Файла может не быть — тогда создайте его. Если файл есть, добавьте в него блок env, а не замените файл целиком: рядом обычно лежат ваши остальные настройки.

Ключ в файле — это ключ на диске: держите его только в settings.local.json или в переменной окружения, никогда в закоммиченном .claude/settings.json.

Внимание

Первую ступень того же раздела Authentication precedence занимают не эти две переменные, а выбор облачного источника: CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY. Машина, где хотя бы одна из них экспортирована, ходит мимо Kumo — какой бы токен вы ни задали. Снимите их в той оболочке, из которой работаете: unset CLAUDE_CODE_USE_BEDROCK CLAUDE_CODE_USE_VERTEX CLAUDE_CODE_USE_FOUNDRY — и проверьте выбранный источник командой /status.

По тому же разделу документации Claude Code ANTHROPIC_AUTH_TOKEN стоит выше ANTHROPIC_API_KEY: токен уходит заголовком Authorization: Bearer, ключ — заголовком X-Api-Key, и пока токен задан, побеждает он, а запросы уходят на шлюз. На стороне Kumo правило то же и с той же стороны: если пришли оба заголовка, шлюз читает Authorization. Но направлять эти две переменные на разных поставщиков всё равно не стоит: стоит токену не дойти до процесса — и клиент молча возьмёт следующий источник, а шлюз чужого ключа не примет. Снимите ANTHROPIC_API_KEY в той оболочке, из которой работаете с Kumo: unset ANTHROPIC_API_KEY — или уберите экспорт из профиля.

Выбор модели

ANTHROPIC_MODEL задаёт основную модель. Идентификатор берите из каталога — страница моделей или ответ шлюза по адресу https://api.kumorouter.com/v1/models.

Для вспомогательной, «малой и быстрой» модели у Claude Code есть отдельная переменная, и называется она в разных выпусках по-разному: ANTHROPIC_SMALL_FAST_MODEL или ANTHROPIC_DEFAULT_HAIKU_MODEL. Смотрите документацию установленного у вас выпуска и задавайте ту, которую он называет; вторая просто не будет прочитана.

Если модель не задана вовсе, клиент попросит модель по умолчанию своего выпуска — а такого идентификатора в каталоге может не быть. Тогда назовите модель явно.

Проверка

Сначала проверьте сам шлюз, потом клиент. Так вы отличите неверный ключ от неверной настройки Claude Code.

# 1. Шлюз отвечает на протоколе Anthropic
curl https://api.kumorouter.com/v1/messages \
  -H "x-api-key: $KUMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model>",
    "max_tokens": 64,
    "messages": [{ "role": "user", "content": "reply with OK" }]
  }'

# 2. Клиент ходит туда же — в новом терминале, в пустом каталоге
claude -p "reply with OK"

Заголовок x-api-key — носитель нативного протокола Anthropic; тот же ключ едет и как Authorization: Bearer. Правило целиком — на странице аутентификации.

Вызов виден в журнале консоли: если ответ пришёл, а строки в журнале нет, значит клиент ходил не через шлюз.

Если не работает

  • 401 — ключ. Он отозван, истёк или искажён; либо ANTHROPIC_AUTH_TOKEN не дошёл до процесса, и клиент взял следующий по разделу Authentication precedence источник — ANTHROPIC_API_KEY или собственный вход в Claude Code, — а такого ключа шлюз не знает. Шлюз намеренно не говорит, что именно из этого, — почему.
  • Ответ приходит не от Kumo — экспортирована CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX или CLAUDE_CODE_USE_FOUNDRY. Этот выбор стоит выше обеих переменных с ключом, поэтому клиент уходит в облако провайдера, а не на шлюз. Снимите переменную и проверьте выбранный источник командой /status.
  • 404 — адрес. В ANTHROPIC_BASE_URL попал /v1, и клиент дописал свой: получился путь с удвоенным v1. Уберите версию из base URL.
  • Модель не найдена — идентификатор не из каталога. Спросите список у шлюза и подставьте каноническое имя или псевдоним.
  • Настройки не применились — сессия открыта с прежними значениями. Закройте её и откройте новый терминал.
  • Ответ пришёл, в журнале пусто — переменные не дошли до процесса: проверьте, что профиль, который вы правили, действительно читает ваша оболочка.

Все статусы шлюза → Расход и журнал →