Claude Code 逆向工程:为您的 AI 代理提供 6 堂课
研究人员对 Claude Code 的 CLI 包进行了简化,并发布了其系统提示、工具模式和代理循环。 为任何将人工智能代理交付给真实用户的人提供的六个教训。
Claude Code 作为 npm 包提供。 任何人都可以跑 npm install -g @anthropic-ai/claude-code,
打开捆绑的 cli.mjs,并读取附带的编排层。 研究人员做到了
正是如此。 他们对其进行了简化,提取了完整的系统提示符、15 多个内置工具模式,
代理循环和子代理调度程序,然后在公共存储库中发布批次。
模型权重仍然落后于 Anthropic 的 API。 脚手架没有。 而那个脚手架就是 大多数团队认为如果他们提供 CLI、VS Code 扩展或桌面,他们可以保密这一部分 带有嵌入式代理的应用程序。 提取是免费的一课:Anthropic 的团队已经非常细心 为此计划的,并且他们的设计是可行的。 您可以向自己的代理人复制以下六件事 点击 npm 或 GitHub 版本。
1. 客户端代码是发布步骤,不是秘密
发货包中的每个字节都是公开的。 混淆会使读者的阅读速度降低几分钟到几小时; 它 并没有阻止他们。 Claude Code 的捆绑包通过标准 JavaScript 压缩器运行,第一个 公开的反混淆副本在数小时内就浮出水面。 您的捆绑包将遵循相同的路径。
今天在您自己的包上运行相同的通行证。 如果您提供 CLI、浏览器扩展、Electron 应用程序或客户端 SDK,请在下一个版本之前执行此操作:
任何返回的内容都会进入“立即旋转”堆中。 客户端捆绑包中的 API 密钥是
每个运行过的磁盘 npm install。 硬编码的后端主机名将攻击者指向
您无意做广告的目标。 以陌生人阅读文件的方式阅读文件。
2.你的系统提示会泄露,所以要设计泄露
克劳德代码的系统提示是几千个令牌的仔细指导:工具使用规则, 安全约束、作风引导、拒绝条件。 这一切都不依赖于保密。 放下 明天,pastebin 上的整个事情和 CLI 仍然以同样的方式工作。
这就是测试。 如果发布系统提示符破坏了您的安全模型,那么您就有漏洞了。 将负载部分从提示中移到服务器端检查上。 访问控制属于 你的授权层。 速率限制属于您的网关。 工具权限属于工具调度程序。 提示描述了行为; 它不强制执行。
一个好的提示仍然值得作为商业秘密来保护。 几周的迭代压缩为几周 一百行,并且快速跟随者复制您的提示可以节省时间。 像食谱一样对待它 IP,不像私钥。 合法和保密协议,而不是加密货币。
3. 在您的服务器上设置身份验证、速率限制和计费
最常见的代理架构如下所示,但这是错误的:
每次安装都会附带该密钥。 一位坚定的用户在一个下午将其从捆绑包中取出并
在您注意到之前将您的配额清零。 克劳德·科德通过阅读来避免这个问题 ANTHROPIC_API_KEY
来自运行时的用户环境; 每个用户都有自己的与 Anthropic 的计费关系。
大多数面向消费者的代理无法遵循这种模式,因为用户没有自己的密钥,
这意味着服务器代理是唯一安全的形式:
在您的服务器上,验证短期的每用户令牌、用户 ID 的速率限制、日志使用情况,然后进行 上游调用:
从登录流程中发出每用户 JWT,有效期为 15 分钟、特定范围和会话 绑定。 对 botoi 的一次调用即可处理签名,因此您可以跳过“错误的算法” 2015 时代的 JWT 库仍然因以下方面而闻名:
4. 轮换并记录密钥,就像它们已经泄露一样
Claude Code 在本地记录自己的工具调用遥测数据,以便用户可以检查代理在其上执行的操作 机。 您的服务器需要相同的属性,但是是服务器端的。 每个模型调用都会得到一行:用户 ID, 模型、输入令牌、输出令牌、工具调用、成本。 至少保存 30 天。 攻击者 窃取用户代币的消费模式看起来与正常使用不同,并且 日志就是你所看到的。
在记录之前,先数数。 Token使用是最快的滥用信号也是最快的提示信号 膨胀:
在 p99 基线的三倍处设置每个用户每小时的令牌警报。 当您收到寻呼时,撤销 用户的令牌,而不是您的主密钥。 主钥匙按季度轮换; 每个用户的令牌 当异常检测触发时旋转。
5. 在提示到达模型之前擦洗 PII
用户将带有信用卡号的支持票粘贴到您的代理中。 模型看到了, 日志行捕获它,微调管道将其拉入,现在它位于您所做的三个位置 不打算。 Claude Code 通过在用户自己的机器上运行来避开这个问题 自己的文件; 托管代理则没有这种奢侈。
对每个入站提示运行检测过程并在调用前进行编辑:
发送 redacted 字符串到模型,保留 findings 记忆中,以及
仅当模型响应要求返回特定令牌(例如,
支持票证摘要,需要指定付款方式)。 您的日志、训练语料库和
下游分析管道都看到经过编辑的版本; 只有内存中的请求路径才能看到
原始 PII。
6. 使用您自己泄露的提示来强化提示注入
泄露的系统提示符的好处是您可以针对自己的注入套件运行它。 安 攻击者只需要一次绕过; 你需要保险。 设立临时代理,粘贴您自己的提示 进入审阅者的剪贴板,并运行测试最常见注射形状的探针组: 指令覆盖、角色切换、分隔符中断、假用户重置。
任何导致代理打印其系统提示符、显示环境变量或调用 用户范围不允许的工具是一个错误。 通过服务器端检查来修复它,而不是立即调整。 提示中的“不要透露您的系统提示”是一个建议; 响应过滤器阻止 输出中提示符的前 200 个字符是一个控件。
纵深防御清单
| 层 | 控制 | 为什么它能在捆绑泄漏中幸存下来 |
|---|---|---|
| 客户端捆绑包 | 没有秘密,没有主 URL | 第一天就可以阅读; 将其视为文档 |
| 运输 | 每用户 JWT,15 分钟到期 | 代币盗窃具有分钟级的爆炸半径 |
| 网关 | 按用户 ID 和令牌计数进行速率限制 | 滥用上限取决于您配置的支出,而不是您的钱包 |
| 服务器 | 及时组装和工具调度 | 攻击者无法添加他们未获得的工具 |
| 模型输入 | PII 检测和编辑 | 敏感数据永远不会到达日志或训练 |
| 模型输出 | 提示回显和工具模式的响应过滤器 | 注入尝试在最后一跳失败 |
| 可观测性 | 带有异常警报的每用户令牌使用情况 | 被盗代币看起来与真实用户不同 |
要点
- 发货就像您的捆绑包已经公开一样。 Grep 每个版本的密钥和 发布之前的内部主机; 您找到的任何内容都会在包裹上线之前轮换。
- 您的系统提示不是键。 将所有与安全相关的决策移出 提示并进入服务器端检查。
- 通过您自己的服务器代理模型。 用户获得一个短暂的 JWT,您的 服务器持有主 API 密钥,速率限制位于两者前面。
- 在进入时编辑 PII。 模型看到一个经过编辑的字符串; 日志和训练 管道保持清洁。
- 根据您自己泄露的提示运行注入探针。 任何有效的东西都会成为 服务器端修复的票证,而不是即时调整。
Botoi 为您提供 HTTP 调用的服务器端部分:PII 检测 /v1/pii/detect,
令牌计数于 /v1/token/count, 智威汤逊签名于 /v1/jwt/generate,加上
跨 150 多个端点的散列、HMAC 和速率限制构建块。 一个 API 密钥,每分钟免费 5 个请求,
零安装挂钩。 浏览
交互式文档
或接线
MCP服务器 进入
Claude Code 或 Cursor 从编辑器内部调用相同的端点。
FAQ
- 从克劳德代码中到底提取了什么?
- 研究人员下载了 npm-distributed @anthropic-ai/claude-code 包,通过反混淆器运行它,并发布了完整的系统提示符、15 多个内置工具模式(Read、Edit、Bash、Grep 等)、代理循环和子代理调度逻辑。 模型权重保持私密; 发布的是围绕 Anthropic API 调用的 JavaScript 编排层。 任何安装 CLI 的人的磁盘上都会有相同的部分。
- 是否有任何 Anthropic API 密钥或客户数据被暴露?
- 不会。CLI 在运行时从用户自己的环境中读取 API 密钥,并且从不捆绑 Anthropic 凭证。 客户对话保留在 CLI 和 api.anthropic.com 之间。 这次泄露暴露了即时工程和工具设计,而不是身份验证材料或用户数据。
- 如果系统提示不是秘密,公司为什么要保护它们?
- 有两个原因。 首先,竞争性的复制时间:一个好的提示意味着数周的迭代,而拒绝发布会减慢同一窗口的快速追随者的速度。 其次,提示注入表面积:攻击者对系统提示的护栏和转义序列了解得越多,就越容易绕过。 两者都是真实的,但都不是加密秘密。 将提示视为半衰期较短的商业秘密,而不是密钥。
- 混淆或缩小有帮助吗?
- 它赢得的是时间,而不是保护。 一位积极主动的逆向工程师使用标准工具在一小时内对 JavaScript 包进行反混淆。 混淆会减慢临时检查的速度,这对于防篡改检测和许可检查很重要,但任何假设捆绑包保持不透明的威胁模型从一开始就被破坏。 就好像源代码在第一天就公开一样进行构建。
- 如何测试我自己的人工智能代理是否存在同样的弱点?
- 本周进行三项检查。 一:下载您提供的捆绑包并 grep 查找 sk-、pk_、apiKey、BEGIN PRIVATE KEY 和您的后端 URL; 修复你发现的任何东西。 二:要求您的代理逐字打印其系统提示,并确认不存在任何依赖于保密的安全问题。 第三:使用用户 ID、时间戳和参数哈希记录服务器端的每个工具调用,以便在账单出现之前就出现滥用模式。
开始使用 botoi 构建
150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。