背景
目标
在不改变 TUI -> Runtime -> Tool Manager 分层职责的前提下,为 file / grep / glob 统一接入安全检查链路,确保三类工具在路径解析、边界控制、敏感路径拦截与错误语义上保持一致。
范围
- 三类工具执行前统一走安全检查入口(不在工具内部各自散落规则)。
- 路径校验统一使用 workspace 规范化逻辑(含 traversal / symlink escape 防护)。
- 默认敏感路径策略一致:如
.git/**、.env*、*.pem 等按规则 deny/ask。
- 对超出 workspace 的访问做一致拒绝与错误包装。
grep/glob 对批量匹配结果也执行同一边界与敏感路径过滤。
非目标
- 不在本任务内实现
bash 安全执行器。
- 不在本任务内引入新的 UI 交互形态。
- 不扩展到 MCP server/tool 级策略(由后续子任务处理)。
实现建议
- 在 Tool Manager / Permission Gateway 层增加可复用的
PathAction 判定与批量路径校验能力。
file 工具按单路径动作判定;grep/glob 在结果回传前做逐项过滤与标记。
- 保持 provider/runtime 无厂商字段泄漏,不在 TUI 写安全逻辑。
结果过滤器(grep/glob)细化
- 在
grep/glob 的返回阶段引入统一 ResultFilter(或等价抽象),逐项校验 candidate path。
- 过滤判定与
file 的路径安全规则保持同源(同一 workspace/sensitive policy)。
- 对被过滤项记录结构化原因:
outside_workspace、sensitive_path、symlink_escape(命名可按现有规范调整)。
- 默认不泄露被拦截目标的敏感绝对路径;必要时仅返回安全可读的相对路径或计数摘要。
- 输出中包含过滤统计元数据(如
matched_count、filtered_count、returned_count),便于 runtime/模型判断结果完整性。
验收标准
关联
背景
file / grep / glob的一致性安全校验实现,导致路径边界与敏感文件策略可能出现工具间行为不一致。目标
在不改变
TUI -> Runtime -> Tool Manager分层职责的前提下,为file / grep / glob统一接入安全检查链路,确保三类工具在路径解析、边界控制、敏感路径拦截与错误语义上保持一致。范围
.git/**、.env*、*.pem等按规则deny/ask。grep/glob对批量匹配结果也执行同一边界与敏感路径过滤。非目标
bash安全执行器。实现建议
PathAction判定与批量路径校验能力。file工具按单路径动作判定;grep/glob在结果回传前做逐项过滤与标记。结果过滤器(grep/glob)细化
grep/glob的返回阶段引入统一ResultFilter(或等价抽象),逐项校验 candidate path。file的路径安全规则保持同源(同一 workspace/sensitive policy)。outside_workspace、sensitive_path、symlink_escape(命名可按现有规范调整)。matched_count、filtered_count、returned_count),便于 runtime/模型判断结果完整性。验收标准
file / grep / glob执行全部经过统一安全检查入口。..、符号链接逃逸)。grep/glob结果过滤器完成并满足:matched_count/filtered_count/returned_count等统计元数据。关联