OpenAI Codex CLI 配置 wire_api=responses 协议接入第三方网关完整指南(macOS + Windows) 一、报错背景装上 Codex 之后第一个迎接你的错误Codex CLI 装好后跑codex常见会被两个错误堵在门口Error: wire_api chat is no longer supported. Please update your config.toml to use wire_api responses.或者Error: 401 Unauthorized第一个是 Codex CLI 在 2026 年初的重大变更——彻底移除了对wire_api chat的支持从此只走/v1/responses协议。网上大量 2025 年写的教程还在告诉你填chat按那套配的人开机就报错。第二个是 OpenAI 账号本身的问题注册门槛、地区限制、付款卡限制等等。本文用 OmniModel 作为第三方网关演示一遍正确的wire_api responses配置——既绕开账号墙又不会被新版协议变更打脸。二、Codex CLI 与协议版本变更说明先讲清楚原理。Codex CLI 是 OpenAI 官方在 2025 年推出的命令行编程助手专为gpt-5.3-codex等代码大模型设计。它的请求路径有两个版本协议路径状态wire_api chat/v1/chat/completions⚠️已在 2026 年初彻底移除wire_api responses/v1/responses✅ 当前唯一支持/v1/responses协议的设计目的是支持 reasoning model 的思考链流式输出对比老的chat.completions多了若干字段并强制走 SSE。这意味着❌ 仅支持 OpenAI 镜像、做chat.completions转发的网关已经完全用不了 Codex CLI✅ 必须找到原生实现了/v1/responses端点的网关OmniModel 作为 AI 模型聚合网关完整实现了/v1/responses端点和相关 SSE 字段这也是它能跑 Codex CLI 的前提。三、第 0 步拿到 OmniModel 的 API Key打开 https://www.omnimodel.pro 注册控制台首页左侧 → 「令牌」 → 「添加新令牌」推荐配置字段推荐值备注名称codex-mac/codex-win便于成本归因额度$10 起Codex 开启reasoning_effort high比 Claude 贵 30% 左右模型范围全部 /gpt-*想多模型切换就留全部过期时间30 天 / 永久看个人安全偏好拿到sk-xxxxxxxx...形式的密钥后存好。四、安装 Codex CLI依赖 Node.js 18推荐 LTS 20node --version npm --version未装则macOS:brew install nodeWindows: Node.js — 下载 Node.js® 下载 LTS 包安装时记得勾 Add to PATH全局安装npm i -g openai/codexWindows 注意必须以管理员身份打开 PowerShell 后再装。如果遇到 不允许执行脚本先放开策略Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser输Y确认。国内拉包慢的话切镜像源npm config set registry https://registry.npmmirror.com npm i -g openai/codex验证安装codex --version # 应输出 v0.100 版本号五、第 1 步理解 Codex 的配置文件结构Codex 把所有配置和运行数据集中在用户目录下的.codex/文件夹平台路径macOS / Linux~/.codex/WindowsC:\Users\你的用户名\.codex\文件清单文件 / 目录必需作用config.toml✅主配置API 地址、鉴权方式、默认模型auth.json✅仅存放 API Key独立文件方便加权限保护history.jsonl自动生成对话历史sessions/自动生成会话上下文与状态log/codex.log自动生成排错日志tmp/自动生成缓存与中间产物关键设计Codex 把 API Key 单独抽到auth.json是为了方便给这一个文件单独加chmod 600权限避免和其他配置混在一起。六、第 2 步编写 config.toml核心章节完整的config.toml包含三个块顶层配置、Provider 定义、项目信任白名单。6.1 顶层配置块model_provider omnimodel # provider 别名与下方 [model_providers.xxx] 对应 model gpt-5.3-codex # 默认模型 model_reasoning_effort high # 推理深度low / medium / high disable_response_storage true # 不在 OpenAI 侧持久化响应用第三方网关时建议关掉 preferred_auth_method apikey # API Key 模式区别于 OAuth requires_openai_auth true # 必填v0.100 必须放顶层 enableRouteSelection true # 允许 Codex 自动路由 personality pragmatic # 回答风格6.2 Provider 定义块[model_providers.omnimodel] name omnimodel base_url https://omnimodel.pro/v1 # ⚠️ 必须带 /v1不能多不能少 wire_api responses # ⚠️ 当前唯一可用值不要填 chat env_key OPENAI_API_KEY # 从 auth.json 读取 API Key 的字段名6.3 项目信任白名单可选[projects./Users/yourname] trust_level trusted [projects./Users/yourname/.codex] trust_level trusted设为trusted后 Codex 在该目录里不再每次都问是否信任此项目。Windows 路径写法是[projects.C:/Users/yourname]用正斜杠或转义反斜杠。6.4 macOS / Linux 一键生成命令mkdir -p $HOME/.codex cat $HOME/.codex/config.toml EOF model_provider omnimodel model gpt-5.3-codex model_reasoning_effort high disable_response_storage true preferred_auth_method apikey requires_openai_auth true enableRouteSelection true personality pragmatic [model_providers.omnimodel] name omnimodel base_url https://omnimodel.pro/v1 wire_api responses env_key OPENAI_API_KEY [projects.$HOME] trust_level trusted [projects.$HOME/.codex] trust_level trusted EOF6.5 Windows PowerShell 一键生成命令$configPath $env:USERPROFILE\.codex\config.toml $home_unix $env:USERPROFILE -replace \\,/ $configContent model_provider omnimodel model gpt-5.3-codex model_reasoning_effort high disable_response_storage true preferred_auth_method apikey requires_openai_auth true enableRouteSelection true personality pragmatic [model_providers.omnimodel] name omnimodel base_url https://omnimodel.pro/v1 wire_api responses env_key OPENAI_API_KEY [projects.$home_unix] trust_level trusted New-Item -Path $env:USERPROFILE\.codex -ItemType Directory -Force | Out-Null Set-Content -Path $configPath -Value $configContent七、第 3 步编写 auth.jsonauth.json是个极简的 JSON 文件只有一个字段{ OPENAI_API_KEY: sk-你的实际密钥 }7.1 macOS / Linuxcat $HOME/.codex/auth.json EOF { OPENAI_API_KEY: sk-替换成你的Key } EOF chmod 600 $HOME/.codex/auth.json最后chmod 600不要省略——它把权限收紧成只有当前用户能读写避免被同机其他用户偷看密钥。7.2 Windows$authPath $env:USERPROFILE\.codex\auth.json $authContent { OPENAI_API_KEY sk-替换成你的Key } | ConvertTo-Json Set-Content -Path $authPath -Value $authContentWindows 下没有chmod但 NTFS 默认就是只有用户自己能读写自己%USERPROFILE%下的文件安全性已经够用。八、第 4 步联通性自检推荐每次配完都跑只看配置文件没用真正打一次 API 才知道有没有配通。8.1 macOS / Linux读取 Key 并请求模型列表KEY$(python3 -c import json, pathlib; print(json.loads((pathlib.Path.home()/.codex/auth.json).read_text())[OPENAI_API_KEY])) curl -sS -i https://omnimodel.pro/v1/models \ -H Authorization: Bearer $KEY | head -n 20预期输出HTTP/2 200 content-type: application/json ... { object: list, data: [ {id: gpt-5.3-codex, ...}, {id: claude-opus-4-7, ...}, ... ] }8.2 Windows PowerShell$authPath $env:USERPROFILE\.codex\auth.json $auth Get-Content $authPath | ConvertFrom-Json $key $auth.OPENAI_API_KEY Invoke-RestMethod -Uri https://omnimodel.pro/v1/models -Headers { Authorization Bearer $key } | Select-Object -ExpandProperty data | Select-Object -First 5 id8.3 状态码对照表HTTP 状态码含义处理方法200一切正常进入下一步401Key 错误或失效控制台重新生成 Key403Key 无访问该模型权限检查 Token 的模型范围设置404路径错了确认base_url是/v1返回 HTML 不是 JSON请求被路由到了网站前端同样是base_url写错502 / 504网关或上游短暂抖动等几秒重试九、第 5 步启动 Codexcd ~/your-project codex进入 TUI 后试个简单指令 解释一下这个项目的目录结构如果开始流式输出全跑通了。常用命令命令用途exit/quit退出 Codexhelp查看命令帮助clear清空当前对话上下文history查看历史对话调用成本可以在 OmniModel 控制台「日志」页查看十、故障排查清单按报错查表报错 Awire_api chat is no longer supported直接原因参考的是 2025 年的老教程里面填了wire_api chat。解决grep wire_api $HOME/.codex/config.toml # 应输出 wire_api responses如果输出是chat编辑器打开config.toml改成responses保存。Windowsnotepad $env:USERPROFILE\.codex\config.toml报错 Bstream disconnected before completion直接原因/v1/responses走 SSE 长连接中间被关掉了。排查顺序网络环境对长连接是否友好公司代理、校园网常有 60 秒超时强杀关掉 VPN 试试临时切手机热点验证一下是不是当前网络的问题都不行的话查日志tail -f $HOME/.codex/log/codex.logGet-Content $env:USERPROFILE\.codex\log\codex.log -Wait -Tail 50报错 C返回的是 HTML 不是 JSON直接原因base_url写错请求落到了 OmniModel 的网站前端而不是 API。正确https://omnimodel.pro/v1错误https://omnimodel.pro少/v1错误https://omnimodel.pro/chatgpt/v1多了路径错误https://omnimodel.pro/v1/末尾多斜杠部分情况下也会出问题报错 D401 Unauthorized排查顺序# 1. 确认 Key 不是空 python3 -c import json, pathlib d json.loads((pathlib.Path.home()/.codex/auth.json).read_text()) k d.get(OPENAI_API_KEY, ) print(Key present:, bool(k)) print(Key length:, len(k)) Key 长度应该是 51 个字符左右。如果是 0 或者比预期短说明 Key 没正确写入。# 2. 用 curl 直接打一次 chat.completions curl -sS https://omnimodel.pro/v1/chat/completions \ -H Authorization: Bearer $KEY \ -H Content-Type: application/json \ -d {model:gpt-5.2,messages:[{role:user,content:hi}]}如果这一步返回 200说明 Key 没问题问题在config.toml。# 3. 全部重置 rm $HOME/.codex/auth.json cat $HOME/.codex/auth.json EOF { OPENAI_API_KEY: sk-新的Key粘贴这里 } EOF chmod 600 $HOME/.codex/auth.json报错 ECodex command not found原因npm 全局 bin 目录不在 PATH 里。Mac/Linuxnpm config get prefix # 假设输出 /usr/local # 那么 bin 在 /usr/local/bin # 把它加到 PATH echo export PATH$(npm config get prefix)/bin:$PATH ~/.zshrc source ~/.zshrcWindowsnpm config get prefix # 默认是 %APPDATA%\npm # 在系统环境变量 PATH 里手动加上这个路径十一、安全自检生产环境必做检查 1auth.json 权限ls -la $HOME/.codex/auth.json # 应显示 -rw-------即权限 600不是 600 的话chmod 600 $HOME/.codex/auth.json检查 2config.toml 里没有硬编码 Keygrep -r sk- $HOME/.codex/config.toml # 应该没有任何输出如果有人在config.toml里直接写了 Key错误做法grep 会输出对应行。必须把 Key 移到auth.json里。检查 3Token 已设置模型限制和 IP 白名单回 OmniModel 控制台 → 令牌列表 → 编辑该 Token模型限制只允许gpt-5.3-codex,gpt-5.4,claude-opus-4-7等你实际使用的越权请求直接 403IP 白名单填公司公网 IP 或 VPN 出口 IP泄露也无法被滥用额度上限本月只给 $50超了自动停三层防护下来即使 Key 不小心 commit 到 GitHub 也能控制损失。十二、进阶玩法12.1 把 Codex 当成多模型的统一 CLIconfig.toml里改个model字段下次启动就是新模型model claude-opus-4-7 # 用 Claude 跑 Codex # 或 model gemini-2.5-pro # 用 Gemini 跑 Codex # 或 model deepseek-v4 # 用 DeepSeek 跑 CodexOmniModel 后端做了协议适配Codex 的/v1/responses请求会被转换成对应模型的原生格式。实测对比模型适合任务成本gpt-5.3-codex复杂调试、思维链高claude-opus-4-7重构、文档翻译中高gemini-2.5-pro长文档总结中deepseek-v4批量改 SQL、单测极低12.2 调低 reasoning_effort 省钱model_reasoning_effort high会触发 reasoning model 的完整思考链对简单任务是浪费。可调档值适合场景相对成本low改命名、加注释、写 README1xmedium普通 bug 修复、写单测2-3xhigh复杂重构、架构设计5-10x灵活切换月度账单能砍一半。12.3 多 Token 隔离项目预算控制台一次性建多个 Token每个绑定不同额度上限Token用途额度codex-personal个人副业$20codex-work公司项目走报销$200codex-experiment试错$5然后切换auth.json即可或用direnv自动切。12.4 充值OmniModel 支持 多种方式充值。对海外开发者和数字游民友好。十三、相关阅读 Codex CLI GitHub 仓库 OmniModel 官方手册 同一个 OmniModel Token 也能配在 Claude Code、Cursor、ChatGPT 客户端等工具上一个账户走全栈如果本文帮你跳过了某个坑欢迎在评论区补充你遇到的具体报错和操作系统版本给后续读者节约时间。本文所有命令在 macOS 14 / Windows 11 Codex CLI v0.100 下验证通过。Codex CLI 仍在快速迭代如果未来版本对配置文件结构有调整以官方仓库 README 为准。