乐于分享
好东西不私藏

51万行源码泄露后,我连夜扒了 Claude Code 的数据收集逻辑,越看越后怕…

51万行源码泄露后,我连夜扒了 Claude Code 的数据收集逻辑,越看越后怕…

昨天发生了一件大事。

Claude Code 发新版本 v2.1.88 的时候,一个 60MB 的 source map 文件被意外打包进了 npm 发布包。

后果很严重——1884 个 TypeScript 源文件、51 万行代码,全部暴露。

安全研究员 Chaofan Shou 在 X 上放出消息,几小时浏览量超 530 万。

Anthropic 官方很快回应了:确认是人为失误,不涉及敏感客户数据和凭证。

但我不关心这些官方话术。

我关心的是:这 51 万行源码里,数据收集的逻辑到底长什么样?

于是我连夜扒了源码中关于数据收集的部分。

越看,后背越凉…

今天,把我看到的东西分享给你。

以下所有内容,均来自这次泄露的源码分析。


01 它背着你,都干了啥?

先别慌,听我慢慢说。

Claude Code 收集你的信息,分两种情况。

一种叫”没办法,不然没法干活”。

一种叫”其实你不一定知道,但它就是要收集”。

第一种,好理解。

你让它改代码,它总得把你的代码发给 Anthropic 的服务器吧?

就像你找医生看病,总得让医生看到检查结果。

这不是偷窥,这是看病。

Anthropic 也说了,这些内容不用于训练。

第二种,才是今天的重点——遥测数据。

你在用它的时候,它悄悄记了一本”日记”:

它知道你是谁:

你的登录邮箱账户 ID、设备唯一编号、订阅类型、甚至你属于哪个组织。

它知道你的电脑长啥样:

什么操作系统、什么 CPU、装了哪些包管理器、用的什么终端、Node.js 几点几版本、有没有跑在 Docker 里。

它知道你在干啥:

用了哪些工具、每个工具调用成功没、一次会话聊了多久、花了多少 token。

它知道 Claude 跑得怎么样:

API 调用成功率多少、内存吃了多少、CPU 占了多少。

甚至连你打开的 Git 仓库,它都记了——不过只记了个哈希值,不是完整地址。

▲图源《溺水小刀》

用人话说:

它比你的体检报告还详细。

而这一切,本来藏在闭源代码里,谁也看不到。

如果不是这次源码泄露,你可能永远不会知道。


02  这些”日记”,它给谁看了?

这是关键。

三路人马:

第一路:Anthropic 自己

完整版”日记”,一字不差。

邮箱、设备 ID、UUID,全都是明文。

发失败了还会缓存到你本地磁盘,下次补上。

第二路:Datadog(第三方监控平台)

这个有意思了。

之前网上有人说”Datadog 明文拿你的设备 ID”——我看完源码,这话是错的。

源码里有个 stripProtoFields() 函数,专门在发 Datadog 之前把所有个人身份信息扒掉。

用户 ID 也不是明文发的,而是做了 SHA256 哈希,再扔进 30 个桶里。

到 Datadog 那边,你就是一个 bucket_17,谁也不知道你是谁。

还有个白名单机制,只允许约 40 种特定事件发到 Datadog,不是什么都发。

第三路:GrowthBook(A/B 测试平台)

用来决定给你开哪些实验功能。

发送一些用户属性做判断。

所以,用人话说:

Datadog 那边,你戴着口罩墨镜,面目全非。

Anthropic 这边,你的身份证摊在桌上,清清楚楚。

这个设计其实挺聪明的——第三方拿不到你的个人信息,但”自家后院”是全透明的。


03  你的代码呢?安全吗?

分两层说。

第一层:API 调用。

你的代码发给 Anthropic API,这是功能必须的。

没这个,Claude 就是个摆设。

第二层:遥测系统。

代码会不会偷偷溜进遥测数据,发到 Datadog?

源码里有三道锁:

第一道锁:TypeScript 类型系统强制检查。

字段名长得离谱——AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS

翻译过来就是”我确认这不是代码也不是文件路径”。

这个确认是代码层面强制执行的,不是靠开发者自觉,而是不确认就编译不过。

第二道锁:文件路径只留扩展名。

比如你改了 src/utils/auth.ts,遥测里只会记录 .ts。

超过 10 个字符的扩展名直接替换为 other。

第三道锁:内容截断。

字符串超过 512 字符截断,嵌套深度超过 2 层截断,集合超过 20 项截断。

MCP 工具名也会被匿名化,统一变成 mcp_tool。

所以,结论是:

你的代码会发给 Anthropic API(正常),但不会通过遥测泄露到 Datadog。


04  怎么让它闭嘴?

虽然收集的数据没那么可怕,但如果你就是不想被记录——有办法。

最简单的一行命令:

export DISABLE_TELEMETRY=1

效果:关掉 Datadog、关掉第一方分析、关掉 A/B 测试、关掉反馈调查。

想更彻底?

export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

这个除了 API 调用,其他所有网络请求全停。

自动更新、发布说明、MCP 注册表,统统不联网。

用 Bedrock / Vertex / Foundry 的用户?

恭喜你,分析自动禁用,什么都不用管。

还有个隐藏命令:

在 Claude Code 里输入 /privacy-settings,把 “Help improve Claude” 关掉。

效果:聊天记录不用于训练,数据保留从 5 年缩短到 30 天。

注意:这个命令有门槛——只有通过 claude.ai 网站付费订阅的 Max/Pro 用户才能看到。

用 API Key、Bedrock、Vertex、Team 账号的用户,输入这个命令没反应。

如果你不是订阅用户,直接用前面那两个环境变量就行,效果一样。

想永久生效?写进配置文件:

# Mac/Linux 用户

echo ‘export DISABLE_TELEMETRY=1’ >> ~/.zshrc

source ~/.zshrc

# Windows 用户

[System.Environment]::SetEnvironmentVariable(‘DISABLE_TELEMETRY’, ‘1’, ‘User’)

说实话,这些开关确实存在。

但你要是不看源码,根本不知道要去设。


05  别只盯着它,大家都一样

Claude Code 收集数据这事,放在行业里看,算”标配”。

VS Code 默认开 Application Insights,你每次按键的延迟它都记。

Cursor 也一样,还把代码片段发到自研模型。

IntelliJ IDEA 默认收集使用统计。

对比下来:

– 收集范围:同一量级

– 隐私保护:Claude Code 做得算好的——PII 剥离、哈希分桶、文件路径清理,不是每个工具都有

– 关闭方式:都提供,但都藏得深

– 唯一的区别:Claude Code 发到第三方 Datadog,VS Code 发到微软自家

但有一点是 Claude Code 独有的:

这次源码泄露,让你第一次完整看到了一个商业开发工具的数据收集实现。

别的工具?只能猜。

最后说几句大实话

看完 51 万行源码,我的感受比预想的复杂。

没有网上传的那么可怕:

– Datadog 收不到你的个人信息(哈希分桶了)

– 代码不会通过遥测泄露(有三道锁)

– 文件路径做了清理(只留扩展名)

但也不能掉以轻心:

– Anthropic 自己的服务器有你的全部信息(明文)

– 关闭选项藏得深(普通人根本不知道)

– 他们有远程精细控制遥测的能力(GrowthBook)——比如调节采样率、远程关闭某个数据通道。不过你设了 DISABLE_TELEMETRY=1 的话,这些都不生效

– 数据保留最长 5 年(关了训练才缩到 30 天)

记住这三点就够了:

1. 遥测数据收集是行业标配,Claude Code 做得不算差

2. 第三方(Datadog)拿到的是脱敏数据,Anthropic 自己拿的是完整数据

3. 加一行 DISABLE_TELEMETRY=1,省心

这次泄露最大的价值,不是制造恐慌。

是让你第一次有机会做出知情的选择。

以前你没得选,因为你看不到源码。

现在你看到了。

关不关,是你的事。但至少,你知道了。

你觉得 Claude Code 的数据收集可以接受吗?

你平时用开发工具的时候,会关遥测吗?

欢迎评论区聊聊~

有帮助的话,点个赞~

关注我,下次扒更多

参考来源:

– Ars Technica: Entire Claude Code CLI source code leaks thanks to exposed map file

– Fortune: Anthropic mistakenly leaks its own AI coding tool’s source code

– 源码仓库(非官方):https://github.com/instructkr/claude-code