Codex CLI в России: установка и настройка без VPN

Codex CLI в России: установка и настройка без VPN

TL;DR. Codex CLI от OpenAI официально требует ChatGPT-логин или ключ от OpenAI API — оба пути из России закрыты. Решение: ~/.codex/config.toml с секцией [model_providers.ofox], wire_api = "chat" и ключом от ofox.ai. Дальше CLI работает как обычно, на тех же gpt-5.3-codex и gpt-5.4. Голый OPENAI_BASE_URL не сработает — ниже разбираем почему.

Почему “просто скачать” не работает

Codex CLI — open-source coding-agent от OpenAI на Rust, ответ на Claude Code и Cursor. К весне 2026 он стабилизировался: терминальный UI, чтение репозитория, выполнение shell-команд, мульти-файл правки, две дефолтные модели — GPT-5.3 Codex (агентский) и GPT-5.4 (general).

Стандартный путь установки выглядит так: npm i -g @openai/codex, потом codex — открывается браузер с ChatGPT-логином. Для российского пользователя на этом всё и кончается. Три типичных тупика:

  1. ChatGPT-логин. С российского IP отваливается на странице авторизации (Country not supported). Через VPN страница открывается, но billing-агент OpenAI выкидывает любую попытку оплаты с российской карты, а часть VPN-провайдеров уже в чёрном списке OpenAI fraud-detection.
  2. OpenAI API key. Если ключ уже есть — ставьте и не читайте дальше. Получить новый сейчас: нужен зарубежный paspor verification, не-российский IP при регистрации и зарубежная карта для пополнения. На каждом шаге шанс провалиться.
  3. Перепродажа ChatGPT-аккаунтов. Нарушает ToS, аккаунт банят пачками. Депозит сгорает вместе с банкой.

Хорошая новость: Codex CLI поддерживает кастомные model_providers. Любой OpenAI-совместимый шлюз подключается за две минуты — protocol тот же, команды те же, разница только в base_url и в том, кто обрабатывает биллинг.

Установка самого CLI

Поддерживаются macOS, Windows и Linux. Через npm:

npm i -g @openai/codex
codex --version

Альтернатива без Node.js — бинарник со страницы GitHub Releases. Бинарь называется codex, других зависимостей нет.

Запускать codex без конфига пока не нужно — он сразу полезет в ChatGPT-логин и зависнет. Сначала настройте провайдера, потом запускайте.

Получаем ключ на ofox.ai

ofox.ai — OpenAI-совместимый шлюз с одним ключом на все модели (OpenAI, Anthropic, Google, open-source). Для Codex CLI нас интересуют три модели OpenAI:

Model IDКогда использовать
openai/gpt-5.3-codexДефолт, дообучена под агентский кодинг — чтение проекта, мульти-файл правки, тесты
openai/gpt-5.4Архитектурный рефакторинг, сложные баги, длинный контекст
openai/gpt-5.4-miniОпечатки, докстринги, типовые сниппеты — ≈5× дешевле

Регистрация на ofox.ai идёт через email или Google, российские карты не нужны — пополнение через USDT и другие криптометоды. В разделе API Keys создаём ключ, копируем строку (формат sk-...).

Почему просто OPENAI_BASE_URL не сработает

Логично попробовать «быстрый» путь:

export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://api.ofox.ai/v1"
codex

В Codex CLI весны 2026 он не работает. Встроенный провайдер openai использует wire_api = "responses" (Responses API, /v1/responses), а у ofox поднят только Chat Completions (/v1/chat/completions). На первом же запросе получите 404.

Чтобы переключить wire-протокол и заодно изолировать ключ от других проектов, нужен собственный model_provider в config.toml — ниже.

Постоянная настройка через config.toml

Создайте (или отредактируйте) файл ~/.codex/config.toml:

model_provider = "ofox"
model = "openai/gpt-5.3-codex"

[model_providers.ofox]
name = "ofox.ai gateway"
base_url = "https://api.ofox.ai/v1"
env_key = "OFOX_API_KEY"
wire_api = "chat"

Что делает каждая строка:

  • model_provider = "ofox" — CLI больше не пойдёт в api.openai.com, всё через ofox
  • model = "openai/gpt-5.3-codex" — модель по умолчанию (можно переопределить флагом --model)
  • env_key = "OFOX_API_KEY" — какую переменную окружения читать вместо OPENAI_API_KEY. Имя ваше — главное, чтобы оно нигде больше не пересекалось
  • wire_api = "chat"обязательно. По умолчанию Codex CLI использует Responses API (/v1/responses), который у ofox не поднят. Без этой строки получите 404 на любой запрос

Кладём ключ в shell rc:

# ~/.zshrc или ~/.bashrc
export OFOX_API_KEY="sk-..."

Перезагружаем shell (source ~/.zshrc), проверяем echo $OFOX_API_KEY, запускаем codex. Если попадаете в интерактивный UI без браузерного flow — связка работает.

Боевая проверка

Заходим в любой git-репозиторий:

cd ~/projects/my-app
codex

Пишем что-нибудь практическое, например:

прочитай README, потом покажи где входная точка и какие тесты сейчас падают

Codex прочитает файлы, выведет план и попросит подтверждение перед запуском shell-команд. Этим управляют флаги --ask-for-approval (значения: untrusted, on-request, never) и --sandbox (read-only, workspace-write, danger-full-access). Полностью отключить песочницу и подтверждения можно --dangerously-bypass-approvals-and-sandbox (алиас --yolo) — но только в изолированном окружении, для повседневной работы не стоит. В логе сетевых запросов должны мелькать обращения к api.ofox.ai/v1/chat/completions — это и есть индикатор, что подмена сработала.

Частые ошибки

Authentication failed: invalid_api_key — ключ не подгрузился. echo $OFOX_API_KEY в той же shell-сессии, откуда стартует codex. Если пусто — source файл rc или экспортируйте ключ напрямую в текущей сессии.

Model not found — имя в config.toml не совпадает с принимаемым у ofox. У ofox принимается полный ID в формате openai/gpt-5.3-codex (с префиксом провайдера). Без префикса CLI получит 404.

404 на /v1/responses — забыли wire_api = "chat" внутри [model_providers.ofox]. По умолчанию Codex CLI ходит в Responses API, у ofox такого endpoint нет — только Chat Completions.

Connection timeout или 404 — base_url ушёл не туда. У ofox API живёт на https://api.ofox.ai/v1, не на ofox.ai. Проверьте, что model_provider = "ofox" стоит в корне файла, не внутри секции [model_providers.ofox] (классический TOML-капкан).

CLI всё равно лезет в браузер — значит до конфига он не дошёл. Скорее всего лежит старый ~/.codex/auth.json от предыдущей попытки. rm ~/.codex/auth.json и перезапустите.

Tool calls работают, но качество хуже, чем у официального Codex — переключите модель на gpt-5.4. На сложных рефакторингах разница ощутима, агентский режим у gpt-5.3-codex заточен под скорость, а не глубину.

Чек-лист

  1. npm i -g @openai/codex
  2. Регистрация на ofox.ai → пополнение → API key
  3. ~/.codex/config.toml: model_provider = "ofox", секция [model_providers.ofox] с wire_api = "chat"
  4. export OFOX_API_KEY="sk-..." в shell rc
  5. codex в любом проекте

Ни VPN, ни ChatGPT-аккаунта, ни зарубежной карты. Команды и UX — те же, что в официальной документации Codex CLI, переход прозрачный для всего, что вы про CLI уже знаете.