Codex config.toml для стороннего API-провайдера: с 2026 года только Responses

Wokey Team · 2026-09-24

Коротко: чтобы направить Codex на сторонний API, опишите собственного провайдера в ~/.codex/config.toml, укажите в base_url адрес шлюза и положите ключ в переменную окружения, имя которой задано в env_key. Протокол обмена должен быть Responses. В феврале 2026 года Codex убрал поддержку Chat Completions, и wire_api = "chat" теперь падает при запуске, поэтому большинство инструкций, где всё ещё указан wire_api = "chat", больше не работают.

Приведённый ниже конфиг работает в актуальных версиях Codex CLI. Каждое сообщение об ошибке в этом руководстве взято из исходного кода Codex или из реального ответа Wokey API.

Полный конфиг (копируйте и вставляйте)

# ~/.codex/config.toml
model = "gpt-6-sol"
model_provider = "wokey"

[model_providers.wokey]
name = "Wokey"
base_url = "https://api.wokey.ai"
env_key = "WOKEY_API_KEY"
wire_api = "responses"
export WOKEY_API_KEY="your Wokey API key"
codex

За что отвечает каждое поле:

Поле Назначение Частая ошибка
model_provider Ключ верхнего уровня с именем таблицы [model_providers.<id>], которую нужно использовать Без него Codex остаётся на встроенном провайдере openai и просит войти в ChatGPT
base_url Адрес шлюза; Codex сам дописывает /responses Не добавляйте /responses вручную, иначе запросы уйдут на /responses/responses
env_key Имя переменной окружения, в которой хранится ключ; Codex передаёт его как Authorization: Bearer Здесь указывается имя переменной, а не сам ключ
wire_api Протокол обмена; "responses" — единственное допустимое значение и значение по умолчанию "chat" падает при запуске

В Wokey base_url может быть https://api.wokey.ai или https://api.wokey.ai/v1: шлюз обслуживает и /responses, и /v1/responses. Для других шлюзов следуйте их документации: многие регистрируют только пути с /v1.

Имя переменной выбираете вы. OPENAI_API_KEY тоже подойдёт, но если вы пользуетесь и официальным OpenAI API, отдельная WOKEY_API_KEY не даст двум ключам перезаписывать друг друга.

Почему старые инструкции не работают

Хронология:

  • 2025-12-09: команда Codex опубликовала на GitHub обсуждение #7782, "Deprecating chat/completions support in Codex". В нём объявили об удалении в начале февраля 2026 года, попросили пользователей с wire_api = "chat" или без wire_api перейти на новый протокол, а шлюзы — подтвердить поддержку Responses.
  • 2026-02-03: был принят PR #10157, "chore: nuke chat/completions API", и код Chat Completions удалили.

С тех пор у WireApi в Codex осталось одно значение — Responses. Если в конфиге по-прежнему стоит wire_api = "chat", Codex падает при запуске с ошибкой:

`wire_api = "chat"` is no longer supported.
How to fix: set `wire_api = "responses"` in your provider config.
More info: https://github.com/openai/codex/discussions/7782

Замените значение на wire_api = "responses" или удалите строку. Это также означает, что шлюз, который умеет только Chat Completions, больше не может обслуживать Codex: прежде чем выбирать шлюз, проверьте, есть ли у него эндпоинт /v1/responses.

Другие устаревшие или игнорируемые настройки

api_key внутри таблицы провайдера. Codex отклоняет неизвестные поля в конфиге провайдера, поэтому из-за строки api_key = "sk-..." конфиг не парсится. Передавайте ключ через переменную, имя которой задано в env_key. Если без токена в файле совсем никак, нужное поле — experimental_bearer_token, но так делать не рекомендуется.

[profiles.xxx] и profile = "xxx" на верхнем уровне. Начиная с Codex 0.134.0, --profile xxx накладывает поверх основного конфига файл ~/.codex/xxx.config.toml. Таблицы [profiles.xxx] в config.toml больше не читаются, а profile = на верхнем уровне больше не поддерживается. Чтобы переключаться между официальным аккаунтом и шлюзом, вынесите провайдера Wokey в ~/.codex/wokey.config.toml и запускайте codex --profile wokey.

Провайдеры в .codex/config.toml проекта. Конфиг уровня проекта игнорирует model_provider и model_providers. Провайдеров можно описывать только в домашнем ~/.codex/.

ID провайдера openai, ollama или lmstudio. Эти ID зарезервированы за встроенными провайдерами, и задать с ними собственного провайдера нельзя. Используйте другое имя, например wokey.

Какую модель выбрать

Codex отправляет только запросы Responses, поэтому лучше выбирать модели, которые нативно поддерживают /v1/responses. Сейчас в Wokey это семейство GPT (gpt-6-sol, gpt-6-luna, gpt-6-astra, gpt-5.6-sol), семейство Grok (grok-4.7, grok-4.6) и deepseek-flash. Источник истины — список «Поддерживаемые эндпоинты» на странице каждой модели; состав со временем меняется.

Модели без нативного Responses, например те, у которых указан только Chat Completions, всё равно работают из Codex через Wokey. Шлюз преобразует запрос в протокол апстрима, а результат — обратно в Responses. Однако преобразование идёт с потерями:

  • При преобразовании в Chat Completions отбрасываются некоторые специфичные для Codex инструменты, например freeform-apply_patch, local_shell и встроенный web_search.
  • Вызовы инструментов появляются только после того, как весь ответ завершён.

В качестве основной модели для написания кода выбирайте модель с нативным Responses.

Устранение неполадок

Missing environment variable: `WOKEY_API_KEY`. Codex не нашёл переменную, имя которой задано в env_key. Проверьте написание и убедитесь, что вы экспортировали её в том же терминале, из которого запускаете codex. Если вы добавили её в ~/.zshrc или ~/.bashrc, откройте новый терминал.

HTTP 401 с code invalid_api_key Wokey возвращает эту ошибку, если ключ отсутствует или неверен, а message уточняет причину: ключ не передан, такого ключа нет, либо он удалён, приостановлен или истёк. Проверьте, что ключ скопирован целиком, не удалён и не приостановлен в консоли и в переменной нет лишних кавычек или пробелов.

HTTP 404 с Route POST:/responses/responses not found base_url заканчивается на /responses. Codex дописывает путь сам, поэтому base_url должен заканчиваться доменом (или /v1).

Codex просит войти в ChatGPT Нет model_provider = "wokey" на верхнем уровне, или провайдер описан в .codex/config.toml проекта, где он игнорируется. Codex откатился на встроенного провайдера openai.

wire_api = "chat" is no longer supported См. выше: замените значение на "responses" или удалите строку.

HTTP 402 На балансе аккаунта закончились средства.

Чтобы исключить Codex из подозреваемых, сначала проверьте ключ и эндпоинт через curl:

curl https://api.wokey.ai/v1/responses \
  -H "Authorization: Bearer $WOKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-6-sol","input":"ping"}'

Если curl работает, а Codex — нет, проблема в config.toml. Если curl тоже не работает, проблема в ключе или в сети.

Частые вопросы

Можно ли в Codex по-прежнему указать wire_api = "chat"?

Нет. Поддержку Chat Completions удалили в PR #10157, который влили 2026-02-03. Теперь wire_api принимает только responses, а с chat Codex падает при запуске. Замените строку на wire_api = "responses" или просто удалите её — это значение по умолчанию.

Нужно ли добавлять /v1 в base_url для Codex?

Codex дописывает /responses к base_url. С Wokey подходят оба варианта: https://api.wokey.ai и https://api.wokey.ai/v1. Не добавляйте /responses сами, иначе получите 404 Route POST:/responses/responses not found.

Можно ли прописать API-ключ прямо в config.toml?

Поле api_key в таблице провайдера ломает разбор конфига: Codex отклоняет неизвестные поля провайдера. Вместо этого укажите имя переменной окружения в env_key и задайте её через export.

Может ли Codex работать с Claude и другими моделями, кроме GPT?

Через Wokey — да: шлюз преобразует запрос Responses в протокол апстрима. При этом теряется часть специфичных для Codex инструментов, поэтому для программирования выбирайте модель с нативной поддержкой /v1/responses, например gpt-6-sol, grok-4.7 или deepseek-flash.

Почему перестала работать секция [profiles]?

Начиная с Codex 0.134.0, --profile name накладывает поверх основного конфига файл ~/.codex/name.config.toml, а таблицы [profiles.name] в config.toml больше не читаются. Перенесите эти настройки в отдельный файл.