文章摘要
xAI的Grok Build CLI在正常登录后,会将读取的文件内容(包括.env密钥文件)完整且未脱敏地发送给xAI,同时还会上传整个代码仓库的所有文件内容和Git历史记录。
文章总结
好的,这是根据您的要求,对原文主要内容进行的中文重述,保留了关键细节,并删减了与主题无关的内容。
核心发现:xAI Grok Build CLI 的数据上传行为分析 (grok 0.2.93)
本文通过可复现的抓包实验,详细分析了 xAI 官方编程 CLI 工具 grok 在正常登录使用时的数据上传行为。主要发现有三点:
明文传输文件内容,包括密钥文件:Grok 会将其读取的文件内容(包括
.env这类密钥文件)完整地、未经任何脱敏处理地发送给 xAI。这些内容会通过两个渠道传输:- 实时模型交互:通过
POST /v1/responses接口发送。 - 会话状态存档:通过
POST /v1/storage接口上传并存储(返回 HTTP 200 状态码),目标为grok-code-session-traces的 GCS 存储桶。
- 实时模型交互:通过
上传整个代码仓库:Grok 会独立于其读取的文件,将整个工作区(即整个代码仓库)打包并上传。实验证明,即使明确指示 Grok “不要读取任何文件”,它仍然会上传整个仓库的 Git 包(git bundle),其中包含一个明确要求“不要打开”的文件,其内容完整无缺。该上传行为与仓库大小成正比,在测试中,一个 12 GB 的仓库被上传了 5.10 GiB 的数据(因实验中断而未完成),所有上传请求均返回 200 状态码。相比之下,模型交互通道仅传输了 192 KB 数据,两者比例约为 27,800 倍,明确证明上传的是整个代码库,而非仅读取的文件。
存储目标与默认行为:数据存储于 Google Cloud Storage 的
grok-code-session-traces存储桶。此上传机制默认开启,并且在 CLI 的安装或快速入门文档中未被提及。关键的是,在设置中关闭“改进模型”选项,并不能阻止此上传行为。实验表明,关闭该选项后,Grok 依然会上传整个仓库,且服务端返回的设置中trace_upload_enabled仍为true。
重要说明:
* 本文仅证明了数据传输、接收和存储的事实,并未证明 xAI 会使用这些数据进行模型训练。后者属于政策问题。
* 所有实验均使用作者自己机器上的流量和包含虚假“金丝雀”密钥的测试仓库进行,未暴露任何真实凭证。
* 所有发现均基于 grok 0.2.93 版本,xAI 可能随时更改其行为。
评论总结
根据评论内容,主要围绕Grok Build CLI上传完整代码库的行为展开讨论,观点分歧明显。以下是总结:
主要观点一:严重隐私与安全担忧(多数评论支持) - 评论2(freakynit):“Holy cow!!!! I mean I kinda expected Elon would do something like this to try to catch-up.. but this is extremely concerning.”(天哪!我有点预料到埃隆会做这种事来追赶……但这极其令人担忧。) - 评论12(culi):“It transmits the contents of files it reads — including a .env secrets file — to xAI, verbatim and unredacted.”(它读取的文件内容——包括.env机密文件——会逐字、未编辑地传输给xAI。) - 评论13(dimgl):“Still, this is a big overstep IMO. At the very least, they should make it clear in their terms of service and privacy policy, and not hidden through legalese.”(在我看来,这仍然是一个重大越界。至少,他们应该在服务条款和隐私政策中明确说明,而不是用法律术语隐藏。)
主要观点二:技术合理性辩护(少数评论支持) - 评论3(jstanley):“One reason to want to upload the entire codebase is that it allows them to have the model inspect the codebase during 'thinking' without going back to the client to do real tool calls.”(上传整个代码库的一个原因是,它允许模型在“思考”期间检查代码库,而无需返回客户端进行实际工具调用。) - 评论20(Geee):“If you adjust your expectations, I think it's be better to upload the code to their servers instead of sending it through context over and over again.”(如果你调整预期,我认为将代码上传到他们的服务器比反复通过上下文发送更好。)
主要观点三:建议使用开源替代方案(中等支持) - 评论8(gitgud):“It's much safer to use something like opencode and use models via their API… however, the tradeoff is that it will never perform as well as it does in their native agent runners.”(使用opencode并通过API使用模型要安全得多……但代价是它永远无法像原生代理运行器那样表现良好。) - 评论15(higginsniggins):“Friendly reminder: since Musk now owns Cursor, there are a bunch of really good open-source alternatives you can use.”(友情提醒:既然Musk现在拥有Cursor,有很多很好的开源替代品可以使用。)
主要观点四:技术防护措施(少数评论支持) - 评论7(charcircuit):“The simplest way to disable uploading your repo is disabling it in the config.”(禁用上传仓库的最简单方法是在配置中禁用它。) - 评论14(phaseleza):“I always separate the coding tools from LLM providers, and use bubblewrap to sandbox the coding tools.”(我总是将编码工具与LLM提供商分开,并使用bubblewrap对编码工具进行沙盒化。)
总体评价:评论普遍对Grok Build上传完整代码库的行为表示强烈担忧,认为这是隐私和安全风险,尤其是涉及机密文件。少数评论从技术角度提供合理性解释或建议防护措施。多数评论倾向于使用开源替代方案或加强本地安全配置。