Codex CLI
Актуальный контракт custom provider в Codex CLI и его совместимость с ToyGate.
Текущая совместимость
Custom provider в Codex CLI использует wire format OpenAI Responses API. Сейчас ToyGate предоставляет /v1/chat/completions, но не монтирует /v1/responses. Поэтому прямое подключение Codex CLI как custom provider пока недоступно: с конфигурацией ниже Codex отправит запрос, который шлюз отклонит с endpoint_not_supported.
Не направляйте OPENAI_BASE_URL на ToyGate для Codex и не используйте устаревшие примеры с codex chat или --stream. Они не меняют текущий wire protocol custom provider в Codex.
Официальная структура provider в Codex
Когда ToyGate начнёт поддерживать /v1/responses, настройте provider и профиль в ~/.codex/config.toml. Ключ gw_... храните в переменной окружения, а не в файле:
Для актуального Codex CLI требуется wire_api = "responses". Это не режим совместимости с Chat Completions, поэтому для текущего шлюза его нельзя заменить на chat.
Non-interactive команда после поддержки Responses
После реализации Responses endpoint запускайте Codex без интерактивного режима через именованный профиль:
Модель в профиле должна быть включённым слагом из каталога, а не внутренним ID модели upstream-провайдера.
Решение проблем
endpoint_not_supportedдля/v1/responses— ожидаемый результат в текущем runtime ToyGate. Codex требует Responses API для custom provider, а ToyGate пока поддерживает только Chat Completions.- HTTP 401 с
type: "authentication_error"иcode: null— после появления поддержки Responses это означает, что шлюз получил заголовок, но отклонил ключ. Проверьте префиксgw_и убедитесь, чтоTOYGATE_API_KEYсуществует в клиентском кабинете или административной панели и не отозван. 404 model_not_found— после появления поддержки Responses указанный слаг отсутствует в каталоге либо модель отключена. Получите актуальный список:curl <GatewayUrl/>/v1/catalog | jq '.data[].id'.
URL шлюза: https://api.toygate.store