Agent 早就把密钥打进会话记录了——然后呢?
2026 年 7 月,@aaronlippold 在 anthropics/claude-code#80153 报告:Claude Code 里一句复合 Bash — echo "searching..."; env 2>/dev/null; npm search foo — 把大约 10 个真实 token 写进了 ~/.claude/projects/**/*.jsonl。当时该报告称权限规则按命令前缀匹配,中间那段 env 因此漏过;产品侧对 Bash 的 PostToolUse 改写也被忽略(#68951)。密钥只能去各平台轮换,转录里却还留着副本。
现行 Claude Code 权限文档写明:deny/ask 规则会按 ; / && / … 拆分子命令,任一子命令命中即生效 — 因此在当前构建上 Bash(env *) 应当能拦住中间的 env。但这抹不掉已经落盘的密钥,deny 规则也覆盖不了所有泄漏路径(包装命令、bash -c '…'、或工具直接打印已知值)。spillscan 是污染巡测仪:一个静态二进制,自动发现 Claude Code / Codex / Cursor 等本地转录根目录,用模式匹配常见云密钥,并能在保持 JSONL 每行合法 JSON 的前提下只改写密钥子串(先写 .bak)。另有一个 PreToolUse guard,在下一次 env 倾倒前直接拒绝。
它不是网络防火墙。它是有人已经打开药瓶之后,你拿来扫房间的那块表。
— 2026-10-14 · 2026-10-17 更正