笔记 by 车东

Codex 0.151 弃用 `api_key`:taotoken provider 改用 `requires_openai_auth`

接上一篇《Claude Code + Codex 多机配置对齐排错》:当时用 api_key 修好了 401,升级到 Codex 0.151 后这个方案失效了。

TLDR

Codex CLI 升级到 0.151.0 后,~/.codex/config.toml[model_providers.taotoken] 里写的 api_key = "sk-***" 被静默忽略,请求不带 Authorization 头,taotoken 网关返回 invalid_request_error: You didn't provide an API key

修复:删掉 provider 里的 api_key,改为 requires_openai_auth = true,让 Codex 从 ~/.codex/auth.jsonOPENAI_API_KEY 读密钥(taotoken CLI 本来就把 key 写在那里)。

问题

升级 codex 后(本机 Homebrew cask 更新到 0.151.0),codex 一调用就报:

{"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth...","type":"invalid_request_error"}}

请求到达了网关,但没带密钥头 → 配置里的 key 没生效。

根因

Codex 0.151 的 model_providers 配置结构(ModelProviderInfo没有 api_key 字段,认证只认:

字段 作用
env_key 指向存密钥的环境变量名
experimental_bearer_token 字面量 token(experimental)
requires_openai_auth ~/.codex/auth.json 读密钥
aws AWS 认证

旧版 Codex(如 0.144)认 api_key,升级后该字段被忽略 → 请求不带密钥头。

修复

~/.codex/config.toml

  [model_providers.taotoken]
  name = "TaoToken"
  base_url = "https://taotoken.net/api/v1"
  wire_api = "responses"
- api_key = "sk-***"
+ requires_openai_auth = true

key 不用写进 config.toml:Codex 会读 ~/.codex/auth.jsonOPENAI_API_KEYauth_mode = "apikey")。这正是 taotoken CLI(taotoken cx)写 key 的位置,命令行与桌面版/IDE 插件共用。

验证(真实运行):

codex exec 'reply with exactly: OK'
# provider: taotoken / model: deepseek-v4-flash → OK

桌面版 Codex 一并生效

桌面版 Codex(ChatGPT.app 内置,0.151.0-alpha.7.2)读同一个 ~/.codex/config.toml,schema 与 CLI 一致,所以同一处改动即可覆盖,重启 app 生效

给 taotoken 工具的 patch

taotoken cx 写出的 provider 没有 requires_openai_auth,且旧用户 config 里可能残留手填的 api_key。建议 src/codex-config.jsapplyCodexConfig 增加:

  const nextProvider = {
    ...prevProvider,
    name: 'TaoToken',
    base_url: nextBaseUrl,
    wire_api: 'responses',
+   requires_openai_auth: true,
  };
  delete nextProvider.env_key;
+ delete nextProvider.api_key; // 清理旧版遗留

@taotoken/taotoken 没有公开源码仓库(npm 无 repository 字段,GitHub/Gitee 搜不到),patch 需走 taotoken.net 控制台反馈渠道提交。

命令速查

目的 命令
确认 codex 版本 codex --version
查看 provider 配置 grep -A5 'model_providers.taotoken' ~/.codex/config.toml
验证连通 codex exec 'reply with exactly: OK'
恢复旧配置 ~/.taotoken/backups/codex/(taotoken 自动备份)