Claude Code 默认遥测向 Anthropic 发送所读文件的 SHA-256 哈希

Hacker News2026-10-28 17:28

披露说明 ANT-1 · 2026年10月28日 简要版 模型无法回传数据,但其运行框架可以。 将 Claude Code 指向另一家公司的模型,完全不登录 Anthropic,它仍然会向 Anthropic 发送其所读取文件的指纹。我们于10月19日在 2.1.303 版本上当场发现它正是这样做的,又于10月27日在 2.1.312 版本(该次复测时的最新版本)上再次发现,当时由 DeepSeek 模型执行工作,整个配置中没有任何 Anthropic 账户。9月,在登录 Max 套餐的情况下,它做了同样的事,并且还发送了仓库的 git 提交。 该指纹是文件完整内容的无盐 SHA-256 哈希,与设备 ID 和会话 ID 一同发送。它不是文件本身,Anthropic 若如此声明也属正确,但这远非无害。如果你知道一个文件的大部分内容——而对于由模板生成的 .env 文件,你通常确实知道——任何持有该遥测数据的人都可以猜出其中唯一的秘密,并离线用该指纹逐一验证每个猜测。我们在一个伪造的 .env 上做了尝试,3.5 秒便还原出了密码。 我们于9月26日告知了 Anthropic,只收到自动确认,别无其他。三周后,该行为仍在发生。你今天就可以阻止它:设置 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1。我们将其评为中等:没有文件内容离开你的机器,且一个真正随机的 API 密钥无法通过这种方式还原。弱密码则可以。 证据 我们捕获了什么,以及最近捕获了什么。 原始捕获,2026年9月,Claude Code 2.1.283,Max 账户,默认设置:一个发往 api.anthropic.com 的遥测事件,其 contentHash 等于智能体所读取文件的 sha256,并与设备 ID 和会话 ID 一同发送。 较早的复测,2026年10月19日,构建 2.1.303:指纹仍然存在。三次 POST 返回 200,64 位十六进制的 contentHash 与所读取文件的 sha256sum 匹配,出现在同时携带 device_id 和 session_id 的同一事件上。2.1.286 的对照运行产生了相同结果,因此测量本身是有效的。 复测,2026年10月27日,构建 2.1.312,该次复测时的最新版本:仍然存在。四次发往 api.anthropic.com 的遥测 POST 返回 200,一个文件操作事件携带了匹配的 contentHash,64 位十六进制的 contentHash 再次与所读取文件的 sha256sum 匹配,同一事件上还有 device_id 和 session_id。2.1.286 对照在同一批次中复现了该结果,两次退出运行均发送了零遥测。 未发送的内容 是指纹,而非文件。 文件内容未被传输。指纹仍具有识别性:一个我们已知的文件可以从中被识别出来,而一个被猜出的短秘密可以据此验证。这就是我们将其视为隐私问题而非奇闻轶事的原因。 开关 一个设置即可将其关闭,我们测试了它确实有效。 设置 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 并配合 DISABLE_* 变量,在我们的测试中未产生任何遥测。退出机制有效。 明确说明的局限 本说明不主张的内容。 - head_sha 未复测。原始登录运行在遥测中显示了 git 提交 ID。复测装置的工作区不是 git 仓库,因此该部分依据的是9月的捕获以及该字符串在二进制文件中的存在,而非新的观察。 - 登录状态未复测。我们未复测登录状态。 - 每种条件一个单元。这是佐证,而非证明。它在 2.1.283、2.1.286、2.1.303 和 2.1.312 上保持一致。 - 我们不主张 2.1.312 今天仍是最新版本,也不主张其后没有任何变化。2.1.312 是我们于2026年10月27日复测时的最新版本,我们报告的是该构建的行为。 披露时间线 先报告,后发布。 2026年9月26日:报告发送至 privacy@anthropic.com。同日收到自动确认;我们未记录到任何实质性回复,本说明中的任何内容均不应被解读为厂商声明。2026年10月19日:在构建 2.1.303 上复测。2026年10月27日:在构建 2.1.312(当时的最新版本)上复测。2026年10月28日:发布。

ai