用 Codex CLI 写代码写到一半,突然弹出 401 Unauthorized,或者一登录就报 Failed to refresh token,连 ChatGPT 账号都进不去——这是 Codex 用户最常撞到的一类故障。它看着像"账号被封",但绝大多数情况只是本地凭证(token)状态错乱,自己几分钟就能修好,根本不用慌着找人解封。
这篇按你屏幕上看到的具体报错文案分情况讲,每段对应一个真实触发原因和官方解法,文末附一张速查表。先说结论:先看清报错原文,再对号入座,不要一上来就删账号或重装。
动手前先做一个判断,能省掉大量瞎折腾:
判断方法很简单:先用浏览器登录一次 ChatGPT 官网。能正常进、能正常对话,说明账号没事,问题在 Codex 本地登录态;如果网页端也进不去或被提示异常,那才是账号问题。
完整报错通常长这样:
Failed to refresh token: 401 Unauthorized: Your refresh token has already been used to generate a new access token. Please try signing in again.
这是目前 Codex 社区里出现频率最高的一类。根据 openai/codex 官方仓库的多个 issue 反馈,触发原因是 OAuth 的刷新 token(refresh token)是"一次性"的:每次用它换新的访问 token(access token)后,旧的刷新 token 就作废了。一旦本地缓存里那个刷新 token 已经被用过、却又被再次拿去刷新,服务端就会判定"这个 token 已经用过了",返回 401。
据 openai/codex 社区与多篇排查记录,最稳的修复顺序是:
关于 ~/.codex/auth.json 的安全提醒:Codex 默认把登录凭证以明文存在 ~/.codex/auth.json,里面含访问 token。据 OpenAI 官方开发者文档说明,要把这个文件当密码看待——不要提交到 Git、不要贴进工单、不要发到聊天里。排查时如果有人让你把 auth.json 内容发出来,直接拒绝。
有一类 401 特别坑:你明明是用 ChatGPT 账号登录的,重新登录也没用,反复报 401。这种情况要怀疑 环境变量 OPENAI_API_KEY 抢了权。
据 openai/codex 仓库 issue 反馈,当你的 shell 里设置了 OPENAI_API_KEY 这个环境变量,同时又用 OAuth(ChatGPT 账号)登录了 Codex CLI,Codex 会优先用环境变量里的那个 API key,而不是你刚登录的 OAuth token。如果那个 key 是旧的、已过期、已被吊销,或根本没有对应权限,就会持续报一个"看起来像账号权限问题"的 401,把人带偏。
少数情况下,codex login 提示成功了,但一跑命令还是 401,或者浏览器授权页一直转圈、回调失败。这类通常是本地凭证写入异常或网络环境问题:
| 你看到的报错 | 最可能的原因 | 先这样做 |
|---|---|---|
| refresh token has already been used / Failed to refresh token | 刷新 token 一次性、已被用过(多端或换号触发) | codex logout 后 codex login;不行就删 ~/.codex 再登 |
| 401 Unauthorized(没设过 API key 也报) | 环境变量 OPENAI_API_KEY 抢权 | unset OPENAI_API_KEY 后再启动,或删掉该变量 |
| codex login 成功却仍 401 / 授权页转圈 | 本地凭证脏 / 网络出口不稳 | 删 ~/.codex 与 ~/.config/codex;用稳定网络重登 |
| 网页端登录也进不去、提示账号停用或被封 | 账号层面问题,非 Codex 故障 | 走账号申诉路径,别再折腾 CLI(见延伸阅读) |
很多人一看到 401 就以为账号被封,急着去找各种"解封服务"。先冷静:上面三类报错本质都是本地登录态问题,账号本身好好的,重新登录就解决,跟封号无关。判断标准还是那一条——浏览器能正常登录 ChatGPT 官网就说明账号没事。
只有当你网页端登录都被挡、明确提示账号被停用或受限时,才是账号问题。这种情况下需要注意:平台风控不是任何人能 100% 控制的,任何渠道都不该向你承诺"账号一定能恢复""保证永久不封";市面上号称花钱就能"解封"的第三方服务也不可信。正规路径是走官方申诉。
如果确认是账号层面的问题,据 OpenAI 官方帮助中心说明,正规入口是 help.openai.com:在页面右下角的对话气泡里发起咨询(先和虚拟助手交互),或点 "Submit a request" 提交工单,选对应分类(账号 / 登录 / 计费等),填上你注册时用的登录邮箱、清晰的主题和详细描述。
几个要点:OpenAI 目前不提供电话客服;账号 / 登录类问题通常在 1–3 个工作日内处理;提交时给出登录邮箱和会员档位有助于定位账号,但绝不要在工单里填写密码。另外,被停用(Deactivated / Suspended)类状态通常还有恢复机会,而被彻底终止(Terminated)则基本不可逆——这条边界要心里有数,别被"包恢复"的话术骗。
Codex 用的就是 ChatGPT 同一套账号会员(Plus、Pro 等档位通用),所以账号本身稳不稳,直接决定你被 401、被掉线打断的频率。要降低撞这类故障的概率,方向是:
如果你是重度编程用户、对登录稳定性要求高,选账号时可以重点看归属是否清晰、是否方便绑定稳定的使用环境。具体怎么挑、不同档位有什么差别,见下面的延伸阅读。