Codex 报 ChatGPT login is disabled. Use API key login instead. 是谁禁的?按这个顺序挨个查
在终端里敲 codex login,浏览器还没弹出来,命令就退出了,只留下一句:
ChatGPT login is disabled. Use API key login instead.
用设备码登录(codex login --device-auth)也是同样的结果。
看到「disabled」,很多人第一反应是账号被 OpenAI 限制了。其实不是。这句话是 Codex 在本机做登录前检查时自己拦下来的,请求根本还没发到 OpenAI。拦它的是本机的配置。
本文依据 Codex 仓库 rust-v0.157.1(2026-09-25 发布)的源码。
一、它是在哪一步拦的
源码里,codex login 的三种 ChatGPT 登录方式(浏览器登录、设备码登录、以及「设备码优先、不支持时回退到浏览器」的登录)在开始之前都会先问一句:当前配置允不允许用 ChatGPT 账号登录? 不允许,就打印这句话,以退出码 1 结束。
所以它和登录失败是两回事:
- 登录失败:流程走了,但在授权、回调、网络某一步出错;
- 这条报错:流程压根没开始,被本机规则挡在门外。
判断「允不允许」时,Codex 会同时看下面三类限制,任何一处不允许,就会出这句话。
二、第一处:你自己的 config.toml
打开 ~/.codex/config.toml,找有没有这一行:
forced_login_method = "api"
这个配置项的作用是限定只能用某一种方式登录,可选值是 "chatgpt" 和 "api"。写成 "api",就等于告诉 Codex「只许用 API Key」,ChatGPT 登录自然被禁。
这一行常见的来历有两个:以前为了强制走 API Key 自己加的,后来忘了;或者照着某篇教程整段复制了配置。
处理:想用 ChatGPT 登录,就删掉这一行,或者改成 "chatgpt"。
~/.codex/config.toml 是最常见的位置,但不是唯一的。同一个配置项还可能写在这些地方,第一处找不到时顺着查:
- 当前项目目录下的
.codex/config.toml(项目被你标记为受信任时才会加载); - profile 配置文件
~/.codex/<名字>.config.toml里(选用了这个 profile 时才生效); - 启动命令里的
-c forced_login_method=...覆盖; - 系统级的
config.toml,或 MDM、云端下发的配置层,这些通常是管理员放的,见下一节。
三、第二处:管理员下发的系统级限制
如果你的 config.toml 里没有上面那行,下一步要怀疑的是不归你管的配置。
Codex 支持一层「托管限制」:由管理员通过系统级的 requirements 文件或者 MDM(企业设备管理)下发,里面可以规定允许哪些登录方式(allowed_login_methods)。如果管理员只允许 API Key,你在自己的配置里怎么改都没用,这一层的优先级在你之上。
这种情况比较可能出现在公司发的电脑上,比如公司统一采购了 API 额度,要求员工用 API Key 走公司的账,不允许用个人 ChatGPT 订阅。
怎么确认:前面第一处排除了、电脑又是公司统一管理的,基本就是这一层。别自己去改系统文件,那是公司的策略。直接找 IT 或管理员,问清楚应该用哪个 API Key。
四、第三处:工作区白名单对不上
这一处最隐蔽。Codex 还支持限定「只能登录哪些 ChatGPT 工作区」:
- 你自己可以在
config.toml里用forced_chatgpt_workspace_id指定工作区; - 管理员也可以在托管限制里规定允许的工作区。
两边都设了的话,Codex 取交集。如果交集为空,比如你填的工作区 ID 不在管理员允许的名单里,那就没有任何工作区能登录,结果同样是这句「ChatGPT login is disabled」。
还有一种更直接的情况:forced_chatgpt_workspace_id 被设成了空列表 []。不需要管理员参与,单这一条就等于「允许的工作区一个都没有」,ChatGPT 登录同样被禁。
处理:检查 config.toml 里的 forced_chatgpt_workspace_id 是不是填错了或者过时了。如果是换了团队、换了工作区,把它改成新的,或者删掉交给管理员的配置决定。
五、按这个顺序查最快
- 看
~/.codex/config.toml里有没有forced_login_method = "api",有就删; - 看同一个文件里的
forced_chatgpt_workspace_id对不对; - 两处都没问题,基本就是管理员下发的限制,找 IT;
- 实在急着用,按报错的建议改用 API Key 登录,先把活干了。
六、改完之后怎么验证
改完配置,不用重启电脑,也不用重装 Codex,直接再跑一次:
codex login
判断标准很简单:只要这句「ChatGPT login is disabled」不再出现、浏览器能弹出授权页(或者设备码流程能开始),限制就已经解除了。 后面的授权如果再出错,那是另一类问题,按登录失败去查。
登录完成以后,可以用这条命令确认当前的登录状态:
codex login status
如果改完 config.toml 还是报同样的话,先确认你改的是 Codex 实际在读的那个文件:~/.codex/ 是默认位置,但如果你设置过 CODEX_HOME 环境变量,配置文件会在那个目录下。改错了文件,怎么改都不会生效,这一点很容易被忽略。
七、反过来的那一句
同一个文件里还有一句对称的:
API key login is disabled. Use ChatGPT login instead.
逻辑完全一样,只是方向反过来:配置或管理员只允许 ChatGPT 登录,不许用 API Key。按第二、三节的两类查(工作区白名单只约束 ChatGPT 登录,与这一句无关),把 "api" 换成 "chatgpt" 来理解就行。
附:如果你是管理员,这个限制写在哪
第三节说的「系统级限制」,在 Codex 里叫 requirements。按源码注释,它按下面几层收集,都是管理员才能改的位置:
- 系统文件:Unix 类系统是
/etc/codex/requirements.toml,Windows 是%ProgramData%\OpenAI\Codex\requirements.toml; - 企业云端下发的托管配置;
- 旧版兼容:Unix 上的
/etc/codex/managed_config.toml仍会被读取,并当作 requirements 处理; - 系统托管偏好,也就是 MDM 推下来的设置(仅 macOS)。
和登录有关的两个键是:
allowed_login_methods = ["api"] # 只允许 API Key;想两种都放开就写 ["chatgpt", "api"]
allowed_chatgpt_workspaces = ["工作区ID"] # 限定只能登录这些 ChatGPT 工作区
如果你的本意是「允许 ChatGPT 登录,但只能登公司的工作区」,正确写法是在 allowed_login_methods 里保留 "chatgpt",再用 allowed_chatgpt_workspaces 圈定工作区,而不是直接把 ChatGPT 登录关掉。
另外提醒一句:员工本机 config.toml 里的 forced_chatgpt_workspace_id,要和你这里允许的工作区有交集,否则按第四节的规则,他们会看到本文开头这句报错。
附:还有一句同族的
Access token login is disabled. Use API key login instead.
它出现在用访问令牌(access token)登录的时候。源码里这种登录方式也归在 ChatGPT 登录名下,判断条件和本文完全一样,所以按同样的三类去查就行。
相关阅读
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。