AI Coding Agent и кастомные API Endpoint: Cursor vs Claude Code vs Devin Desktop — что на самом деле контролирует оператор
Cursor, Claude Code и Devin Desktop (бывший Windsurf) поддерживают кастомные API endpoint — но контроль над routing, governance и совместимость с gateway различаются кардинально. Мы сравнили операторскую конфигурацию шести coding agent, чтобы помочь выбрать инструмент под вашу инфраструктуру.
В середине 2026 года каждый крупный coding agent заявляет о поддержке «принеси свой API key». Но когда вы пытаетесь направить весь трафик через единый gateway — с ротацией ключей, governance моделей, лимитами расходов и audit trail — различия становятся очевидными. Мы протестировали конфигурацию кастомных endpoint шести инструментов и задокументировали, что оператор действительно может контролировать.
Источники: Cursor Forum — Custom OpenAI Compatible API, получено 2026-07-30; Claude Code — LLM Gateway Docs, получено 2026-07-30; Devin Desktop — AI Models, получено 2026-07-30; Zed — Use API Access, получено 2026-07-30; Codex CLI Configuration (ofox.ai), получено 2026-07-30; GitHub Copilot BYOK — agentgateway.dev, получено 2026-07-30; Cursor Sub-Agent Model Bug Report, получено 2026-07-30; Devin Desktop FAQ — Windsurf Rebrand, получено 2026-07-30.
OpenAI-совместимость означает, что провайдер предоставляет endpoint chat-completions, чей контракт запроса и ответа достаточно близок к API OpenAI, чтобы немодифицированный вызов OpenAI SDK работал после замены трёх значений: API key, base URL, название модели. Минимальная поверхность на практике —POST /v1/chat/completions с messages, model и потоковым ответом в форме OpenAI.
Обзор — контроль оператора
| Параметр | Cursor | Claude Code | Devin Desktop | Codex CLI | GitHub Copilot | Zed |
|---|---|---|---|---|---|---|
| Кастомный API endpoint | Override OpenAI Base URL | Переменная ANTHROPIC_BASE_URL | Не поддерживается — managed router | Переменная OPENAI_BASE_URL | Только Enterprise proxy | api_url для каждого provider в settings.json |
| Протокол | OpenAI-compatible | Anthropic-native (Messages API) | Проприетарный (credit-based) | OpenAI-compatible | Проприетарный + BYOK (OpenAI-compatible с 2025) | OpenAI-compatible + Anthropic-compatible |
| Routing sub-agent | Игнорирует кастомный URL (известный баг) | Наследует конфигурацию gateway | N/A — managed routing | Один процесс, routing согласованный | N/A | Отдельно от external agent |
| Управление ключами | Settings UI или env var | Только env var | Управляется платформой Devin | Только env var | Настройки GitHub org | System keychain + env var |
| Выбор модели | Список моделей + кастомные модели | Только семейство Claude | Выбор модели по credit | Любая модель на endpoint | Модели по списку GitHub | Полный каталог provider |
| Governance / audit | Отсутствует | Через Claude Enterprise на уровне организации | SOC 2, RBAC | Отсутствует | GitHub org policies, audit log | Отсутствует |
| Совместимость с gateway | Частичная (только main agent) | Полная | Отсутствует | Полная | Только Enterprise | Полная |
Cursor: Base URL переопределяется, sub-agent — нет
Кастомный API endpoint в Cursor настраивается через Settings → Models → OpenAI API Key + Override OpenAI Base URL. Укажите URL вашего gateway и API key — main agent Cursor начнёт маршрутизировать через него.
Проблема: sub-agent runner Cursor полностью игнорирует кастомный base URL. Когда Cursor запускает фоновые agent для многошаговых задач, они используют дефолтный routing Cursor. Это известный и активно обсуждаемый баг по состоянию на июль 2026 года. Если governance требует, чтобы весь LLM-трафик шёл через gateway, Cursor пока не гарантирует этого.
Что можно настроить:
Override OpenAI Base URL— endpoint вашего gateway (например,https://gateway.yourcompany.com/v1)OpenAI API Key— ключ для gateway- Кастомные имена моделей в выпадающем списке
- HTTP/1.1 compatibility mode (требуется для некоторых gateway — Settings → Network → HTTP Compatibility Mode)
Что нельзя настроить:
- Routing sub-agent — всегда использует внутренний endpoint Cursor
- Правила routing по модели — один base URL для всех кастомных моделей
- Политика ротации ключей — обновление вручную в Settings UI
- Audit header на уровне запроса — кастомные header не поддерживаются
# Конфигурация Cursor (Settings UI)
# Override OpenAI Base URL: https://your-gateway.example.com/v1
# OpenAI API Key: sk-your-gateway-key
# HTTP Compatibility Mode: HTTP/1.1 (если gateway требует)
Claude Code: нативная поддержка gateway
Claude Code построен с учётом routing через gateway. Переменная окружения ANTHROPIC_BASE_URL перенаправляет все API-вызовы, включая sub-agent и фоновые задачи, через ваш endpoint.
Что можно настроить:
ANTHROPIC_BASE_URL— полный URL gateway (например,https://gateway.yourcompany.com)ANTHROPIC_API_KEY— ключ для gateway- Настройки на уровне организации через Claude Enterprise (лимиты расходов, SSO, audit)
- Модель разрешений — sandboxing, разрешённые инструменты, сетевые ограничения
Что нельзя настроить:
- Семейство моделей — Claude Code работает только с Anthropic Messages API, gateway должен его поддерживать
- Переопределение модели на уровне запроса — Claude Code сам выбирает уровень модели (enterprise-администраторы могут ограничить уровни)
# Конфигурация gateway для Claude Code
export ANTHROPIC_BASE_URL="https://your-gateway.example.com"
export ANTHROPIC_API_KEY="sk-your-gateway-key"
# Весь трафик Claude Code — main agent, sub-agent, фоновые задачи —
# теперь проходит через ваш gateway. Без исключений.
claude code
Enterprise-версия Claude Code добавляет governance на уровне организации: принудительный SSO, scoping API key, контроль расходов и интеграцию с audit log. В сочетании с переменной gateway это самый готовый к governance coding agent из протестированных.
Devin Desktop (бывший Windsurf): managed routing, без кастомного endpoint
Windsurf был переименован в Devin Desktop 2 июня 2026 года, когда Cognition AI объединила продуктовую линейку. Модель доступа к моделям существенно изменилась: Devin Desktop использует managed model router, автоматически выбирающий модель, а цены выражены в credit, а не в прямой стоимости API.
Вы выбираете модель из каталога Devin (Claude Sonnet 4, Claude Opus 4.5, GPT-4.1, GPT-5-Codex, SWE-1.7 и т. д.), а Devin обрабатывает routing, биллинг и инфраструктуру. Нет переопределения base_url, нет кастомной конфигурации endpoint, нет возможности подключить свой gateway.
Что можно настроить:
- Выбор модели в каталоге Devin
- Распределение credit по членам команды
- SOC 2-совместимая изоляция рабочих пространств
- Ролевое управление доступом
Что нельзя настроить:
- Кастомный API endpoint — весь трафик идёт через инфраструктуру Devin
- Прямое использование API key provider — Devin выступает посредником
- Интеграция с gateway — не поддерживается
- Правила routing на уровне запроса
Самый бескомпромиссный подход: Devin Desktop ставит простоту и безопасность по умолчанию выше гибкости routing для оператора. Для команд, которым нужен managed-опыт, это работает. Для команд, которым необходим трафик через свою инфраструктуру, — нет.
OpenAI Codex CLI: простые env var, полная поддержка gateway
Codex CLI — терминальный coding agent от OpenAI — проще всего подключить к gateway. Две переменные окружения решают всё:
# Конфигурация gateway для Codex CLI
export OPENAI_BASE_URL="https://your-gateway.example.com/v1"
export OPENAI_API_KEY="sk-your-gateway-key"
# Codex CLI теперь направляет все запросы через ваш gateway
codex
Codex CLI — однопроцессный agent (без порождения sub-agent), поэтому переопределение OPENAI_BASE_URL согласовано — каждый запрос попадает на ваш gateway. Компромисс — более простые agentic-возможности по сравнению с Cursor или Claude Code.
Что можно настроить:
OPENAI_BASE_URL— полный контроль endpointOPENAI_API_KEY— ключ gateway- Любое имя модели, которое поддерживает endpoint
- Конфигурационный файл (
~/.codex/config.yaml) для постоянных настроек
Что нельзя настроить:
- Встроенный governance — отсутствует; делегируйте gateway
- Audit trail — зависит от логирования на стороне gateway
- Sandbox — только на уровне ОС (Codex использует sandbox на macOS/Linux)
GitHub Copilot: кастомные endpoint только для Enterprise
GitHub Copilot добавил поддержку кастомных endpoint (BYOK) — но только для Copilot Business и Enterprise. Индивидуальные тарифы не поддерживают кастомный proxy.
Enterprise-администраторы настраивают proxy URL в параметрах организации GitHub. Copilot направляет completions и чат через proxy, который может перехватывать, логировать и перенаправлять запросы. Это единственный coding agent, где конфигурация endpoint задаётся на уровне организации, а не пользователя — одновременно преимущество governance и ограничение гибкости.
Что можно настроить (только Enterprise):
- Кастомный proxy endpoint на уровне организации
- Список моделей, управляемый GitHub
- Организационные политики (исключения контента, audit log, ограничения по IP)
- Copilot в VS Code, JetBrains, Neovim и CLI
Что нельзя настроить:
- Переопределение endpoint на уровне пользователя (индивидуальные тарифы)
- Выбор модели за пределами списка GitHub
- Routing по запросу — только общеорганизационный proxy
- Прямое использование API key provider в стандартном потоке Copilot
Zed: самая гибкая конфигурация по provider
Zed предлагает наиболее детальный подход к API-конфигурации. Каждый provider может иметь свой api_url, кастомные header и API key — через Settings UI, settings.json или переменные окружения.
// Zed settings.json — OpenAI-compatible provider, указывающий на gateway
{
"language_models": {
"openai": {
"api_url": "https://your-gateway.example.com/v1",
"custom_headers": {
"X-Team-Id": "engineering",
"X-Cost-Center": "platform"
},
"available_models": [
{ "name": "gpt-5.5-mini", "max_tokens": 131072 }
]
}
}
}
Zed поддерживает как OpenAI-compatible, так и Anthropic-compatible кастомные endpoint с раздельной конфигурацией. Ключи хранятся в system keychain (не в открытом виде в конфигурационных файлах), переменные окружения имеют приоритет при установке.
Что можно настроить:
api_urlдля каждого provider — разные gateway для разных provider- Кастомные HTTP header для каждого provider — для атрибуции затрат и audit
- Кастомные определения моделей с лимитами token
- Хранение API key в system keychain
Что нельзя настроить:
- Встроенный governance помимо управления ключами
- Routing external agent (Zed Agent и external agent используют раздельную конфигурацию)
- Принудительное применение политик на уровне команды (Zed — однопользовательский инструмент)
Матрица решений: выбор agent по требованиям routing
| Требование | Лучший выбор | Альтернатива |
|---|---|---|
| Весь трафик через один gateway, без исключений | Claude Code (env var покрывает всё) | Codex CLI (простой, согласованный) |
| Routing по provider через разные gateway | Zed (api_url для каждого provider) | Остальные — один endpoint |
| Enterprise governance + audit trail | GitHub Copilot Enterprise (org policies + proxy) | Claude Code Enterprise (SSO + контроль расходов) |
| Гибкость выбора моделей со своими ключами | Zed (полный каталог provider) | Cursor (кастомные модели, но проблема sub-agent) |
| Managed-опыт без собственной инфраструктуры | Devin Desktop (полностью managed routing) | GitHub Copilot (модели под управлением GitHub) |
| Согласованность sub-agent (все agent идут одним маршрутом) | Claude Code (наследует gateway) | Codex CLI (нет sub-agent, нечему ломаться) |
Паттерны интеграции с gateway
Для команд, использующих routing gateway, — как каждый agent подключается:
Паттерн 1: OpenAI-compatible gateway (Cursor, Codex, Zed, Copilot)
Gateway предоставляет /v1/chat/completions с OpenAI-compatible форматом запроса/ответа. Большинство agent подключаются через base URL и API key.
# Что ваш gateway получает от Cursor / Codex / Zed
# POST /v1/chat/completions
{
"model": "claude-opus-4-8", # Gateway маршрутизирует к upstream provider
"messages": [...],
"stream": true
}
Gateway обрабатывает маппинг модели на provider, ротацию ключей, лимиты расходов и fallback routing. Agent не обязан знать, какой upstream provider обслуживает запрос.
Паттерн 2: Anthropic-compatible gateway (Claude Code)
Claude Code использует Anthropic Messages API, а не OpenAI-compatible. Gateway должен принимать POST /v1/messages с запросами в формате Anthropic.
# Что ваш gateway получает от Claude Code
# POST /v1/messages
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 8192,
"messages": [...],
"stream": true
}
Gateway вроде LiteLLM, Portkey и TheRouter могут конвертировать между форматами. Если ваш gateway поддерживает только OpenAI-compatible, потребуется Anthropic-to-OpenAI translation layer.
Паттерн 3: Gateway невозможен (Devin Desktop)
Devin Desktop не поддерживает кастомные endpoint. Весь трафик идёт через managed-инфраструктуру Devin. Если регуляторные или compliance-требования требуют, чтобы LLM-трафик оставался внутри вашей сети, Devin Desktop не подходит.
Нерешённые проблемы
Несмотря на быстрый прогресс, у всех шести agent остаются общие операторские пробелы:
-
Единый audit trail — ни один agent нативно не экспортирует структурированные логи (request ID, модель, token, latency, cost) в формате, готовом для вашего стека observability. Нужно логирование на стороне gateway.
-
Единая политика для нескольких agent — если команда использует Cursor и Claude Code одновременно, единого dashboard для governance моделей нет. У каждого agent свой механизм конфигурации.
-
Governance MCP-инструментов — Agent всё чаще используют MCP tools, но стандарта ограничения доступных MCP-серверов нет. Модель разрешений Claude Code ближе всего, но она специфична для Claude.
-
Автоматическая ротация ключей — только GitHub Copilot Enterprise и Claude Code Enterprise предоставляют управляемый администратором lifecycle ключей. В остальных разработчики управляют ключами сами.
-
Атрибуция расходов по проекту/команде — кастомные header Zed ближе всего к атрибуции расходов, но ни один agent не имеет встроенной маркировки центра затрат.
Routing gateway решает (1), (2) и (5), централизуя трафик. Когда OpenAI-compatible запросы проходят через единый endpoint, gateway может маркировать, логировать и применять политики вне зависимости от того, какой coding agent отправил запрос. TheRouter маршрутизирует OpenAI-compatible запросы через настроенных provider, поддерживая паттерн единого endpoint для agent с кастомным base URL.
Часто задаваемые вопросы
В: Можно ли через Cursor использовать не-OpenAI provider через gateway? Да — установите Override OpenAI Base URL на ваш gateway, и gateway сможет маршрутизировать к Anthropic, DashScope, DeepSeek или любому provider. Ограничение: sub-agent Cursor обходят это переопределение (известный баг на июль 2026).
В: Работает ли Claude Code с OpenAI-compatible gateway? Только если ваш gateway также поддерживает Anthropic Messages API. Claude Code не отправляет запросы в формате OpenAI. Gateway вроде LiteLLM и Portkey поддерживают оба формата.
В: Windsurf всё ещё доступен? Windsurf переименован в Devin Desktop 2 июня 2026 года. Существующие настройки Windsurf переносятся автоматически.
В: Какой agent лучше всего подходит для air-gapped или on-premise развёртывания? Codex CLI и Claude Code поддерживают подключение к локальному endpoint. Zed поддерживает локальные модели через Ollama или LM Studio. Devin Desktop и GitHub Copilot требуют облачного подключения.
В: Можно ли принудительно применять whitelist моделей на уровне команды? GitHub Copilot Enterprise предоставляет контроль списка моделей на уровне организации. Claude Code Enterprise позволяет ограничивать tier. Для остальных — применяйте на уровне gateway: отклоняйте запросы к моделям вне вашего утверждённого списка.
Цены, доступность функций и поведение sub-agent могут измениться с обновлениями от вендоров. Перед развёртыванием проверяйте текущую конфигурацию по официальной документации каждого инструмента.