Codex CLI 接中转站配置排错
记录新版 Codex CLI(含 ChatGPT 桌面版内置的 Codex,实测 v0.145.0)接第三方中转站时的正确配置与常见坑。
结论:正确配置写法
配置文件在 ~/.codex/config.toml(Windows: C:\Users\你\.codex\config.toml)。
model = "gpt-5.6-sol" # 换成中转站支持的模型名
model_reasoning_effort = "high"
model_provider = "qnvip" # 指向下面的 provider 块
experimental_bearer_token = 'sk-xxxxxxxx' # 中转站的 key,鉴权用
[model_providers.qnvip]
name = "qnvip"
base_url = "http://中转站域名/v1"
wire_api = "responses" # 中转站不支持 responses 就改成 "chat"核心:base_url 必须放进 [model_providers.xxx] 块里,并用 model_provider 指过去。
三个常见坑(对应 401 报错)
报错示例:
401 Unauthorized: Incorrect API key provided: sk-xxxx...
url: https://api.openai.com/v1/responses
auth error code: invalid_api_key
关键信号:报错里的 url 是 api.openai.com,说明请求根本没走中转站。
1. base_url 裸写在顶层 → 被完全忽略(主因)
新版 Codex 不认顶层的 base_url。没有 [model_providers.xxx] 块 + model_provider 指向它,就用内置 openai provider,硬编码到 api.openai.com。中转站 key 在官方当然无效 → 401。
错误写法(顶层裸写,无效):
base_url = "http://中转站域名/v1" # ❌ 被忽略
wire_api = "responses"2. key 末尾多敲了引号
'sk-...4eb5"' 里多出的 " 会污染 key。检查引号是否成对干净。
3. 自定义 provider 不读 auth.json
ChatGPT 桌面版内置的 Codex 里,auth.json 中的 OPENAI_API_KEY 只给内置 openai provider 用。自定义 provider 若写 env_key = "OPENAI_API_KEY",会报 Missing environment variable: OPENAI_API_KEY(因为它读的是真·环境变量,不是 auth.json)。
两个解法:
- 顶层
experimental_bearer_token(推荐,不依赖环境变量,跨启动方式都稳) - 或真的
export OPENAI_API_KEY=sk-xxx,再在 provider 里写env_key = "OPENAI_API_KEY"(注意桌面版 App 启动时不一定继承~/.zshrc的 export)
验证方法
必须在受信任目录里跑(否则报 “Not inside a trusted directory”):
cd /受信任的项目目录
echo "只回复两个字:成功" | codex exec --skip-git-repo-check看启动信息里 provider: 是否为你的中转站名、能否正常返回即可。
报错速查
| 报错 | 原因 |
|---|---|
401 + url 是 api.openai.com | base_url 没进 provider 块 / provider 没生效 |
401 invalid_api_key(url 是中转站) | key 错 / key 带多余字符 |
Missing environment variable: OPENAI_API_KEY | 用了 env_key 但环境变量没设,改用 experimental_bearer_token |
| 404 / 路径错误 | wire_api 设成 responses 但中转站只支持 chat → 改成 "chat";或 base_url 的 /v1 多了/少了 |
Not inside a trusted directory | 加 --skip-git-repo-check 或在已信任目录里跑 |