Codex config.toml 配置第三方 API:2026 年起只支持 Responses

Wokey Team · 2026-09-24

结论先说: Codex 接第三方 API,只需要在 ~/.codex/config.toml 里定义一个自定义 provider,base_url 填网关地址,密钥放进 env_key 指定的环境变量。协议只能是 Responses:2026 年 2 月起 Codex 已经删掉了 Chat Completions 支持,wire_api = "chat" 会直接报错,所以网上大多数写着 wire_api = "chat" 的教程已经不能用了。

下面的配置在当前版本的 Codex CLI 上可直接使用,文中所有报错文本都来自 Codex 源码或 Wokey 线上接口的实际返回。

完整配置(复制即用)

# ~/.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="你的 Wokey API Key"
codex

每个字段的作用:

字段 作用 常见坑
model_provider 顶层字段,指向下面 [model_providers.<id>] 里的 id 忘了写就还在用内置的 openai,会要求登录 ChatGPT
base_url 网关地址,Codex 会在后面拼 /responses 不要自己加 /responses,否则请求会变成 /responses/responses
env_key 存放密钥的环境变量名,Codex 读取后以 Authorization: Bearer 发送 这里写变量名,不是密钥本身
wire_api 线上协议,现在只有 "responses" 一个合法值,也是默认值 写 "chat" 会启动失败

base_url 在 Wokey 上写 https://api.wokey.ai 或 https://api.wokey.ai/v1 都可以,网关同时注册了 /responses 和 /v1/responses。换成其他中转站时,以对方文档为准,不少网关只注册了带 /v1 的路径。

环境变量名可以随便取。用 OPENAI_API_KEY 也行,但如果你同时在用 OpenAI 官方 API,单独起一个 WOKEY_API_KEY 可以避免两边的 key 互相覆盖。

为什么旧教程不能用了

时间线:

从那之后,Codex 的 WireApi 只剩 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 接口。

其他已经过时或无效的写法

provider 里直接写 api_key。 Codex 的 provider 配置拒绝未知字段,api_key = "sk-..." 这一行会让配置解析失败。密钥应该通过 env_key 指定的环境变量传入;确实需要把 token 写进文件时,字段名是 experimental_bearer_token,但不建议这么做。

[profiles.xxx] 和顶层 profile = "xxx"。 Codex 0.134.0 起,--profile xxx 改为叠加读取 ~/.codex/xxx.config.toml,config.toml 里的 [profiles.xxx] 不再读取,顶层 profile = 也不再支持。想在官方账号和第三方网关之间切换,可以把 Wokey 的 provider 放进 ~/.codex/wokey.config.toml,用 codex --profile wokey 启动。

把 provider 写在项目里的 .codex/config.toml。 项目级配置里的 model_provider 和 model_providers 会被忽略,provider 只能定义在用户目录 ~/.codex/ 下。

provider id 用 openai、ollama 或 lmstudio。 这三个是内置 provider 的保留 id,不能拿来定义自定义 provider,换个名字,比如 wokey。

选哪个模型

Codex 只发 Responses 请求,所以优先选原生提供 /v1/responses 的模型。Wokey 当前原生支持 Responses 的有 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 的模型)在 Wokey 上也能被 Codex 调用:网关会把请求转换成上游支持的协议,再把结果转换回 Responses 格式。但转换有损:Codex 的一部分专用工具(例如 freeform 形式的 apply_patch、local_shell、内置 web_search)转到 Chat Completions 时会被丢掉,工具调用也要等整段回复结束才会出现。写代码的主力模型建议选原生 Responses 的。

报错排查

Missing environment variable: `WOKEY_API_KEY`. Codex 没读到 env_key 指定的变量。检查变量名拼写,确认是在启动 codex 的同一个终端里 export 的;写进 ~/.zshrc 或 ~/.bashrc 后要重开终端。

HTTP 401,返回 {"error":{"code":"invalid_api_key","message":"invalid_api_key","type":"invalid_request_error"}} 这是 Wokey 对缺失或错误 key 的统一返回。检查 key 是否完整复制、是否已在控制台删除,以及变量里有没有多余的引号或空格。

HTTP 404,返回 Route POST:/responses/responses not found base_url 末尾多写了 /responses。Codex 会自己拼接路径,base_url 只写到域名(或 /v1)。

启动时要求登录 ChatGPT 顶层没有 model_provider = "wokey",或者 provider 写在了项目级 .codex/config.toml 里被忽略,Codex 退回到了内置的 openai provider。

wire_api = "chat" is no longer supported 见上文,改成 "responses" 或删掉这一行。

HTTP 402 账户余额不足。

排查时可以先绕开 Codex,用 curl 直接验证 key 和接口:

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 也不通,问题在 key 或网络。

常见问题

Codex 的 wire_api 还能写 chat 吗?

不能。Codex 在 2026 年 2 月 3 日合并的 PR #10157 删除了 Chat Completions 支持,现在 wire_api 只有 responses 一个合法值,写 chat 会在启动时报错。改成 wire_api = "responses" 或删掉这一行即可,它本来就是默认值。

Codex 的 base_url 要不要带 /v1?

Codex 会在 base_url 后面拼接 /responses。接 Wokey 时写 https://api.wokey.ai 或 https://api.wokey.ai/v1 都可以;不要自己加 /responses,否则会得到 404 Route POST:/responses/responses not found。

API Key 能直接写进 config.toml 吗?

provider 里写 api_key 会让配置解析失败,Codex 的 provider 配置拒绝未知字段。正确做法是用 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,config.toml 里的 [profiles.name] 不再读取。把对应配置挪到单独的文件即可。