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
夜雨聆风