独家:SpaceXAI 的 Grok Bot 在浏览器请求中嵌入了一个源自账户的 ID
该16字符值源自经过身份验证的 Cursor 帐户,并通过 Chrome 的 User-Agent 请求头发送到外部网站。
By RuntimeWire Staff · Published
RUNTIMEWIRE INVESTIGATION — Exclusive
Original reporting by RuntimeWire, based on reverse engineering, data analysis, testing.
Why it matters
Grok Bot gives websites a persistent recognition key through routine HTTP metadata, where it can enter server and analytics logs without cookie-style controls.
Reporting record
Finding
Grok Bot’s cloud Chrome browser sent an unrelated website a 16-character pseudonymous identifier that the shipped client deterministically derives from the authenticated Cursor account’s JWT subject and appends to the User-Agent header.
How we verified
Methods: reverse engineering, data analysis, testing.
Inspection of Grok Bot for Windows 0.16.0 showed that the client hashes the authenticated Cursor account’s JWT sub claim with SHA-256, retains the first 16 hexadecimal characters and writes the result to /tmp/sand-ua-user. Shipped browser configuration describes the resulting suffix as GrokAgent/1.0 (u:<owner>) and applies it to Chrome launches and new tabs. A signed-in live test using Grok Bot’s graphical browser returned the same format from https://httpbingo.org/user-agent. A ChatGPT for Windows control returned a standard Chrome user agent without a product or account suffix. The full Grok Bot identifier has been redacted.
RuntimeWire verified the Windows package metadata, extracted app.asar and inspected the shipped source maps. We traced the browser identifier from the authenticated JWT subject through its SHA-256 derivation, 16-character truncation, local stamp file and Chrome user-agent configuration. We then instructed a signed-in Grok Bot to open Httpbingo’s user-agent endpoint through graphical Chrome, explicitly prohibiting terminal commands and other HTTP clients. The external server returned GrokAgent/1.0 and a 16-character u: value matching the implementation. RuntimeWire repeated the endpoint test through ChatGPT for Windows as a control and compared the returned headers. Only one Grok Bot account was tested.
Tested versions: Grok Bot for Windows 0.16.0, managed Chrome 151.0.0.0, ChatGPT for Windows control — app version not recorded.
Reproduction
RuntimeWire independently reproduced the core finding.
Sign in to Grok Bot for Windows 0.16.0. Instruct the agent to use its graphical Chrome browser to open https://httpbingo.org/user-agent. Prohibit terminal commands, curl, Python and other HTTP clients. Observe the returned User-Agent header. Confirm the suffix follows GrokAgent/1.0 (u:<16 hexadecimal characters>). Refresh or open the endpoint in another tab to check whether the value remains stable. Redact the complete identifier before publishing screenshots.
File hashes
sha256:955fb24e72ec85729cac2f921758a93a85089a0fc659e712125d6650b364d20e app(2).asar
Company response
RuntimeWire requested comment; the company had not responded by publication time.

SpaceXAI 的 Grok Bot 通过嵌入在 Chrome 的 user-agent 头中的持久标签识别其云浏览器背后的账户,RuntimeWire 发现。
在 2026 年 8 月 12 日的一次实测中,一个已登录的 Windows 版本 Grok Bot 通过其图形化云浏览器打开了 Httpbingo 的 user-agent 端点。外部服务器收到了如下头部,账户标签由 RuntimeWire 部分脱敏:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
GrokAgent/1.0 (u:7558........9b44)
GrokAgent/1.0 令牌标识发送请求的软件。紧随 u: 的值更进一步:它区分了正在操作该浏览器的已认证 Cursor (@Cursor) 账户。
该标签不包含客户的姓名、电子邮件地址、访问令牌或原始 Cursor 账户 ID。它是一个化名的、来源于账户的标识符,为网站提供了一种无需 Cookie 就能识别随后携带相同值的流量的方式。
RuntimeWire 测试了一个已认证的账户。该测试确认该功能在该账户上处于激活状态,并且该标识符已发送到一个无关的外部服务器。但这并不能确定 Grok Bot 在多大范围内启用了该行为。
标识符来自账户认证
对已发布的 Grok Bot for Windows 0.16.0 客户端的检查显示,该应用从已认证 Cursor 账户的 JSON Web Token 的 sub 声明生成该值。相关函数解析令牌,用 SHA-256 对 subject 进行哈希,将结果转换为十六进制并保留前 16 个字符:
const sub = parseJwtPayload(accessToken)?.sub;
if (sub == null || sub.length === 0) return null;
return createHash("sha256")
.update(sub, "utf8")
.digest("hex")
.slice(0, 16);
得到的 16 个十六进制字符表示一个 64 位值。相同的 JWT subject 会产生相同的标签,即使在访问令牌更新之后也是如此,只要 Cursor 不改变账户的 sub 声明。
Grok Bot 在已认证启动和令牌更新后将哈希写入 /tmp/sand-ua-user。该临时文件包含截断的哈希,而非访问令牌或原始 subject。
已发布应用中其他地方的代码描述了由云计算机的 Chrome 浏览器使用的 GrokAgent user-agent 后缀。该后缀通过 Chrome 启动参数和对新标签页的 Chrome DevTools Protocol 覆盖来应用。该实现将该标签放入对外部来源可见的标准浏览器元数据中。
远程开关控制该标记
客户端包含一个名为 sand_browser_ua_token_kill_switch 的实验门控。其随附默认值为 false,这会使带标记的 user agent 保持启用。随附的源码注释说明配置失败和读取该门控时发生错误也会回退到带标记的行为。
当远程启用时,该杀开关会创建 /tmp/sand-ua-token-disabled,防止该令牌应用于新的 Chrome 启动和新标签页覆盖。该控制作为远程实验开关实现,而不是在审查的 Grok Bot 桌面界面中暴露的隐私设置。
代码和实时传输确认了 Grok Bot 所发送的内容,但并未说明 Cursor 或 SpaceXAI 为什么选择了基于账户的值。潜在的运营用途包括滥用防护、速率限制归因、欺诈检测以及与特定云计算机相关的故障调试。这些功能也可以通过仅限公司控制服务的标识符来实现,而不是使用会被无关网站接收到的浏览器字段。
Cursor 表示其云代理控制它们自己的计算机,包括用于测试和演示工作的浏览器和图形界面。Cursor 和 SpaceXAI 也公开描述了模型训练合作,Cursor 表示 Grok 4.5 是 与 SpaceXAI 共同训练 的。Grok Bot Windows 包在使用 Cursor 认证和基础设施的同时将 SpaceXAI 列为其作者。
隐私问题在于重复识别
User-agent 的产品标记在爬虫、自动化工具和专用浏览器中很常见。它们让网站能够出于兼容性、流量管理或屏蔽的目的识别软件。基于账户的后缀将粒度从识别应用程序改变为区分不同的客户账户。

该标识符不能对用户进行身份验证,RuntimeWire 也未证明网站可以将其反向还原以恢复底层的 Cursor 账户 subject。它的隐私重要性来自于稳定性。记录该头部的网站可以识别随后携带相同标签的访问,即使浏览器 Cookie 被清除或不可用。
跨站点关联将要求该标识符被共享服务观察到或在不同日志间合并。RuntimeWire 未测试该场景。
HTTP 标准的 User-Agent 指南 建议发送者避免不必要的过细信息,因为这些信息会增加通过指纹识别用户的风险。Chromium 推行了 user-agent reduction 来减少被动提供给网站的信息,冻结了若干可能助长跟踪的浏览器和平台细节。
RuntimeWire 使用 ChatGPT for Windows 的代理控制内置浏览器运行了相同的端点测试。它返回了一个标准的 Windows Chrome user agent,没有 ChatGPT 的产品标记或账户级后缀。OpenAI 的文档 表示该浏览器在桌面应用内运行,而 Grok Bot 所测试的浏览器则在受管的 Linux 云计算机上运行,因此该比较并非同类可比的行业基准。但这表明代理控制的浏览器运行并不必然要求在 user-agent 字段中放置持久的客户标签。