AI 趋势

Claude Code 源代码泄露:npm 上曝光的 51 万行代码

Claude Code npm v2.1.88 意外随附 60 MB .map 文件,暴露 51 万行源代码,揭露 KAIROS 后台守护进程、Undercover Mode 及 Capybara 模型系列。

Claude Code 源代码泄露:npm 上曝光的 51 万行代码

2026 年 3 月 31 日,一次例行 npm 发布,演变成 AI 工具历史上最具揭示性的意外泄露事件之一。研究人员发现,Anthropic 的 @anthropic-ai/claude-code 包 2.1.88 版包含了一个非预期的产出物:一个 60 MB 的 JavaScript source map 文件,名为 cli.js.map。这个单一 JSON 文件里,以字符串形式嵌入了横跨 1,906 个专有文件的 51 万行未混淆 TypeScript 源代码

Source map 文件是调试工具。它的用途是帮助工程师在诊断问题时,将压缩的生产环境代码还原为可读格式,绝非供公开发布之用。当 Anthropic 工程师使用 Bun 运行时(默认生成 source map)构建 Claude Code 时,没有人在 .npmignore 配置中加入 *.map,结果 npm 毫不犹豫地将整个代码库提供给任何安装或浏览该包的人。

讽刺之处立即且彻底。泄露源代码中,有一套名为「Undercover Mode」的完整内部系统——这正是专门为防止 Claude Code 不慎在公开仓库中泄露 Anthropic 内部信息而设计的子系统。工程师建立了一套精密工具来阻止 AI 暴露自身,却在打包产出物中把整个源代码都公开了,显然是 Claude 本身所为。

Anthropic 确认了这起事件,将其定性为「由人为疏失造成的发布打包问题,而非安全漏洞」,并表示正在推出防止再次发生的措施。没有用户数据、客户提示或模型权重受到波及。但知识产权的曝光——包括内部协作逻辑、系统提示架构、情绪遥测、未发布功能及未来模型代号——在包下架前已开始在各个镜像站扩散。


Claude Code npm 泄露事件究竟发生了什么?

答案摘要:2026 年 3 月 31 日,Anthropic 意外在 npm 包 @anthropic-ai/claude-code v2.1.88 中包含了一个 60 MB 的 source map 文件,含有横跨 1,906 个文件的 51 万行未混淆 TypeScript 源代码。未曝光用户数据,但完整内部架构——包括未发布功能、系统提示逻辑及未来模型代号——对任何下载该包的人均可公开访问。

此次披露最初由区块链安全公司 Fuzzland 研究员 Chaofan Shou 在 X(前 Twitter)上公开,他发文指出该包包含完整 source map。数小时内,代码便被分叉至 GitHub 各处,使封堵工作实际上成为不可能。Anthropic 承认事件并表示正在修补包,但泄露内容已传播至外部镜像。

项目详情
受影响包@anthropic-ai/claude-code v2.1.88
泄露文件cli.js.map(约 60 MB)
代码行数超过 51.2 万行 TypeScript
曝光文件数1,906 个源文件
发现日期2026 年 3 月 31 日
曝光数据源代码、系统提示、功能标志、模型代号
未曝光数据用户数据、客户提示、模型权重、API 密钥
Anthropic 定性「人为疏失,非安全漏洞」

.map 文件如何曝光 51 万行 TypeScript?

答案摘要:Claude Code 以 Bun 构建,而 Bun 默认生成 JavaScript source map(.map)文件。Source map 以 JSON 字符串形式嵌入完整源代码——其用途是帮助工程师调试压缩后的生产环境代码。Anthropic 在发布 v2.1.88 时,没有人在 .npmignore 中加入 *.map,因此这个 60 MB 文件连同整个未混淆代码库一起上线。

这并非新型攻击向量。开发者意外将 source map 发布到 npm 的情况已有多年记录。此次事件的特殊之处在于规模——51 万行专有 AI agent 代码——以及其中的内容。

根本原因很简单:Bun 的打包工具输出的 source map 含有 sourcesContent 数组,以字符串形式直接包含每个文件的原始代码。与传统混淆不同,后者需要花费精力才能逆向,source map 直接交出原始代码。修复方式只需一行——在 .npmignore 加入 *.map——或禁用生产构建的 source map 输出。

最讽刺的细节:泄露源代码中包含完整的 Undercover Mode 子系统,专门用来防止 Anthropic 内部信息出现在公开仓库。该系统运作正常,只是没有覆盖 npm 打包流程。


泄露揭露了哪些未发布功能?

答案摘要:泄露源代码包含多个由编译时标志控制、不存在于公开版本的功能。最重要的是 KAIROS(常驻主动后台进程)、ULTRAPLAN(使用 Opus 4.6 进行 30 分钟远程规划)及 Buddy(完整的电子宠物式终端伴侣,含确定性抽卡机制)。此外还发现了 Capybara 模型、Opus 4.7 和 Sonnet 4.8 的引用。

功能说明状态
KAIROS 模式常驻后台进程,监控工作流程、记录观察、在 15 秒阻塞预算内主动行动由 PROACTIVE 编译标志控制
ULTRAPLAN将复杂规划卸载至运行 Opus 4.6 的远程云容器,最长 30 分钟,结果须通过浏览器审批由 tengu_ultraplan 配置控制
Buddy 系统完整的电子宠物伴侣,含确定性抽卡(Mulberry32 PRNG)、18 种物种、稀有度等级、闪亮变体及 Claude 撰写的个性由 BUDDY 编译标志控制
DAEMON 模式用户离开时继续工作的后台 agent受控制
语音模式通过 /voice 命令的按住说话功能,对约 5% 用户推出部分推出
Capybara 模型新模型系列,含支持 100 万 token 上下文窗口的 capybara-v2-fast未发布
Opus 4.7 / Sonnet 4.8在 betas.ts 中发现的下一代模型引用未发布
afk-mode / advisor-tool内部协商中的未公开测试版 API 功能未发布

Buddy 系统代码将 2026 年 4 月 1 日至 7 日定为预告窗口,完整发布则设定在 2026 年 5 月。每个 Buddy 的物种由用户 ID 哈希值加上盐值 'friend-2026-401' 确定性生成,无需服务端状态即可确保分配一致性。

ULTRAPLAN 含有一个哨兵值 __ULTRAPLAN_TELEPORT_LOCAL__,字面上将远程审批的规划结果「传送」回本地终端——这种架构模式暗示 Claude Code 正朝着本地-云端混合执行模型演进。


泄露揭示了 Claude Code 的系统提示架构?

答案摘要:系统提示并非单一字符串,而是在运行时由模块化、缓存优化的区段组合而成。SYSTEM_PROMPT_DYNAMIC_BOUNDARY 标记将可跨组织缓存的静态指令与用户会话特定的动态内容分隔开来。名为 DANGEROUS_uncachedSystemPromptSection() 的函数表明这是围绕 API 成本优化的刻意设计决策——也说明有人从生产事故中学到了教训。

三个特别值得关注的系统提示发现:

Undercover Mode — 当 Anthropic 员工在公开仓库使用 Claude Code 时,系统自动注入指令,防止 AI 在 commit 信息或 PR 说明中透露内部代号、开发决策或 Anthropic 内部背景。指令内容为:「您正在 UNDERCOVER 模式下运行……您的 commit 信息不得包含任何 Anthropic 内部信息。不要暴露你的身份。」 此模式无强制关闭开关,除非仓库远端在内部白名单上,否则持续启用。

情绪遥测 — 名为 userPromptKeywords.ts 的文件使用正则表达式标记含有挫败情绪表达(如「这太烂了」、「太令人沮丧了」)的用户提示。此数据不会实时改变 Claude 的响应,而是作为遥测数据发送至 Anthropic 产品团队,在用户提出正式投诉前,大规模识别 UX 痛点。

CYBER_RISK_INSTRUCTIONconstants/cyberRiskInstruction.ts 中的命名区段,由特定内部团队中具名人员维护,明确划定授权安全测试与破坏性技术之间的治理边界。


Claude Code 的多 Agent 架构实际上是如何工作的?

答案摘要:Claude Code 可从单一 agent 切换至 Coordinator Mode,通过基于 XML 的任务通知和共享暂存目录,生成并指挥多个并行工作 agent。其工具系统包含 40 多个需授权的模块。名为 autoDream 的后台子 agent 在满足三个条件后整合记忆:经过 24 小时、完成 5 次以上对话、并获取整合锁定。

泄露代码库验证了模型上下文协议(MCP)规范所暗示的架构:Claude Code 的整个工具架构是可组合 agent 模块的典范。

组件代码行数角色
基础工具定义29,000 行所有工具的 schema、权限与执行逻辑
查询引擎(QueryEngine.ts)46,000 行LLM API 调用、流式传输、缓存、思维链循环
Coordinator Modecoordinator/ 目录生成并管理并行工作 agent
autoDreamservices/autoDream/后台记忆整合子 agent
权限系统tools/permissions/基于 ML 的 YOLO 风险分类器

Coordinator Mode 将 Claude Code 从单一 agent 转化为协调者:

  1. 研究阶段 — 工作 agent 并行调查代码库
  2. 合成阶段 — Coordinator 读取调查结果并制定实现规格
  3. 实现阶段 — 工作 agent 依规格进行针对性修改
  4. 验证阶段 — 工作 agent 测试并确认修改

工作 agent 通过 <task-notification> XML 消息通信。Coordinator 提示明确指示:「不要说『根据您的调查结果』——阅读实际结果并明确指定要做什么。」

autoDream 以三重触发条件解决上下文熵问题——长对话中 AI 性能的退化:经过 24 小时、完成至少 5 次对话、获取整合锁定。触发后执行四个阶段:定向(读取记忆)、收集近期信号(提取新事实)、合成(解决矛盾)、精简(写入紧凑的 MEMORY.md)。


对开发者的安全影响有哪些?

答案摘要:虽未曝光用户数据,但 Claude Code 内部安全验证逻辑、遥测 schema、路径遍历防护及功能标志的完全透明,带来了具体的下游风险。可读的源代码加速了漏洞研究,曝光的 UX 模式让更高质量的仿冒恶意程序成为可能,而公开的内部架构也为攻击者提供了针对 CLI 及其依赖链制造针对性漏洞的路线图。

泄露揭露的权限系统相当精密——但其透明性是双刃剑:

风险类别具体风险建议行动
漏洞研究可读的路径遍历防护与验证逻辑使零日漏洞发现速度加快立即固定并验证 CLI 版本
恶意程序仿冒曝光的 UX 流程、日志消息和安装行为使更高质量的 Claude Code 木马包成为可能提高对仿冒 npm 包的警惕
供应链卫生内部产出物镜像中的残留 .map 文件可能暴露额外代码库审计内部 npm 镜像的 *.map 文件
密钥曝光开发工作站上的高价值 API 密钥收紧出口控制;检视本地密钥处理
功能标志利用已公开的内部功能标志与环境变量审计 CI/CD 流水线中未记录的环境变量访问

值得注意的是,已有与此事件无关的独立报告指出,有伪装成「Claude Code」下载的窃取程序存在。泄露的源代码提高了未来仿冒品更具说服力的风险。

YOLO 权限分类器(讽刺地命名——它拒绝所有高风险操作,而非批准)使用机器学习风险分类,分为低/中/高三个等级。路径遍历防护处理 URL 编码攻击、Unicode 规范化、反斜杠注入及大小写不敏感操作。这些防护措施现已完整记录,供攻击者参考。


Anthropic 如何回应,团队应采取哪些行动?

答案摘要:Anthropic 将事件定性为「由人为疏失造成的发布打包问题,而非安全漏洞」,并确认未曝光用户数据。安全团队应立即固定已安装的 Claude Code CLI 版本、审计内部 npm 镜像中的 .map 文件、收紧开发工作站的出口控制、提高对仿冒包的警惕,并将此事件作为供应链卫生事件处理,不论 Anthropic 的定性为何。

Anthropic 着手修补包,并表示正在实施防止再次发生的措施。但泄露内容已在外部广泛镜像。源代码曝光的根本特性是:一旦传播,便无法「未曝光」。

使用 Claude Code 的团队立即建议行动:

  1. 固定 CLI 版本 — 停止使用 latest 浮动安装;记录已安装版本和包完整性信息
  2. 审计内部镜像 — 检查产出物存储库中的 Claude Code 包是否含有包含 sourcesContent*.map 文件
  3. 检视密钥处理 — 确保 API 密钥未被记录、缓存在可公开读取的位置或通过 shell 历史记录暴露
  4. 提高包警惕 — 在部署前验证任何 Claude Code 更新的发布者和完整性哈希值
  5. 评估出口控制 — 持有高价值密钥或访问敏感仓库的开发工作站需要更严格的网络控制

常见问题

Claude Code 源代码事件泄露了哪些内容?

2026 年 3 月 31 日,Anthropic 意外在 npm 包 @anthropic-ai/claude-code v2.1.88 中包含了一个 60 MB 的 JavaScript source map 文件(cli.js.map)。该文件包含横跨 1,906 个文件、超过 51 万行 TypeScript 源代码,完整暴露了 Claude Code 的内部架构、系统提示逻辑及未发布功能。

Claude Code source map 泄露是如何发生的?

Claude Code 使用 Bun 构建,Bun 默认生成 source map 文件。工程师在发布前忘记在 .npmignore 配置中加入 *.map。Source map 文件以 JSON 字符串形式嵌入完整源代码,任何下载或检视 npm 包的人均可访问。

Claude Code 的 KAIROS 模式是什么?

KAIROS 是从泄露源代码中发现的未发布后台守护进程。它主动监控开发者工作流程,将观察记录写入每日追加文件,并在 15 秒的阻塞预算内自主行动。它由 PROACTIVE 编译时功能标志控制,完全不存在于任何公开版本中。

Claude Code 的 Undercover Mode 是什么?

Undercover Mode 是 Anthropic 员工在公开仓库使用 Claude Code 时注入系统提示的指令,要求 AI 不得在 commit 信息或 PR 说明中包含任何 Anthropic 内部信息,明确指示:「不要暴露你的身份。」 此模式自动启用,除非仓库远端在内部白名单上,否则没有强制关闭开关。

用户数据或模型权重是否遭到泄露?

否。Anthropic 确认没有用户数据、客户提示、对话记录或模型权重泄露。事件范围仅限于客户端 CLI 源代码。但内部安全验证逻辑的曝光,仍为使用此工具的组织带来下游风险。

Capybara 模型系列是什么?

泄露源代码引用了未发布的 Claude 模型系列 Capybara,包含支持 100 万 token 上下文窗口的 capybara-v2-fast 版本,提供快速与思考两种层级。代码库中也引用了尚未公开的 Opus 4.7 与 Sonnet 4.8。

组织在 Claude Code 泄露后应采取哪些措施?

固定 CLI 版本、审计内部 npm 镜像中的残留 .map 文件、检视本地 API 密钥处理方式、提高对仿冒包的警惕,以及收紧开发工作站的出口控制。无论 Anthropic 如何定性,均应将此事件作为需要验证的供应链卫生事件处理。


延伸阅读

TAG