1. 装完 Codex 一键安装包却登录态异常,问题多半出在 auth.json
Codex 一键安装包解决的是「环境部署」这一层:Node.js、依赖、客户端本体都打包好了,双击向导走完就能启动。但很多人卡在下一步——软件能打开,界面也正常,可一发起请求就报鉴权错误,或者干脆停在登录页反复转圈。这个环节跟安装包无关,问题出在auth.json这个鉴权配置文件上。
auth.json是 Codex 客户端用来存放凭证的本地文件,里面记录了 Base URL、API Key、默认模型这几项关键信息。一键安装包首次启动时会生成一份默认配置,指向官方端点;如果你要用 TaoToken 这类兼容端点,就得把这份文件里的字段改掉。改对了,重启即恢复;改错了,或者路径找错、JSON 格式写坏,就会出现 401、local proxy failed、reading choices之类的报错。
这篇面向的是「安装包已经装好、但登录态不正常」的开发者。我会把 Windows 和 Mac 两个平台的auth.json路径定位、字段替换的可复制片段、重启后的验证动作,以及几类高频报错的排查顺序讲清楚。适合谁:刚用一键包装完 Codex、想切到自己的 API 端点、又不想重装一遍的人。全程图形化 + 改一个文件,不需要重新配环境。
先说清楚一个前提:Codex 一键安装包本身是本地部署工具,auth.json是它的标准配置文件,改这个文件属于正常配置行为,不是破解也不是绕过。你只是把端点从默认值换成自己的,逻辑跟改.npmrc的 registry 一样。
2. 改 auth.json 之前,先把 TaoToken 的 Base URL 和 Key 准备好
动手改文件前,得先拿到三样东西:Base URL、API Key、Model ID。这三件套缺一不可,尤其是 Model ID,很多人只填了前两个,结果请求发出去返回模型不存在。
TaoToken 的 API 入口是https://taotoken.net/api,注意这里不带任何查询参数,直接作为 Base URL 使用。API Key 需要你在控制台里创建,路径是 API Keys 管理页。创建时建议按用途命名,比如codex-local,方便以后区分和吊销。
模型 ID 这块要跟你实际要调的模型对齐。Codex 场景下常用的编码类模型,填的时候用平台文档里给出的准确 ID,不要自己拼写。填错模型 ID 的典型表现是请求能发出去,但返回里choices为空,日志里出现reading choices相关提示。
注意:Base URL 和 API Key 都属于敏感信息,
auth.json改完后不要把这个文件提交到 Git,也不要把内容贴到公开 issue 里。建议在.gitignore里加上auth.json。
如果你还没创建 Key,可以先到控制台生成一个;模型对话能力想先验证通不通,可以用模型对话页面发一条测试消息,确认 Key 本身有效,再去改 Codex 的配置文件。这样能把「Key 无效」和「配置文件写错」两类问题分开定位。
准备好三件套后,先别急着覆盖原文件。把原来的auth.json复制一份备份,命名成auth.json.bak,放在同目录。改坏了随时能回滚,这一步能省掉很多重装时间。
3. Windows 与 Mac 的 auth.json 路径定位与可复制配置片段
两个平台的路径规则不一样,先定位再改。Windows 下通常在用户目录的应用数据文件夹里,Mac 下在Library/Application Support下。具体路径会因安装包版本略有差异,如果下面给的路径找不到文件,用文件管理器全局搜auth.json最快。
Windows 常见路径:
C:\Users\<你的用户名>\AppData\Roaming\Codex\auth.jsonMac 常见路径:
~/Library/Application Support/Codex/auth.json定位到文件后,用任意文本编辑器打开。推荐 VS Code 或 Notepad++,能高亮 JSON 语法,避免括号逗号写错。下面是替换后的配置片段,字段名以你本地文件实际存在的为准,不要凭空新增不存在的键:
{ "baseURL": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "model": "你的模型ID", "provider": "openai-compatible" }几个要点。第一,baseURL结尾不要多加斜杠,也不要拼成/v1之类的子路径,除非平台文档明确要求。第二,apiKey整串替换,别只换中间一段。第三,model填准确 ID。第四,provider如果原文件里没有这个字段,就保持原样别加;如果原本是别的值,改成兼容模式对应的值。
改完后做一次 JSON 合法性检查。VS Code 里如果右下角没有红色波浪线,基本就合法。命令行党可以用:
python -m json.tool auth.json能正常输出格式化后的内容,说明语法没问题;报Expecting property name之类,就是逗号或引号写错了。
提示:Mac 上如果
Library文件夹在访达里看不到,按Cmd + Shift + .显示隐藏文件,或者用Cmd + Shift + G直接粘贴路径跳转。
改文件时保持 Codex 完全退出。Windows 下检查托盘区有没有残留图标,Mac 下用Cmd + Q彻底退出,而不是只关窗口。文件被占用时保存可能失败,或者改了不生效。
4. 重启 Codex 后验证登录态与调用是否恢复
保存文件后重新启动 Codex。首次启动它会读取新的auth.json,如果配置正确,登录态应该直接恢复,不再弹登录页。接下来做两步验证。
第一步,看界面状态。主界面如果显示已登录、或者能直接进入对话输入框,说明鉴权层过了。如果还是停在登录页,先别怀疑 Key,回到上一节检查路径是不是找错了——很可能你改的是另一个副本。
第二步,发一条最小请求。输入一句简单的编码需求,比如「写一个 Python 函数判断回文」,观察返回。正常情况几秒内出结果。如果返回为空、或者报错,看日志。
日志位置同样分平台。Windows 一般在安装目录的logs子文件夹,Mac 在~/Library/Logs/Codex/。打开最新那个日志文件,搜401、403、choices、proxy这几个关键词,能快速定位。
想更直接地验证 Key 和端点通不通,可以绕过客户端,用 curl 直接打一次:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "ping"}] }'返回里有正常的choices数组,说明 Key、端点、模型三样都对。如果 curl 通、客户端不通,问题就在auth.json的字段名或路径上;如果 curl 也不通,问题在 Key 或模型 ID。这个对照法能帮你少走很多弯路。
验证通过后,建议把这次可用的配置片段单独存一份到密码管理器或本地加密笔记,下次换机器直接复用,不用再翻路径。
5. 401、local proxy failed、reading choices 三类报错怎么排查
改auth.json后最常见的报错就三类,按下面顺序排查,基本能覆盖九成情况。
401 Unauthorized:Key 无效或没带上。先确认apiKey字段值完整、没有多余空格或换行。再确认 Key 本身没过期、没被吊销。用上一节的 curl 单独测一次,curl 也 401 就是 Key 的问题,去控制台重新生成一个。还有一种情况是baseURL写成了带/v1的路径,导致鉴权头没被正确识别,去掉子路径再试。
local proxy failed:客户端本地代理层启动失败。这个多半不是 Key 的问题,而是配置文件格式坏了,或者端口被占用。先跑一次 JSON 合法性检查,确认文件没写坏。然后完全退出 Codex 再启动,让它重新初始化本地代理。如果还报,检查系统里有没有别的程序占用了客户端默认端口,关掉冲突程序再试。Windows 下可以临时用管理员身份运行一次,排除权限问题。
reading choices / choices 为空:请求发出去了,但返回体里没有choices。这通常是模型 ID 填错,或者端点返回了错误结构。先核对model字段跟平台文档给的 ID 完全一致,大小写都别错。再用 curl 测一次,看返回体里到底是choices还是error。如果 curl 返回的是错误对象,把错误信息里的message读一遍,通常直接写明原因。
注意:排查时一次只改一个变量。先只改 Key 测一次,再只改模型测一次,别一次改好几处,否则报错变了你也不知道是哪处生效了。
另外,如果你在 Codex 里配置过 MCP 或类似的扩展连接,改完auth.json后这些连接可能需要重新授权。表现是主对话正常、但某个工具调用失败。这种情况单独去对应扩展的设置里重新走一遍授权即可,跟auth.json无关。
6. 配置稳定后,把 Key 管理和模型验证固定成习惯
auth.json改通只是第一步。长期用下来,建议把两件事固定成习惯:Key 的轮换和模型的定期验证。
Key 方面,别一个 Key 用到底。按项目或按机器分别创建,命名清楚。哪台机器不用了,直接去控制台吊销对应 Key,不影响其他机器。这样即使某个 Key 泄露,损失范围也可控。创建和管理入口在 API Keys 页面,操作都是图形化的。
模型方面,平台模型列表会更新,偶尔有你正在用的 ID 被标记为下线。养成每隔一段时间用 curl 或模型对话页面发一条测试请求的习惯,能提前发现模型不可用,而不是等到写代码写到一半才报错。想快速验证模型通不通,模型对话页面最省事,不用改任何配置。
如果你打算把 Codex 用在长期编码或 Agent 类任务上,可以考虑用 Coding Plan 这类按周期计费的方式,比按量调用更可控,适合每天都要跑的场景。接入文档里有完整的端点和参数说明,遇到字段不确定时以文档为准,别靠猜。
最后回到那个最容易被忽略的点:改完auth.json一定要完全重启客户端,而不是关窗口重开。很多「改了不生效」的案例,最后查出来都是进程没退干净,读的还是旧配置。把这一步做扎实,前面所有配置才不会白费。