---
title: Claude Code
description: Три переменные окружения — и Claude Code ходит через шлюз. Плюс вариант через settings.json, порядок приоритетов ключей и проверка одной командой.
keywords: claude code, anthropic, ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN, settings.json, cli
group: integrations
---

## Быстро {#quick keywords="переменные окружения, settings.json, профиль оболочки"}

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

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

:::code-group
```bash title=Оболочка
# ~/.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
```
```json title=.claude/settings.local.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.kumorouter.com",
    "ANTHROPIC_AUTH_TOKEN": "<ваш ключ>",
    "ANTHROPIC_MODEL": "<model>"
  }
}
```
:::

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

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

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

## Где живут настройки {#settings keywords="settings.json, settings.local.json, пользователь, проект, windows"}

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

- `~/.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`.

:::warning
Первую ступень того же раздела 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` — или уберите экспорт из профиля.
:::

## Выбор модели {#model keywords="ANTHROPIC_MODEL, малая модель, быстрая модель, переопределение"}

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

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

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

## Проверка {#verify keywords="проверка, curl, claude -p, 200"}

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

```bash title=Проверка
# 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`. Правило целиком — на [странице аутентификации](/ru/authentication).

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

## Если не работает {#troubleshooting keywords="401, 404, ошибка, модель не найдена"}

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

> [Все статусы шлюза →](/ru/errors) [Расход и журнал →](/ru/usage)

:::cards
- [Codex CLI](/ru/codex-cli) — то же самое для OpenAI-совместимого клиента.
- [Все рецепты](/ru/integrations) — обзор и промпт для агента.
- [Модели](/ru/models) — какие идентификаторы называть.
:::
