Ubuntu 安装 Codex CLI 及 IDE 插件时报 403 Forbidden 问题
在 Ubuntu 22.04 上部署 OpenAI Codex CLI 时,常见的失败点并不集中在'包本身是否可用',而是落在更基础的运行时与鉴权链路上:Node.js 版本不满足最低要求、全局安装目录权限不足,以及在 CLI 与 IDE(以 Cursor 为代表)中通过 ChatGPT 账号登录时出现 403 Forbidden 的 token 兑换失败。本文给出一条可复现的排障路径:先修复安装环境,再解释 403 的成因与规避方式,最后通过设备码登录稳定打通 CLI 与 IDE 插件的共享认证状态。
一、推荐安装方式:使用 nvm 安装 Node LTS,再安装 Codex CLI
下面是一套在 Ubuntu 22.04 上较为稳健的安装流程。其核心思路是:用 nvm 管理 Node 版本,使 npm 的全局包目录落在用户目录中,避免权限坑,同时满足 Codex 对 Node 的版本要求。
sudo apt update
sudo apt install -y curl ca-certificates
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
nvm alias default 'lts/*'
node -v
npm -v
确认 node -v 至少为 16+。
接着安装 Codex CLI:
npm i -g @openai/codex@latest
codex --version
which codex
到这里,安装阶段的两类问题(运行时版本与全局权限)应当同时被消除。
二、使用 ChatGPT 账号登录,网页端出现的 'Token exchange failed: 403 Forbidden'报错
安装完成后,很多人会直接在 CLI 或 Cursor 插件中选择'Sign in with ChatGPT',但可能会在浏览器回跳或 token 兑换阶段遭遇:
Token exchange failed: token endpoint returned status 403 Forbidden
这类 403 的特点是:不是网络超时、也不是本地程序崩溃,而是鉴权服务端拒绝了 token 交换请求。其原因通常集中在以下类别(并非互斥):
- 账号侧的策略或状态不满足 OAuth 兑换要求(例如登录方式、MFA、工作区策略等)。
- 本地网络环境或代理策略对 OAuth 回调/交换链路造成干扰(尤其是带 HTTPS 中间人、重写、拦截规则的代理)。
- 登录过程依赖本地回调端口,而该回调在某些网络与浏览器的安全策略下不稳定。
对于这类问题,最有效的绕过策略往往不是继续重试同一种'浏览器回跳式登录',而是切换到设备码登录。
三、使用设备码登录绕过 403
设备码登录的优势在于:CLI 不需要依赖本地回调端口接收浏览器重定向结果,而是将一个短期有效的设备码呈现给用户,在浏览器端完成确认后,CLI 通过轮询或后续请求完成令牌获取。更容易穿透 VPN 常使用的复杂代理。
在实际操作时,建议先清理可能存在的历史认证缓存,再执行设备码登录:
codex logout 2>/dev/null || true
rm -rf ~/.codex

