
wuguanganandClaude Opus 5
8510e1de28
feat: 读密钥文件的 Read/Grep/Glob 拦一下
`RiskClassifier` 里 readOnlyTools 是无条件早退的(注释写明理由:Read 一个讲
`rm -rf` 的 README 不该触发审批)。但「读密钥文件」恰恰是要拦的那件事——
共用密钥交给 AI 的契约是 `set -a; source`,值只进子进程环境;改用 Read
之后文件内容就进了 ~/.claude/projects/*.jsonl(0644、永久、每轮重发给 API)。
判断**只放在 readOnlyTools 那个分支里,不放在 classify 开头**。放开头的话,
约定用法里那条 source 命令每次都会弹审批,正常流程当场堵死。Bash 走下面的
模式匹配,`\.env\b` 已经把它定成 dangerous(记录不拦截),不动。
写清楚它挡不住什么:python -c 读、软链、base64 转一道都绕得过,
而且 hubctl 超时是 fail-open——app 没开着的时候这道闸是关的。
它是一次提醒,不是安全边界,README 和注释都按这个写。
路径常量抄在 HubIPC 里(那个模块刻意不依赖 HubProjects,hubctl 要小而快)。
抄就会漂,漂了的症状是静默的——改个文件名,闸就再也命不中而界面毫无变化。
所以加了 SensitivePathsAgreementTests,在同时看得见两个模块的测试目录里
把两边的真实路径对一遍。
625 个测试全过。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 12:48:30 +08:00
..
2026-08-07 18:10:35 +08:00
2026-08-09 03:39:28 +08:00
2026-08-04 17:19:39 +08:00
2026-07-29 19:20:12 +08:00
2026-08-07 22:51:03 +08:00
2026-08-14 13:47:06 +08:00
2026-08-09 02:26:07 +08:00
2026-08-07 18:10:35 +08:00
2026-07-29 19:20:12 +08:00
2026-08-07 17:49:57 +08:00
2026-07-31 19:43:01 +08:00
2026-08-17 12:45:20 +08:00
2026-08-14 17:31:13 +08:00
2026-08-17 12:48:30 +08:00
2026-08-14 14:04:51 +08:00
2026-08-08 12:19:50 +08:00
2026-07-31 19:43:01 +08:00
2026-07-29 19:20:12 +08:00
2026-07-31 19:43:01 +08:00