OpenAI-модели в Claude Code через CLIProxyAPI
Claude Code даёт готовый coding agent с доступом к файлам и терминалу, Plan Mode, subagents, hooks, skills, MCP и системой permissions. Клиент читает инструкции проекта из CLAUDE.md, поэтому накопленные правила не приходится переносить в новый формат.
CLIProxyAPI1 позволяет оставить этот интерфейс и отправлять запросы в модели OpenAI. Claude Code обращается к локальному Anthropic-совместимому endpoint, прокси переводит запрос в протокол провайдера и возвращает ответ в понятном клиенту формате.
Я проверял настройку 15 июля 2026 года на macOS с CLIProxyAPI 7.2.75 и Claude Code 2.1.210. В списке моделей были gpt-5.6-sol, gpt-5.6-terra и gpt-5.6-luna. Имена моделей и доступность через OAuth меняются, поэтому перед настройкой стоит запросить /v1/models у своего экземпляра прокси.
Что остаётся от Claude Code
При такой схеме Claude Code продолжает управлять рабочим процессом:
- находит файлы и передаёт модели нужный контекст;
- запускает команды, тесты и другие tools;
- применяет permissions, hooks, skills, MCP и настройки из
.claude/; - загружает
CLAUDE.md,CLAUDE.local.mdи.claude/rules/.
Модель OpenAI получает уже собранный prompt и описания tools. CLIProxyAPI отвечает за аутентификацию, преобразование форматов и выбор upstream:
Claude Code
│ Anthropic Messages API
▼
CLIProxyAPI на 127.0.0.1:8317
│ перевод запроса и ответа
├── OpenAI Codex OAuth
├── Anthropic OAuth или API key
├── Gemini API
└── OpenAI-совместимый provider, например OpenRouter
CLAUDE.md обрабатывает сам клиент, поэтому смена модели не отключает инструкции проекта. Claude Code загружает файлы от корня файловой системы до текущего каталога, а вложенные инструкции добавляет, когда читает файлы в соответствующем подкаталоге2. Команда /memory показывает, какие инструкции попали в текущую сессию.
CLAUDE.md попадает в контекст как сообщение пользователя, поэтому модель может нарушить инструкции. Для запретов и обязательных действий Anthropic рекомендует permissions и hooks2. Качество соблюдения правил также зависит от выбранной модели.
Зачем сочетать Claude Code и OpenAI
Такая схема упрощает миграцию. Если проект уже хранит команды сборки, архитектурные решения и правила review в CLAUDE.md, они продолжат работать. Не нужно заводить второй набор инструкций ради другой модели.
Ещё один плюс даёт выбор модели под задачу. В Claude Code есть логические уровни opus, sonnet и haiku. Их можно сопоставить с тремя моделями OpenAI: дорогой для планирования, средней для основной работы и быстрой для фоновых операций. Режим opusplan использует opus в Plan Mode и переключается на sonnet при реализации3.
CLIProxyAPI также даёт единую точку настройки. Он хранит несколько учётных записей, подключает API keys, назначает моделям aliases и направляет запросы по префиксу. Клиент остаётся прежним, даже если upstream меняется.
Установка на macOS
Claude Code и CLIProxyAPI доступны в Homebrew:
brew install --cask claude-code
brew install cliproxyapi
Anthropic предлагает и native installer, который обновляет Claude Code автоматически. Homebrew-версию нужно обновлять командой brew upgrade claude-code4. CLIProxyAPI устанавливает конфигурацию в:
echo "$(brew --prefix)/etc/cliproxyapi.conf"
На Apple Silicon это обычно /opt/homebrew/etc/cliproxyapi.conf; на Intel Mac используется /usr/local/etc/cliproxyapi.conf5.
Сначала создадим локальный token, которым Claude Code будет авторизоваться в прокси:
openssl rand -hex 32
Скопируйте результат и откройте конфигурацию:
nano "$(brew --prefix)/etc/cliproxyapi.conf"
Для локального запуска достаточно следующего файла:
host: "127.0.0.1"
port: 8317
auth-dir: "~/.cli-proxy-api"
api-keys:
- "ВСТАВЬТЕ_СЮДА_СЛУЧАЙНЫЙ_TOKEN"
routing:
strategy: "fill-first"
session-affinity: true
session-affinity-ttl: "1h"
request-retry: 3
max-retry-interval: 30
remote-management:
allow-remote: false
secret-key: ""
disable-control-panel: true
Параметр host: "127.0.0.1" закрывает порт от других машин. Значение по умолчанию пустое и заставляет CLIProxyAPI слушать все IPv4- и IPv6-интерфейсы6. Для локального coding agent это лишний риск.
Вход в OpenAI
CLIProxyAPI получает доступ к моделям OpenAI через Codex OAuth:
cliproxyapi -codex-login
Команда откроет браузер и сохранит OAuth credentials в auth-dir. Если браузер нужно открыть на другой машине, добавьте --no-browser. Для локального callback Codex CLIProxyAPI по умолчанию открывает port 14557. Доступные модели и quotas зависят от учётной записи OpenAI.
После входа запустите сервис:
brew services start cliproxyapi
Проверим service и список доступных моделей двумя командами:
brew services list | grep cliproxyapi
curl -sS \
-H "Authorization: Bearer ВАШ_ЛОКАЛЬНЫЙ_TOKEN" \
http://127.0.0.1:8317/v1/models
Первая команда подтверждает работу процесса, вторая показывает модели, доступные именно вашей учётной записи. Если модель отсутствует в этом ответе, не добавляйте её в Claude Code по примеру из статьи.
Настройка Claude Code
Claude Code можно настроить через переменные окружения или ~/.claude/settings.json. Второй вариант действует и в CLI, и в расширении VS Code8. Откройте файл:
nano ~/.claude/settings.json
Добавьте локальный endpoint и сопоставление моделей:
{
"model": "opusplan",
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
"ANTHROPIC_AUTH_TOKEN": "ВСТАВЬТЕ_ТОТ_ЖЕ_ЛОКАЛЬНЫЙ_TOKEN",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.6-sol(xhigh)",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.6-terra(high)",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-5.6-luna(low)"
}
}
OpenAI описывает sol как модель с максимальными возможностями, terra как более экономичный вариант, а luna как модель для быстрых массовых запросов9. Это даёт понятное соответствие уровням Claude Code:
| Alias Claude Code | Модель OpenAI | Задачи |
|---|---|---|
opus | gpt-5.6-sol(xhigh) | Plan Mode, сложный анализ и review |
sonnet | gpt-5.6-terra(high) | реализация и обычная работа с кодом |
haiku | gpt-5.6-luna(low) | быстрые и фоновые запросы |
Суффиксы в скобках обрабатывает CLIProxyAPI. Для OpenAI и Codex прокси удаляет суффикс из имени модели и записывает уровень в reasoning.effort. Поддерживаются minimal, low, medium, high, xhigh, auto и none10. Если provider отвергает уровень, запрос вернёт HTTP 400. Начните с high, а xhigh оставьте для задач, где дополнительное время и расход tokens дают заметный результат.
Запустите Claude Code из проекта:
cd ~/src/my-project
claude
Команда /model покажет логические модели Claude Code. При конфигурации выше opus, sonnet и haiku отправятся в разные модели OpenAI. /model opusplan закрепляет разделение: sol для плана, terra для реализации.
Для разовой проверки можно не менять settings.json:
ANTHROPIC_BASE_URL=http://127.0.0.1:8317 \
ANTHROPIC_AUTH_TOKEN=ВАШ_ЛОКАЛЬНЫЙ_TOKEN \
ANTHROPIC_MODEL='gpt-5.6-sol(high)' \
claude
Несколько провайдеров и явный роутинг
CLIProxyAPI выбирает upstream по имени модели. Для OpenAI-совместимых сервисов можно задать prefix, который исключает неоднозначность. Например, добавим OpenRouter в cliproxyapi.conf:
openai-compatibility:
- name: "openrouter"
prefix: "openrouter"
base-url: "https://openrouter.ai/api/v1"
api-key-entries:
- api-key: "sk-or-v1-..."
models:
- name: "moonshotai/kimi-k2:free"
alias: "kimi-k2"
Теперь имя openrouter/kimi-k2 направляет запрос в OpenRouter. Документация CLIProxyAPI использует тот же upstream и alias в примере конфигурации11. Перед назначением сторонней модели уровню haiku проверьте поддержку tools: Claude Code зависит от корректного function calling.
Можно направить разные уровни Claude Code в разные провайдеры:
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
"ANTHROPIC_AUTH_TOKEN": "ВАШ_ЛОКАЛЬНЫЙ_TOKEN",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.6-sol(xhigh)",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.6-terra(high)",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "openrouter/kimi-k2"
}
}
CLIProxyAPI отслеживает изменения cliproxyapi.conf и auth-dir и применяет большинство из них без перезапуска12. После правки повторите запрос к /v1/models, чтобы обнаружить опечатку в alias или недоступный провайдер.
Несколько credentials одного провайдера
Параметр routing.strategy выбирает credential, когда одной модели соответствуют несколько учётных записей:
round-robinчередует доступные credentials;fill-firstиспользует первую до исчерпания quota, затем переходит к следующей.
session-affinity: true сохраняет выбранную credential для сессии. CLIProxyAPI извлекает session ID из поля metadata.user_id, которое передаёт Claude Code. При недоступности credential прокси выполняет failover, а session-affinity-ttl задаёт срок привязки6.
Для явного разделения маршрутов используйте prefix и включите force-model-prefix: true. Если для учётной записи обязателен prefix, прокси не направит через неё запрос без префикса. Поля excluded-models позволяют закрыть отдельные модели или wildcard-группы для конкретного provider.
Возможные проблемы
Протоколы совпадают не полностью
Claude Code отправляет Anthropic Messages API, а CLIProxyAPI переводит его в OpenAI Responses или другой upstream-протокол. Streaming и tools поддерживаются, но сложные tool calls, extended thinking, prompt caching и подсчёт tokens могут вести себя иначе. После обновления клиента, прокси или модели полезно прогнать один и тот же небольшой coding task и проверить diff.
Функции OpenAI, которых нет в протоколе Claude Code, клиент не сможет использовать напрямую. Например, выбор модели через Claude Code не превращает его в Codex CLI и не добавляет элементы Responses API, для которых у Claude Code нет интерфейса.
System prompt рассчитан на Claude
Claude Code формирует prompt и tool schemas под модели Claude. GPT обычно справляется с ними, но может иначе планировать работу, чаще запрашивать подтверждение или хуже соблюдать часть инструкций. Модель реже отклоняется от коротких проверяемых правил в CLAUDE.md.
Дополнительная точка отказа
Рабочая цепочка теперь зависит от Claude Code, локального процесса CLIProxyAPI и upstream provider. Сессия прервётся, если прокси ошибётся при переводе протокола или получит устаревший model ID. Версии клиента и прокси лучше обновлять вместе и проверять через короткий smoke test.
OAuth и API могут измениться
CLIProxyAPI развивает сторонняя команда. Anthropic и OpenAI не заявляют официальную поддержку связки Claude Code с Codex OAuth. Provider может изменить OAuth flow, quotas или допустимые способы использования. Перед рабочим применением проверьте условия своей подписки и не стройте критичный CI только на интерактивном OAuth.
Secrets хранятся локально
OAuth credentials лежат в ~/.cli-proxy-api, API ключи могут находиться в cliproxyapi.conf, а локальный токен записан в ~/.claude/settings.json. Ограничьте права на файлы:
chmod 700 ~/.cli-proxy-api ~/.claude
chmod 600 "$(brew --prefix)/etc/cliproxyapi.conf" ~/.claude/settings.json
Не коммитьте эти файлы. Если прокси нужен на нескольких компьютерах, настройте TLS, firewall и отдельные client tokens. Недостаточно открыть port 8317 в локальной сети.
Часть корпоративных функций отключается
Claude Code считает нестандартный ANTHROPIC_BASE_URL сторонним provider. Server-managed настройки Anthropic при такой схеме недоступны13. Локальные и проектные настройки, permissions и hooks продолжают работать, но централизованные политики нужно развернуть другим способом.
Диагностика
Проверять цепочку удобнее по уровням.
Сначала убедитесь, что сервис запущен:
brew services list | grep cliproxyapi
lsof -nP -iTCP:8317 -sTCP:LISTEN
Затем запросите модели с тем же token, который указан в Claude Code:
curl -sS \
-H "Authorization: Bearer ВАШ_ЛОКАЛЬНЫЙ_TOKEN" \
http://127.0.0.1:8317/v1/models
Если endpoint отвечает, запустите claude и выполните /doctor. Команда /memory подтвердит загрузку CLAUDE.md, а /model покажет выбранный alias.
Ошибки самого прокси удобнее смотреть при foreground-запуске. Остановите service, запустите тот же binary с явным config path, а после диагностики снова запустите service:
brew services stop cliproxyapi
cliproxyapi -config "$(brew --prefix)/etc/cliproxyapi.conf"
# После Ctrl+C
brew services start cliproxyapi
После смены провайдеров начните новую сессию. Так старый context и prompt cache не будут влиять на сравнение.
Итоговая конфигурация
Для локальной работы я бы начал с Codex OAuth и трёх OpenAI-моделей:
gpt-5.6-sol(xhigh)для планирования и сложного review;gpt-5.6-terra(high)для реализации;gpt-5.6-luna(low)для быстрых операций.
Claude Code продолжает использовать tools coding agent и инструкции проекта из CLAUDE.md. Через CLIProxyAPI можно менять provider, не переписывая workflow. При этом вам придётся поддерживать дополнительный процесс, проверять преобразование протоколов и тестировать совместимость после обновлений.