Codex 常见报错:exceeded retry limit、provider 配置、auth.json
这一页汇总 Codex 接入 HRouter 时最常见的几类问题:重试耗尽、provider 配置错误、找不到 Key、长对话不压缩、模型不可用。Codex 的配置写在 config.toml 和 auth.json 两个文件里,大部分问题是其中某一项写错了。
安装和配置步骤见 Codex 安装与配置。
“exceeded retry limit, last status: 429”
Codex 遇到失败会自动重试,多次仍失败后只显示最后一个状态码,不显示原因。这个 429 不一定是限流,真正的原因在响应内容里。用 curl 直接请求一次,看返回的错误码:
curl -i https://hrouter.net/v1/responses \
-H "Authorization: Bearer $HROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\": \"$HROUTER_MODEL\", \"input\": \"你好\"}"
| 错误码 | 去看 |
|---|---|
API_KEY_QUOTA_EXHAUSTED、USAGE_LIMIT_EXCEEDED、限流 |
429 限流与额度 |
INSUFFICIENT_BALANCE |
余额不足 |
model_not_found(404) |
model_not_found |
provider 配置错误
提示 provider 不存在、找不到 provider,或者一直在要求选择登录方式,检查 config.toml:
model_provider = "hrouter"必须和[model_providers.hrouter]的节名完全一致,包括大小写。- 节里要有
base_url = "https://hrouter.net/v1"和wire_api = "responses"。 - 文件格式是 TOML,字符串用半角双引号,粘贴时注意别被替换成中文引号。
正确的完整示例见 Codex 安装与配置。
提示找不到 API Key
Key 写在 ~/.codex/auth.json(Windows 是 C:\Users\你的用户名\.codex\auth.json),不是环境变量:
{
"OPENAI_API_KEY": "sk-xxxxx"
}
- 键名必须是
OPENAI_API_KEY。 - 文件必须是合法 JSON:不能有多余的逗号,不能有注释。
config.toml里要有requires_openai_auth = true。
长对话没有触发自动压缩
provider 的 name 必须精确是 OpenAI,大小写敏感:
[model_providers.hrouter]
name = "OpenAI"
写成 openai、HRouter 或别的值,Codex 就不会尝试远程压缩。同时检查 model_context_window 和 model_auto_compact_token_limit 是否设置合理。
走错接口或协议
wire_api必须是"responses",不要改成chat。base_url必须带/v1:https://hrouter.net/v1;不要再写/responses。见 API 404 报错。- 只有聊天正常,代理类任务失败:优先怀疑没有走 Responses API。
模型不可用
换成当前 Key 返回的 Codex 模型:
- 查询模型列表,见 查询可用模型。
- 修改
config.toml里的model。 - 用 HRouter Desktop 的话,编辑配置后重新点击“识别 Key”,保存新的模型绑定。
配置改了不生效
重新打开终端,重新启动 codex;多个位置配置冲突时只保留一处,见 配置不生效怎么排查。
在 VSCode、JetBrains 里不可用
先确认终端里直接运行 codex 正常,见 Codex VSCode 和 Codex JetBrains。
自检清单
codex --version能输出版本号。~/.codex/config.toml里 provider 的name、base_url、wire_api三项正确。~/.codex/auth.json是合法 JSON,键名是OPENAI_API_KEY。curl https://hrouter.net/v1/models -H "Authorization: Bearer $你的Key"返回 200,且列表里有你配置的模型。- 发一句测试消息,在 使用记录 能看到请求。