Короткий ответ
Codex работает по протоколу OpenAI, но переменную OPENAI_BASE_URL не читает: адрес указывается в ~/.codex/config.toml:
# ~/.codex/config.toml (Codex не читает OPENAI_BASE_URL — адрес указывается здесь)
model_provider = "teamorouter"
model = "deepseek-v4-pro"
[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"
export OPENAI_API_KEY="sk-teamo-your-key"
ID модели — deepseek-v4-pro (DeepSeek V4 Pro, платная). Ниже — настройка по умолчанию и через профили.
У нового аккаунта баланс $0 — пополните его до первого запроса. Пополнить можно от $5. Если запрос возвращает 402 (в формате OpenAI — 400) с текстом «wallet balance is insufficient», значит, баланс пуст, а base URL и ключ настроены правильно. Пополните баланс и повторите запрос.
config.toml: самый простой путь
Собственный эндпоинт Codex берёт только из model_providers в config.toml (см. выше), а ключ — из переменной, указанной в env_key. Добавьте export OPENAI_API_KEY=... в профиль оболочки (~/.zshrc / ~/.bashrc), и каждый запрос Codex пойдёт в TeamoRouter. Затем укажите модель:
codex --model deepseek-v4-pro "Introduce yourself in one sentence"
Обратите внимание: base_url включает /v1 — Codex обращается к Responses API OpenAI, которому это нужно.
Профили: маршрутизация по задачам
Если вы не хотите переводить на DeepSeek весь Codex, используйте профиль — он даёт точный контроль. Начиная с Codex CLI 0.166 каждый профиль — отдельный файл ~/.codex/<имя-профиля>.config.toml; если в config.toml осталась таблица [profiles.xxx], --profile завершается ошибкой.
В ~/.codex/config.toml оставьте только блок [model_providers.teamorouter] из примера выше, без model_provider и model верхнего уровня, — тогда по умолчанию Codex работает на своих моделях. Затем создайте ~/.codex/teamorouter-pro.config.toml:
# ~/.codex/teamorouter-pro.config.toml
model_provider = "teamorouter"
model = "deepseek-v4-pro"
Затем:
codex --profile teamorouter-pro "Refactor src/services/reporting.py to remove duplicate branches"
Мы проверили обе настройки на Codex CLI 0.166.0 2 ноября 2026 года: Codex отправил запросы к deepseek-v4-pro на /v1/responses (Responses API), и они дошли до шлюза TeamoRouter.
Так по умолчанию в Codex остаётся штатный GPT, а DeepSeek включается только с --profile teamorouter-pro, и вы маршрутизируете по задачам: тяжёлая работа — на штатном GPT в Codex, ежедневная частая работа — на дешёвом DeepSeek V4.
Цена
Официальная цена DeepSeek на V4 Pro — $1.32 за миллион входных и $3.96 за миллион выходных токенов в пиковые часы, вне пика вдвое дешевле (цены DeepSeek, 2 ноября 2026 года). Актуальные цены TeamoRouter — на странице цен.
Частые ошибки
Codex возвращает 404 или не может подключиться?
Либо в base_url не хватает /v1, либо задан только OPENAI_BASE_URL без config.toml (Codex эту переменную не читает). Эндпоинт должен быть https://api.teamorouter.com/v1 и прописан в ~/.codex/config.toml.
Ошибка авторизации 401?
OPENAI_API_KEY не применился, либо ключ скопирован не полностью. Выполните echo $OPENAI_API_KEY и убедитесь, что ключ начинается с sk-teamo- и не содержит пробелов.
Не получается переключить модель в Codex?
Убедитесь, что название модели написано строчными буквами с разделителями - (deepseek-v4-pro). Актуальный список можно получить через curl .../v1/models.
Ошибка «Model 'deepseek-v4-pro-free' is not available»?
В TeamoRouter нет модели deepseek-v4-pro-free. Замените model в config.toml (или в teamorouter-pro.config.toml, если используете профиль) на deepseek-v4-pro; больше ничего менять не нужно.
Конфликтуют ли профили с переменными окружения?
Явно указанные в профиле base_url / api_key имеют приоритет над переменными окружения — идеально для схемы «по умолчанию GPT, отдельные задачи — на DeepSeek».
Работают ли рассуждения V4 Pro в Codex?
Да. V4 Pro работает по OpenAI-совместимому протоколу, и рассуждения передаются насквозь; дополнительная настройка Codex не нужна.
Получите ключ в TeamoRouter — и две переменные окружения подключат DeepSeek V4 Pro к Codex.