Codex 报 ChatGPT login is disabled. Use API key login instead. 是谁禁的?按这个顺序挨个查

2026-09-28

在终端里敲 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 是不是填错了或者过时了。如果是换了团队、换了工作区,把它改成新的,或者删掉交给管理员的配置决定。

五、按这个顺序查最快

  1. 看 ~/.codex/config.toml 里有没有 forced_login_method = "api",有就删;
  2. 看同一个文件里的 forced_chatgpt_workspace_id 对不对;
  3. 两处都没问题,基本就是管理员下发的限制,找 IT;
  4. 实在急着用,按报错的建议改用 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 登录名下,判断条件和本文完全一样,所以按同样的三类去查就行。

相关阅读

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。