八月的一条推文,撕开了AI编程工具最隐秘的一层皮。
你在终端里调用它写代码时,这个工具还会向服务器证明请求来自正版客户端。 完成这件事的代码,藏在你根本看不见的地方。
2026年8月8日,开发者4nzn(@paoloanzn)在X上公开了一项发现:Anthropic分发给全球开发者的Claude Code,内嵌了一套经过私有改造的Bun运行时。JavaScript业务层尚可用文本编辑器查看,关键的哈希函数却被塞进了编译后的原生Zig代码里。每一个从你电脑发出的API请求,在离开网卡前的最后一刻,都会被这段隐形代码打上指纹。

▲ 4nzn称Claude Code使用定制Bun运行时隐藏请求指纹
一个187MB的“黑箱”,跑在你的终端里
先科普一个背景Claude Code和你平时用npm install安装、能够看到源码的工具不同。它是一个接近200MB的独立二进制文件,用Bun的--compile功能,把整套TypeScript应用连同运行时打成了一个巨型可执行文件。你用cat打开它,看到的是乱码;用strings扫,只能捞到碎片
这就像一本书被浇了树脂封进琥珀,内容还在,但你没有凿子。
而Anthropic在2025年12月收购Bun之后,琥珀里又多了一样东西:一把只有他们自己能看见的印章。

▲ 2025年12月,Anthropic官宣收购Bun,称Claude Code年化收入达10亿美元级
指纹是怎么打的:一场JS层根本拦不住的“偷梁换柱”
技术机制精妙得令人不安
根据源码泄露后被系统解读的工程分析,流程是这样的:JavaScript层在构造请求时,会在特定字段写入一段固定长度的占位符,类似cch=00000。请求体序列化完毕、准备出网的一刹那,Bun原生HTTP栈(用Zig语言实现)在字节流中搜索这段占位符,然后用Zig计算出的attestation哈希等长覆盖。

▲ 技术分析文献展示:哈希计算发生在Bun私有fork的Zig网络栈中,JS层完全不可见
等长替换可以保持Content-Length不变,也省去了缓冲区重新分配。
为什么JS层的任何拦截都无效? 因为覆盖发生在JavaScript引擎的内存空间之外。你挂代理、monkey-patch fetch、装中间件,统统看不到这次写入。源码注释指向一个路径:bun-anthropic/src/http/Attestation.zig。开源Bun里没有这段代码 这是Anthropic的私有fork独有的。
4nzn自己在回复中确认:对Bun的修改唯一目的就是生成那个指纹,其余功能仍在JavaScript侧。

▲ 作者澄清:定制Bun的唯一用途就是生成指纹哈希
导火索:一个叫pi-black的“伪装术”
故事的另一半更刺激
就在发这条帖子的前一天,4nzn发布了pi-black:一个开源项目,用途是把第三方AI编程工具Pi伪装成官方Claude Code二进制,让用户用已经购买的Claude Pro/Max订阅额度来驱动非官方agent,省去按量计费的API。

▲ pi-black仓库:patches/、extensions/目录清晰可见,版本号钉死Claude Code对应版本
换句话说:你每月花几十甚至上百美元买了Max订阅,但只能在Anthropic自家的CLI里用。 pi-black的存在,就是要打破这道墙。
而Anthropic的指纹机制,正是用来识别并阻挡这类伪装请求的。
官方指纹 vs 社区伪装,同一条因果链的两端,同一场军备竞赛的攻与防。
“别发出来!他们会封人的!”
社区反应迅速分化成两个阵营

▲ 有人恳求:别公开细节,官方会立即补丁并封禁使用者
一边是恐惧派:“求你别发了,他们补丁速度很快,还会封号。”高关注开发者Teknium直接警告,Anthropic不但封得快,持续对抗甚至可能面临法律诉讼。

▲ Teknium:他们封得很快,如果你持续绕过,他们会起诉你
另一边是愤怒派:你收了我每月几百块的订阅费,却告诉我只能用你指定的工具?这像极了“买了会员却只能用官方播放器”的流媒体DRM翻版。
有人把Anthropic握着的指纹称作“新护城河”。

还有人从商业合同角度反驳:用户购买的是Claude Code的使用权,而非tokens。

旧线索:源码泄露早已揭开底牌
事实上,早在2026年3月底,一场史诗级的发布事故就已经把底牌掀开了。
某个版本的Claude Code在npm发布时,误带了约60MB的source map文件,相当于把整仓TypeScript源码原封不动地送到了全世界开发者面前。原因是多重失守:Bun在production模式仍生成source map的已知bug、.npmignore未排除*.map、发布流水线未检查tarball体积。

▲ 开发者回顾逆向Claude Code及其源码泄露事件
讽刺的是:代码里本身存在防泄露机制(被称为“Undercover Mode”),结果防不了自己的发布流程。
泄露后,社区系统地解读了多层防御:编译期死代码消除、Zig层attestation、消息指纹、反调试的prctl、网关特征探测……一共至少八层纵深防御。

▲ 技术长文标题:Claude Code的纵深防御,它如何阻止你冒充它
更深的不安:指纹之外
把视野拉远,指纹只是冰山一角
2026年2月,Claude Code默认折叠了“读了哪些文件、搜了什么模式”的详细信息。开发者愤怒了:一个拥有文件系统读写权限和shell执行权限的agent,现在默认不告诉你它在你的代码库里翻了什么?

▲ DevClass:Anthropic更新让Claude的AI动作更不透明,开发者要求透明度
UI可见性降低、网络请求带有隐藏指纹,二进制又增加了逆向难度。这些变化叠加后,用户在逐步失去对自己终端里这个高权限agent的审计能力。
新版Claude Code甚至静态链接了BoringSSL、剥除了符号表,连本地HTTPS抓包都变得极其困难。研究者不得不动用eBPF和字节模式匹配,才能看到你自己的电脑发出了什么请求。
一个更古老的剧本
如果你觉得这一切似曾相识,你的直觉是对的。
类似机制早已出现在其他领域:游戏反作弊会在用户电脑运行内核驱动以验证客户端,流媒体DRM把解码限制在认证设备上,Android Play Integrity则允许银行应用检查设备完整性。
现在,这套逻辑进了开发者的IDE
区别在于:游戏和视频不会读你的~/.ssh,不会执行rm -rf,不会翻你的.env文件。而Claude Code可以一个同时拥有高系统权限和不可审计的客户端校验的工具,它的信任模型该怎么画?
猫鼠游戏没有终点
有人问了一个致命的问题:“Anthropic能不能一次更新就轮换算法或盐?”

▲ 核心问题:官方一次推送更新就能让所有逆向失效吗?
答案显然是:能 这正是军备竞赛中防守方的结构性优势,你逆向一个月,他更新一次就归零。pi-black的版本号已经说明了一切:v0.84.1-cc2.1.224.4,它必须精确钉死官方Claude Code的每一个小版本。一旦跟不上,功能立刻失效
4nzn说他会发布完整技术拆解社区在等Anthropic大概也在等,等着看该补哪里。
信任的裂痕
争论的表面是一行哈希、一个补丁、一个逆向工具。
但裂痕的底层是一个结构性矛盾:AI编程助手已经变成月入十亿美元的基础设施,在你的终端里拥有几乎无限的权限,透明度却在系统性地下降。“我到底买了什么”这个问题,变成了一场关于信任的根本性谈判。
Anthropic将其解释为防滥用、防蒸馏与防账号共享;用户则主张,付费之后理应有权选择自己的工具。
两边都有道理但只有一边握着编译器
夜雨聆风