来源笔记
Regression: malware reminder on every read still causes subagent refusals
摘要
一份 Claude Code bug 报告称,v2.1.111 仍会在每次 Read 和 Grep 内容结果中注入一条与恶意软件相关的系统提醒,导致 Opus 4.7 子代理拒绝合法的代码编辑。这个问题会破坏并行编程工作流,并浪费上下文 token。
问题
- Claude Code 注入的提醒写着,代理必须拒绝改进或增补恶意软件,但其中一句可能会被理解为:读完文件后,任何代码修改都必须拒绝。
- 子代理似乎比主线程更容易按字面理解这段话,所以合法的 OSS 重构可能在开始改动代码前就失败。
- 报告者说,这条提醒还会在每次读取文件时消耗上下文,这会提高长时间编码会话中的 token 成本。
方法
- 报告把 Claude Code v2.1.111 与 issue #47027 中声称已修复的 v2.1.92 进行对比。
- 报告者确认这段提醒字符串嵌在 Claude CLI 二进制文件中,而不是来自用户设置、hooks 或 skills。
- 复现使用了 Opus 4.7 子代理,目标是一个第一方 Rust 反向代理项目。报告者称这是普通服务器代码,没有恶意软件特征。
- 提议的修复是移除这条提醒,把恶意软件条件放在拒绝条款之前明确写出,或者只在第一次读文件时显示提醒。
结果
- 在一个 PR 工作流中,启动了 5 个 Opus 4.7 子代理处理彼此独立的重构;其中 3 个在读文件后拒绝了代码编辑任务,2 个完成了任务。
- 根据报告者的运行结果,Opus 4.7 子代理在合法代码编辑上的拒绝率大约是 40% 到 60%。
- 这个问题可以在 Claude Code v2.1.111 上复现,版本号比声称修复它的 v2.1.92 高 19 个版本。
- 报告者估计,每次注入的提醒大约会消耗 400 个 token;一次会话里 50 到 100 多次读取会浪费大约 20k 到 40k 个 token。
- 相关报告提到 10,000+ 次提醒注入和 15%+ 的上下文窗口使用率,但这些数字来自链接的问题,不是这份报告里的受控评估。