# Codex

Codex обращается к моделям через Responses API. Добавьте в config.toml провайдера, который указывает на NezhaGate, — и пишите код с GPT-моделями NezhaGate.

> https://nezhagate.com/ru/docs/integrations/codex

Проверено на версии Codex CLI 0.160

## Перед началом

- Установите Codex CLI или расширение Codex для VS Code, Cursor или Windsurf, затем создайте API-ключ в консоли.

- Codex работает только через OpenAI Responses API (`/v1/responses`), а на этом эндпоинте NezhaGate отдаёт только модели GPT. Для Claude, Gemini и остальных моделей используйте эндпоинт чата или инструмент вроде [Claude Code](https://nezhagate.com/ru/docs/integrations/claude-code).

Модели, которые можно использовать в Codex:

`gpt-5.6-sol` · `gpt-5.6-terra` · `gpt-5.6-luna` · `gpt-5.5` · `gpt-6-astra` · `gpt-6.1-sol` · `gpt-6-sol` · `gpt-6-luna`

## Добавьте провайдера в config.toml

Откройте `~/.codex/config.toml` (на Windows — `%USERPROFILE%\.codex\config.toml`), создайте файл, если его нет, и добавьте:

```
model = "gpt-6.1-sol"
model_provider = "nezhagate"
web_search = "disabled"

[model_providers.nezhagate]
name = "NezhaGate"
base_url = "https://nezhagate.com/v1"
wire_api = "responses"
env_key = "NEZHAGATE_API_KEY"
```

- Ключи верхнего уровня, такие как `model` и `model_provider`, должны идти до первой таблицы `[...]`, иначе Codex примет их за часть этой таблицы.

- `web_search = "disabled"`: встроенный веб-поиск Codex использует инструмент, который работает на серверах OpenAI и через другого провайдера не гарантирован, — отключите его.

- Провайдер нужно задавать в пользовательском config.toml: `model_provider` в файле `.codex/config.toml` внутри проекта игнорируется. ID провайдера не может быть `openai`, `ollama` или `lmstudio` — эти имена зарезервированы Codex.

## Задайте API-ключ

Codex берёт ключ из переменной окружения `NEZHAGATE_API_KEY` (это значение `env_key` выше) и отправляет его как `Authorization: Bearer`; `codex login` не нужен.

```
export NEZHAGATE_API_KEY=YOUR_API_KEY
codex
```

```
setx NEZHAGATE_API_KEY "YOUR_API_KEY"
```

На macOS и Linux допишите строку с `export` в `~/.zshrc` или `~/.bashrc`, чтобы она сохранилась. На Windows после `setx` заново откройте терминал или VS Code, чтобы переменная подхватилась.

## Запуск и проверка

Выполните команду ниже — ответ `gateway-ok` означает, что подключение работает:

```
codex exec "Reply with exactly: gateway-ok"
```

- Введите `/status` в Codex, чтобы увидеть текущую модель и провайдера.

- Чтобы сменить модель, запустите Codex с `codex -m gpt-6.1-sol` или измените `model` в config.toml. Меню `/model` в Codex показывает только его встроенные модели, а не список NezhaGate.

- Затем попросите выполнить что-то, для чего нужен инструмент (например, «покажи список файлов здесь»), чтобы проверить работу вызова инструментов.

## Расширение для IDE

Расширение Codex для VS Code, Cursor и Windsurf читает тот же config.toml: значок шестерёнки на панели расширения → **Codex Settings** → **Open config.toml**. После правки перезапустите редактор; если он запущен не из терминала, убедитесь, что он видит переменную с API-ключом.

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

**Missing environment variable: `NEZHAGATE_API_KEY`**

Процесс, которым запущен Codex, не видит эту переменную: задайте её в том же терминале перед запуском; перезапустите IDE или десктопное приложение, а на Windows — заново откройте его после `setx`.

**`wire_api = "chat"` is no longer supported**

Устаревшая настройка: укажите в `wire_api` значение `"responses"`.

**unexpected status 401**

Ключ неверный: проверьте, что он скопирован полностью, без лишних пробелов, и не отключён ли он.

**unexpected status 404**

В `base_url` не хватает `/v1`. Должно быть `https://nezhagate.com/v1` — `/responses` Codex добавляет сам.

**Ошибки после выбора Claude, Gemini или любой другой модели, кроме GPT**

Codex работает только через `/v1/responses`, а там NezhaGate отдаёт только модели GPT. Выберите одну из моделей GPT, перечисленных выше.

**stream disconnected before completion**

Поток был прерван до завершения — обычно из-за локального прокси или сети. Повторите запрос, а если это повторяется регулярно, проверьте настройки прокси.
