Grok Build CLI 上传私有仓库和密钥至云端
TECH

Grok Build CLI 上传私有仓库和密钥至云端

29+
Signals

战略概览

  • 01.
    一位以 cereblab 为名的安全研究员通过 mitmproxy 拦截代理对 xAI 的 Grok Build CLI 版本 0.2.93 进行路由,捕获到其将整个受控 Git 仓库(包括完整提交历史)上传至名为 grok-code-session-traces 的 Google Cloud Storage 存储桶。
  • 02.
    上传通过独立于编码代理实际读取内容的 POST /v1/storage 通道进行,所读取文件的内容(包括 .env 密钥文件)以原始形式未脱敏传输。
  • 03.
    产品中的“改进模型”退出选项毫无作用:即使关闭该选项,完整仓库仍通过 /v1/storage 上传,且设置接口仍返回 trace_upload_enabled: true。
  • 04.
    报告公开一天后,对同一客户端的重新测试发现服务器返回 disable_codebase_upload: true,六次重测均未再发生仓库上传,表明存在静默的服务器端缓解措施,但截至 2026 年 7 月 13 日,xAI 尚未发布关于数据范围、保留或删除的正式公告。

无人告知的传输通道

核心发现并非编码代理读取了敏感文件,而是存在第二个独立的数据管道。Grok Build CLI 建立了两条独立的网络路径:一条用于正常模型交互的 POST /v1/responses 通道,另一条则是通过 POST /v1/storage 通道将整个受控 Git 仓库(含完整提交历史)打包为 git bundles 发送至名为 grok-code-session-traces 的 Google Cloud Storage 存储桶 [1]。第二条路径的触发独立于代理实际读取的内容。为证明这并非模型仅摄入其打开的文件,研究员植入了一个名为 .env 的诱饵文件,内含字符串 API_KEY=CANARY7F3A9-SECRET-should-not-leave,且从未指示代理打开该文件,但随后在捕获的上传数据中完整恢复了该字符串 [1]

这一细节将事件从隐私投诉升级为已证实的数据外泄:一个代理从未接触的文件仍离开了本地设备。代理实际读取的文件(包括真实密钥)也以未脱敏形式传输,同时出现在实时模型交互和通过 GCS 存储桶推送的 session_state 归档中 [2]。存储桶名称暗示了其设计意图:用于捕获完整会话上下文作为训练或调试追踪,而非仅发送与当前任务相关的少量文件 [1]

5.1 GB 传输仅完成 192 KB 的工作

数据量的巨大差异使得难以将其轻描淡写为遥测行为。在一个 12 GB 的测试仓库中,/v1/storage 通道通过 73 个约 75 MB 的分块传输了 5.10 GiB 数据,每个分块均返回 HTTP 200 [1]。而实际执行编码任务的模型交互通道仅传输约 192 KB。这意味着存储管道传输的数据量约为任务本身所需数据的 27,800 倍 [3]。正如一位评论者所言:你为 192 KB 的工作付费,他们却搬走了 5.1 GB 的代码。

关键在于,这是基于线缆级别的数据包捕获,而非对二进制行为的推测。数据来自在实际客户端(版本 0.2.93)上通过 mitmproxy 拦截的流量 [1]。当 Reddit 上的怀疑者认为报道对 xAI 存在偏见时,可重复的反驳是:数据包捕获本身没有立场。这些数字并非对行为的解读,而是行为本身,记录在线缆之上。

控制了错误对象的退出选项

Grok Build 配备了一个“改进模型”开关,这是谨慎的开发者在将 AI 指向专有代码前会关闭的典型控制项。但它对阻止数据泄露毫无作用。即使关闭该开关,完整仓库仍通过 /v1/storage 上传,且设置接口仍返回 trace_upload_enabled: true [4]。该开关仅控制数据是否用于训练未来模型,并未阻止上传通道 [4]。关闭它对代码是否离开本地设备毫无影响。

这正是同意控制与实际数据边界之间的差距。Penligent 指出,该工具“本地优先”的定位——即承诺会话期间不传输任何数据——在捕获到 .env 文件和完整仓库外传后被彻底推翻 [3]。对企业买家而言,教训令人不安:可见的隐私开关与代码外传路径脱钩,用户可见的唯一控制项并非真正关键的控制项。

为何这是 Grok 的问题,而非行业常态

最重要的对比来自对其他主流编码代理进行相同的线缆测试。该研究员在 r/LocalLLaMA 发布捕获数据后,对 Claude Code、Codex 和 Gemini 运行了相同设置。三者均将代码库保留在本地。Grok Build 是唯一上传所有内容的工具。这一单一对照实验将事件与对 AI 开发工具的普遍焦虑区分开来,并将其归因于单一产品的设计选择。Reddit 上的技术群体通过复现捕获并轮换凭证作出回应;更广泛的受众将其视为对 xAI 的既有不信任的证实;少数持异议者试图归咎于用户未进行沙箱隔离,但这一说法被复现者拒绝,因为该工具被宣传为可在本地安全运行。

xAI 所采取的修复措施加深而非解决了担忧。披露一天后,同一客户端开始从服务器接收 disable_codebase_upload: true,且六次重测中仓库上传均停止 [2]。但该标志由服务器控制且未公开文档化,意味着行为是远程且无声地切换的,理论上也可被无声地恢复 [2]。在 X 平台上,揭露此事的账号总结了未解决的一半:上传通过隐藏的服务器端标志悄然停止,而 xAI 仍未就数据范围、保留或已上传至 grok-code-session-traces 的仓库是否会被删除发表任何声明。(注:社区另有报告称发现 8 个完整上传的私有仓库,以及一次上传路径为用户整个主目录的会话,但这些未被主要的线缆级捕获独立证实,应视为未确认。)

历史背景

xAI 为 SuperGrok Heavy 订阅者推出 Grok Build CLI 的早期测试版,这是一个最多支持 8 个并行 git-worktree 子代理的智能编码 CLI。
Grok Build 访问权限扩展至所有 SuperGrok 和 X Premium+ 订阅者。
该研究员发布了对 Grok Build CLI 0.2.93 的线缆级分析,揭示了整个仓库和密钥上传至 GCS 存储桶的行为。
服务器端缓解措施(disable_codebase_upload: true)在重测中被确认生效,但未发布任何正式的 xAI 公告。

关键关系图

关键玩家
主题

Grok Build CLI 上传私有仓库和密钥至云端

XA

xAI

Grok Build CLI 的供应商。在报告后通过远程标志在服务器端禁用完整仓库上传,并引导用户查看零数据保留政策和 /privacy 命令,但未发布关于上传范围、保留或删除的正式公告。

CE

cereblab

独立安全研究员,制作了版本 0.2.93 的线缆级 mitmproxy 捕获,并作为公共 GitHub gist 发布,触发了披露和服务器端缓解。

GR

Grok Build 开发者用户和团队

受影响方,其私有代码库、git 历史和未脱敏密钥被上传。若他们消失,则无暴露凭证需轮换,且他们现在需承担事件的补救成本。

事实来源

4 条引用
  1. [1] Grok Build CLI wire-level analysis (v0.2.93)
  2. [2] xAI's Grok Build CLI Caught Uploading Private Code and Secrets
  3. [3] Grok Build CLI Repository Upload Analysis
  4. [4] xAI Grok CLI Uploads Full Repos and Secrets, Opt-Out Ignored

来源文章

Top 4

THE SIGNAL.

Analysts

该工具上传整个仓库,包括所有受控文件内容及 git 历史,且与代理实际读取的内容无关,产品内的退出选项无法阻止此行为。

cereblab
独立安全研究员

轮换可能已暴露的任何密钥(包括 API 密钥、数据库凭证和认证令牌)不是可选项,而是紧急事项。

Security analysts (as reported by Crypto Briefing)
安全评论员

CLI 内部的开关本意是让用户选择不将其数据用于改进模型,但对上传行为毫无影响,与该工具‘本地优先’的定位相矛盾。

Penligent analysis
安全研究博客
The Crowd

‼️ BREAKING: xAI's Grok Build CLI was uploading entire Git repositories to a Google Cloud bucket, private codebases and unredacted secrets included. The uploads quietly stopped via a hidden server-side flag, and xAI still has not said a word about scope, retention, or deletion.

@@IntCyberDigest6302

SpaceXAI was caught uploading your code to its cloud. I reversed xAI's official Grok Build binary. In a controlled session with zero tool-calls, it uploaded the complete codebase to xAI's storage It ships a malware-like background code collector.

@@hrkrshnn2987

There seems to be something going on. A global kill switch "disable_codebase_upload: true" is being returned, at least for my account, when fetching settings. But both Codex and Anthropic independently found indirect evidence of 8 private (!) repos fully uploaded Grok. 🤯

@@dedene251

grok build was uploading whole directories to google bucket

@u/Far-Sock-3170459
Broadcast
Grok's Coding CLI Uploads Your Entire Repo and Secrets to xAI | MOTO NEWS #shorts

Grok's Coding CLI Uploads Your Entire Repo and Secrets to xAI | MOTO NEWS #shorts

grok has been uploading a ton of your local files to its cloud silently

grok has been uploading a ton of your local files to its cloud silently

Grok Build CLI 上传私有仓库和密钥至云端 — AI 新闻 | Agentic Brew