把 Grok 4.6 装进 Codex:OAuth 安装教程,以及我踩过的 5 个坑

最近 Codex 额度用得太快了,只能另辟蹊径。看到木哥@ai_xiaomu发的 Grok 接入 Codex 效果不错,我就开始捣鼓怎么把它连起来。

ocx init

中间走了不少弯路:原生模型一度从菜单里消失,模型明明显示出来、真实请求却报错,重启后本机服务也没有加载,后来连本机代理都被 VPN 拦成 502。

最后跑通的是 OpenCodex + xAI OAuth 这条路径,Grok 4.6 已经可以在 Codex 里调用。

web_search = "disabled"

我才用的方法是使用OpenCodex的方式:OpenCodex 是社区项目,不属于 OpenAI 或 xAI 官方产品。它适合愿意自己维护本机配置的人;token、设备码和账号页面都不要公开。xAI OAuth 是否能在你的账户上使用、可用的模型和额度,取决于当时的账户权限与 xAI 服务条款;

动手前先确认两件事。原生 ChatGPT 模型走你现有的 Codex / ChatGPT 登录态;Grok 这条 OAuth 路径,通常需要 SuperGrok 或 X Premium+ 一类账户权限。没有这类权限时,别硬跟这篇的 ocx login xai。chatgpt.com 和 api.x.ai 要能访问,但 127.0.0.1 不能走系统代理,后面第 5 个坑专门写这个。

一、先准备环境

先确认 Node 和 npm 能跑。

curl --noproxy '*' -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:10100/healthz
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:10100/healthz

Node 建议 18 以上。桌面端用户看到 codex not in PATH 也没关系,后面用 Codex 窗口验证。如果你装过 CLI,再补一句:

codex --version

macOS 上桌面端自带的二进制通常在这里,终端里没有 codex 时可以用它:

接着安装 OpenCodex。我实测的是 2.28.0;写这篇时 npm 最新已经到 2.29.0,想跟我同一套命令就先钉这个版本。

如果 npm 提示 postinstall 脚本被拦截、ocx 装完却跑不起来,按官方安装文档补一次:

ocx service install
ocx status

看到版本号即可继续。OpenCodex 会在本机启动一个代理:Codex 的请求先到本机,再按模型转给原生 ChatGPT 登录态或 xAI OAuth。配置文件、token 和设备码都属于私密信息,截图时要打码。

二、初始化时先选 OpenAI 登录

运行:

export NO_PROXY="localhost,127.0.0.1,::1"
export no_proxy="localhost,127.0.0.1,::1"

在 provider 菜单中选择 1. OpenAI — ChatGPT login,端口使用默认 10100,出现“Inject into Codex config.toml?” 时输入 y。这一步会把 Codex 内置 OpenAI 路由指向本机代理,让原生模型正常透传。

接下来遇到 “Install Codex autostart shim?” 可以输入 n。ocx init 只写配置、不启动代理;先启动后台服务,再执行后面的 provider 管理命令:

ocx uninstall
npm uninstall -g @bitkyc08/opencodex

看到 Proxy: running 后继续。ocx service install 会安装持久后台服务,在登录后自动启动、崩溃后重新拉起;不想常驻时,也可改用 ocx start 在前台运行。

这一步改完配置后,把 Codex / ChatGPT 桌面端完全退出再打开。只关窗口不够,菜单里退出,确认后台进程也停了。否则它可能还拿着旧的模型目录。

三、登录 xAI OAuth 并同步模型

执行:

如果本机已登录官方 Grok CLI,第一条通常会自动导入已有 OAuth;否则按终端打开的浏览器流程授权。成功时会看到 Logged in to xai。后面三条把 Grok 4.6 写入 Codex 的模型目录并完成同步。

ocx restore
/Applications/ChatGPT.app/Contents/Resources/codex --version

完成同步后再运行一次:

ocx login xai
ocx provider edit xai --default-model grok-4.6
ocx provider selected xai --set grok-4.6
ocx sync

看到 Proxy: running、Health: ... ok (live)、OAuth health: ok,说明本机链路已经工作。再次完整退出并重开 Codex 后,在模型选择器中选择 xai/grok-4.6。

export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"
npm install -g @bitkyc08/opencodex@2.28.0
ocx --version

四、别只看菜单,要发一条真实请求

模型出现在选择器里,还不能证明它能调用。先测原生模型,再测 Grok。

桌面端这样测:新开一个对话,先用当前默认的原生模型发「只回复:原生模型在线。」;再把模型改成 xai/grok-4.6,发「只回复:Grok 4.6 在线。」我实际得到的两条回复分别是这两句。

有 CLI 的人可以在终端再测一遍。系统里没有 codex 命令时,把下面的 codex 换成 /Applications/ChatGPT.app/Contents/Resources/codex。

如果你要指定原生模型,换成自己菜单里实际可见的 slug;不要照抄一个自己账户未开放的型号。这一步通过后,才值得把它写进日常工作流。

codex exec --skip-git-repo-check \
  "只回复:原生模型在线。"

codex exec -m "xai/grok-4.6" --skip-git-repo-check \
  "只回复:Grok 4.6 在线。"

五、5 个实测避坑

1. 原生 ChatGPT 模型突然不见了

我第一次初始化时把 xAI 当作默认 provider,模型菜单只剩第三方链路。修复方式是重跑 ocx init,选择 OpenAI — ChatGPT login 作为默认 provider,再执行 ocx login xai 和 ocx sync。先让 OpenAI 默认链路存在,再添加 xAI。

网上不少教程会在 ocx init 里直接选 xAI。那条路能装上 Grok,也更容易把原生模型挤出菜单。这篇故意先留 OpenAI。

2. 菜单有 Grok,请求却报 ChatGPT account 不支持

我还遇到过旧的直连 xAI 配置留在 ~/.codex/config.toml:服务在线,实际请求却没有交给 OpenCodex。

报错原文是:The 'xai/grok-4.6' model is not supported when using Codex with a ChatGPT account.

先检查文件里是否还有旧的 [model_providers.xai] 片段,或某个手工配置的 openai_base_url。确认那是旧路由后移除,再重跑 ocx init、ocx login xai、ocx sync 和 ocx service install。成功后,config.toml 顶层应由 OpenCodex 写入 openai_base_url = "http://127.0.0.1:10100/v1";如果这个地址不是本机代理,先不要测试 Grok。

3. xAI OAuth 请求报 external_web_access 相关 400

只有在 Grok 请求实际报 external_web_access 相关 400 时,才做这一步。本次 Codex 版本会给 Web Search 增加这个参数,而当时的 xAI OAuth 传输不接受它。在 ~/.codex/config.toml 顶层加入:

ocx stop

它会关闭 Codex 内置 Web Search;这是全局副作用,不要把它理解成开启或保证任何 Grok 工具能力。版本更新后可以删除这一行再测一次。

4. 重启后服务未加载,或者看到 426

这是两件不同的事。服务没起来时,先运行:

ocx status

前者会安装或更新并启动后台服务,后者应显示健康检查在线。我的这台机器使用 ocx service repair 修复过一次 launchd 状态,但它不在项目当前的公开服务命令列表里,教程不把它当作默认步骤;先用上面的标准命令。

至于 WebSocket 426 Upgrade Required,本次实测中 OpenCodex 会自动回退 HTTP。只要最终有正常模型回复,就不需要为这条提示单独折腾。

5. 菜单都在,请求却报本机 502

配置看起来正常,真实请求却失败,地址是 http://127.0.0.1:10100/v1/responses,状态码 502 Bad Gateway。我就是在这一步把原生 Terra 和 Grok 一起弄挂的。

原因很具体。很多人本机开了 Clash / iKuuu 一类代理,并在 ~/.zshrc 里写了:

https://x.com/ai_xiaomu

Codex 桌面端会把这组变量带进自己的进程。没有 NO_PROXY 时,访问本机 127.0.0.1:10100 也会被送进 VPN,Clash 直接回空的 502。OpenCodex 其实还活着,请求根本没到它。

在那三行下面补上:

ocx service install
ocx status

保存后开一个新终端,确认 echo $NO_PROXY 有值。然后完全退出并重开 Codex。只改当前窗口不够,桌面端要重新读 shell 环境。

可以用这两条快速对照。带 NO_PROXY 应返回 200,不带往往会变成 502:


chatgpt.com 和 api.x.ai 继续走代理没问题。被拦的是本机回环地址。

六、不想用了怎么还原

OpenCodex 会改 ~/.codex/config.toml,把请求指到本机 10100。要先把 Codex 救回官方直连,再决定要不要卸代理。

只恢复原生 Codex、代理先留着:

停止代理,同时把 Codex 配回官方接口:

连服务和注入一起清掉:

npm install -g --allow-scripts=bun @bitkyc08/opencodex@2.28.0

还原后同样要完整退出并重开 Codex。之后再用原生模型和 Grok 各发一条最小请求,确认菜单不是唯一判断标准。

node --version
npm --version
command -v codex || echo "codex not in PATH"

关于作者

Punk|中科大管理学硕士|AI提示词、AI小白教程|Punk系列Skills作者|3个月赚了8位数|Learn in Public|FDE文章浏览量240w|@AdrianPunk115