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 больше не читаются. Перенесите эти настройки в отдельный файл.