xAI 在 5 月 16 号宣布 SuperGrok 可以直接通过 OAuth 接入 Hermes。17 号我看到 X Premium 也支持了,就想试试在 Hermes 里用 Grok 模型。

1. 最初的尝试与卡点

最开始我自己按着社区里的步骤操作,结果反复遇到 403 错误:

The caller does not have permission … no active Grok subscription

我检查了 ~/.hermes/auth.json,token 看起来是有效的,scopes 也包含 grok-cli:accessapi:access,但就是不认。试了两三次之后,我决定不再自己手动调试。

2. 交给 Hermes 处理

后来我直接让 Hermes 自己去完成整个 OAuth 流程。大概过程如下:

  • 它发现旧 token 权限不足,重新发起 OAuth 授权
  • 我这边情况比较特殊,需要在手机上完成授权。手机授权后拿到裸露的 authorization code,再手动注入本地 callback 服务完成 token 交换
  • 这个环节因为 code 处理的问题,来回试了几次

3. 最关键的一步:grok.com 账号关联

反复 403 之后,我去 grok.com 检查,发现 X Premium 订阅虽然存在,但 xAI 账号和 X 账号并没有关联。

操作步骤是:

  1. 在 grok.com 用 X 账号登录(手机上操作)
  2. 在账户设置里完成 X 账号关联
  3. 额外设置了邮箱 + 密码登录,方便之后在电脑上直接访问

做完这一步后,再次运行 OAuth 授权流程就成功了。

4. 最终可验证的操作路径

目前能确认有效的路径大致如下:

  1. 先在 grok.com 完成 X 账号与 xAI 账号的关联
  2. (可选)设置邮箱密码登录
  3. 在 Hermes 执行:hermes auth add xai-oauth --no-browser
  4. 手机端完成授权并把 code 喂回本地服务
  5. 设置模型:hermes config set model.default grok-4.3
  6. 验证 API 是否可用

5. 花销与感受

整个过程大概花了半小时,使用 DeepSeek V4 Flash 作为代理模型,token 成本在一两块钱左右。

老实说,我到现在也不是特别确定到底是「账号关联」还是「重新走 OAuth」起了决定性作用。

6. 关键提醒

事后复盘,我认为最容易被忽略、也最可能是导致 403 的原因,就是必须先在 grok.com 完成 X 账号与 xAI 账号的关联。xAI 的公告只说了 X Premium 能用 OAuth,但没有明确提到这一步。如果你也卡在 403,建议优先检查这个。