51万行代码一夜暴露:Claude Code为何从"安全标杆"沦为筛子

2 阅读11分钟

核心观点:  一次npm配置失误将Anthropic的"AI安全担当"人设彻底击穿。源代码映射文件泄露不仅暴露51.2万行内部代码,更暴露的是高速迭代下运营安全的系统性缺陷,以及一家声称极度重视安全的公司,为何在短期内犯了两次同样的错误。

一个59.8MB的文件是如何推倒多米诺骨牌的

2026年3月31日早间,安全研究员Chaofan Shou在X平台发出一条简短的帖子:"Claude Code源代码通过npm注册表中的map文件泄露。"

事情的整个过程看起来再简单不过。Claude Code v2.1.88版本发布时,构建流程打包进了一个59.8MB的cli.js.map文件。这个文件本应只存在于开发环境,用于调试时将压缩代码映射回原始源码,但它不小心跟随npm包一起发布到了公网。任何人都可以从Anthropic的Cloudflare R2存储桶直接下载整个解压包。

文章图 1.png

图1:npm包中意外包含的source map文件导致完整源码暴露

7小时内,备份库获得20,000+星标。24小时内,超过41,500个Fork分散在全网各处。竞争对手、逆向工程师、安全研究员全部涌入。

暴露的规模令人震惊:1,906个TypeScript源文件、51.2万行代码、完整可读状态。这不是一份混淆的前端打包产物,而是整个CLI工具的核心架构、权限系统、未发布功能路线图、内部指令集。

架构设计水平远超预期,代码质量参差不齐

当研究者开始剖析这51万行代码时,浮出水面的是一个复杂度远超预期的系统。

核心引擎:QueryEngine.ts单文件就有46,000行代码,负责所有LLM API调用、流式传输、缓存管理和多轮对话编排。Tool.ts约29,000行,定义了所有代理工具类型和权限架构。commands.ts注册了85个左右的斜杠命令。

claudecode 分层结构.png

图2:Claude Code分层架构展示了从UI层到服务层的完整流程

工具系统:40个离散功能的权限网格

Claude Code采用了插件化设计,每个能力都是独立的、被权限控制的工具类:

只读操作并行执行——文件读取、代码搜索、Web抓取可同时运行,不存在冲突风险。

修改操作串行运行——文件写入、Shell命令、Git操作必须逐个执行,防止并发冲突。

子代理生成——AgentTool模块支持动态生成子智能体,可以用Fork、Teammate、Worktree三种模式运行。

这种分层设计反映了Anthropic对并发安全的深度思考,但同时也暴露了一个矛盾——能做出如此精细的权限系统,为何在构建流程这种基础设施上犯如此低级的错误?

安全机制的尴尬真相

代码中明确记录了一套六层权限验证系统:工具调用前要过初级检查、上下文检查、权限门控、决策管道、执行分析、最终执行。听起来滴水不漏。

图 3.png 图3:六层权限验证流程确保每次工具调用都被严格把控

但当研究者翻到src/cli/print.ts时,画风突变。一个函数3,000多行,12层嵌套,圈复杂度爆表。另一个细节引发讥讽:Claude Code检测用户负面情绪不是用NLP模型,而是用最原始的正则表达式匹配ffsshitty之类的关键词。

最讽刺的发现:代码中有一个叫做"卧底模式(Undercover Mode)"的功能,专门用于在向开源仓库提交PR时移除所有Anthropic的信息痕迹,让AI伪装成人类。这套隐藏工具被做得很精致。但保护源代码的最基本措施——.npmignore配置——反复失效。

隐藏功能:未来产品路线图全盘托出

泄露代码中有35个编译时特性标志、120多个隐藏环境变量、200多个远程控制开关。社区迅速编译出了一份隐藏功能清单。

Kairos:会在你睡觉时整理笔记的AI助手

代号Kairos的持久化助手模式是最具有前景的发现。当你不使用Claude Code时,它会自动执行四阶段记忆整合:定向、收集、整合、修剪。换句话说,AI在后台自动将零散的会话信息转化为结构化笔记。

图 4.png

图4:Kairos系统的四阶段记忆整合流程示意

这不是简单的聊天记录保存,而是一个真正的跨会话学习系统。项目上下文、错误模式、用户偏好会被自动精炼并持久化。

Ultraplan与多Agent协调

Ultraplan支持最长30分钟的深度任务规划,使用Opus 4.6模型。这意味着Claude Code可以为复杂工程项目做全流程的架构设计——不是临时方案,而是多步骤的战略规划。

多Agent协调模式则允许同时启动多个独立的代理实例分工协作。根据源代码,这种并行能力可以提升处理效率3倍以上。三种子代理执行模式各有用途:

Fork模式——创建字节级别的父上下文复制,共享API的prompt cache,运行成本接近顺序执行。

Teammate模式——通过文件型邮箱跨终端窗格通信,模拟团队协作。

Worktree模式——每个代理分配独立的Git分支,完全隔离工作空间。

Buddy:电子宠物系统

也许是最出人意料的发现。Claude Code内置了一个Tamagotchi风格的虚拟宠物系统,代号Buddy。18种物种(鸭子、章鱼、水豚、蘑菇),6种稀有度等级(普通60%、传奇1%、还有闪光变体),每个用户的宠物由账户ID唯一生成。

图 5.png 图5:Buddy系统的物种稀有度设定和属性生成逻辑

根据时间戳,Buddy计划4月1日首次亮相。大概率是个愚人节彩蛋,但也反映出Anthropic团队在追求极致用户体验上的细致程度。

守护进程模式与跨会话通信

代码中还发现了session-manager,一个可以像系统服务一样在后台运行的会话管理器。如果你的机器上同时运行多个Claude会话,它们可以互相发送消息——这意味着不同的工作流可以互相协调。

这套隐藏功能的完整曝光给了竞争对手一份免费的18个月产品路线图。不仅能看到Anthropic正在做什么,还能看到它认为值得投入工程资源做的方向。

运营安全的系统性崩溃

Claude Code源码泄露并不是孤立事件。就在泄露发生的几天前,Anthropic经历了另一场大规模暴露。

3月26日,第三方CMS系统配置错误导致Anthropic近3,000个内部资产被公开访问。其中泄露了一个代号为Capybara的未发布模型——Claude Mythos。内部文件宣称其为AI能力的"阶跃式提升",能"以远超人类防御者的速度利用漏洞"。这个描述直接导致几家网络安全公司股价下跌。

更扎心的是,Claude Code在2月就因同样的source map问题泄露过一次。同样的错误,犯了两次。这不是技术问题,是流程问题——或者更准确地说,是高速迭代下质量控制的坍塌。

安全人设的连续翻车

Anthropic是业界"AI安全"的代言人。安全是公司使命的核心,Constitutional AI是他们的旗舰技术,Dario Amodei在各种论坛上讲述AI对齐的重要性。但两周内的三次重大泄露给这个人设造成了致命伤。

有业内人士指出,护城河是模型,不是CLI。模型权重、训练数据、用户数据都没泄露,CLI只是一个客户端包装。但这种辩解忽略了一个核心问题:产品架构和完整的未发布功能路线图已经暴露。对手现在有了一份免费的技术蓝图和竞争情报。

对于一家声称"极度重视安全"的企业来说,运营安全的反复失控传递的信号可能比技术漏洞本身更致命。这不仅是外部信任的问题,也是内部工程纪律的问题。

代码背后的工程哲学

撇开安全事故不谈,这51万行代码本身反映了Anthropic对"AI编程工具"的理解。

Bun而非Node的选择

Claude Code选择Bun而非Node作为运行时。Bun在启动速度、死代码消除(通过feature flags)和TypeScript原生支持上都有优势。这个选择表明Anthropic对启动延迟和包体积极度敏感。CLI工具的每一毫秒都影响用户感知。

React + Ink的终端UI

在终端中使用React这种方案听起来很前卫。但Ink框架让Anthropic得以复用Web开发的组件化思维——状态管理、钩子、虚拟DOM——应用到CLI界面。这降低了维护成本,但也带来了学习曲线。

Zod v4的全面校验

代码中到处都是Zod schema定义。从API响应到配置文件到工具输入,每一个数据边界都被schema明确定义和运行时校验。这是一种"类型安全至上"的哲学。

这套架构设计的逻辑是明确的:构建一个可靠的、可扩展的、权限隐式控制的智能体系统。但从代码质量参差不齐(QueryEngine.ts的46,000行vs精致的权限系统)和运营安全的反复失效来看,Anthropic似乎在工程规模扩张和质量控制之间失去了平衡

竞争格局中的加速

这次泄露对整个AI编程工具市场的影响需要冷静评估。

短期内,对手可以加速复制Claude Code的架构模式——权限系统、多Agent协调、IDE桥接。但架构容易复制,底层模型能力很难。Claude 3.5 Sonnet在代码生成上的优势是由训练数据和模型参数决定的,一份源码改变不了这个现实。

长期来看,这次事件暴露的问题更深层。一个需要处理文件系统、执行Shell命令、管理Git工作流的AI工具,对信任有极高的要求。信任来自两部分:模型的安全对齐和公司的运营安全。Anthropic在后者上失分了。

开发者可能开始思考一个问题:我是否应该把整个项目上下文交给Claude Code?代码中提到CLAUDE.md支持40,000个字符的项目指导,这意味着用户倾向于把很多上下文放进去。如果CLI工具的安全边界变得不可信,这种信任就会瓦解。

一个关于自动化的悖论

有一个细思恐怖的问题值得提出:在一个Claude Code已经能自主写代码、提交commit、管理发布流程的时代,这次source map文件的泄露真的是"人为失误"吗?

也许是。错误总是存在的。但问题在于:一个自动化的构建流程,应该对"不该发布什么"有明确的规则。.npmignore应该被严格维护。CI/CD应该有检查。npm pack --dry-run应该在发布前运行。

这些都是可以自动化的。如果Anthropic这样的公司都做不好这些基础工作,或者说自动化本身没有被充分信任和监督,那么问题不仅是流程缺陷,还涉及到组织文化层面的问题。

延伸思考

在实际部署这类大模型能力时,开发者常面临API调用受限或多模型切换繁琐的问题。Claude Code的泄露恰恰说明了一个现实:即使是一流的工程团队构建的工具,也需要极度谨慎的供应链管理。

目前更高效的路径是利用API聚合中转方案,将算力直接导入本地开发环境,实现复杂任务的自动化。这不仅降低了对单一工具的依赖,也分散了信任风险。若需进一步探讨底层接入方案或获取稳定的API通道,可联系文末开发者微信mokaapi交流。

image.png

参考资源:
[1] LinkedIn - Anthropic's Claude Code Source Leaked
[2] Medium - Claude Code's Entire Source Code Leaked via npm
[3] Ars Technica - Entire Claude Code CLI Source Leaks
[4] The Register - Anthropic Goes Nude, Exposes Claude Code Source