第十四节 工具权限策略

[!ref] 详解见用户手册「工具权限与审批」节。

14.1 三态语义

状态 图标 行为
启用 直接放行,不弹窗
询问 每次调用前弹窗审批(接入实际确认流程,批准前调用暂停)
禁用 直接拒绝,记录到错误抽屉

三态对子代理同样生效:「禁用」在主代理与子代理两侧一并生效(子代理侧 fail-closed,工具直接不可见);卸载插件 / 移除 MCP 后端时自动清理残留的工具配置键,盘上配置与实际可用工具保持一致。

14.2 决策聚合与多端应答

Hook 决策聚合:同一次评估中多个 Hook 返回的权限决策按下列优先级合并(前者胜):

deny  >  defer  >  ask  >  allow

多端应答:审批弹窗与远程通道(微信等)同时收到同一请求时,首个应答生效;其余端的后续回复会被提示已应答。

14.3 白名单匹配粒度

粒度 覆盖范围 适用场景
仅本次 单次调用 谨慎评估
同工具同参数 一组完全相同的入参 推荐默认
同工具任何参数 该工具任意调用 内部脚本
整工作区放行 该工作区所有工具 仅限隔离环境

14.4 远程审批回写

命令 等价桌面操作
/approve <审批号> 允许(仅本次)
/always <审批号> 始终允许
/deny <审批号> 拒绝
不回复 30 秒倒计时结束即超时拒绝

14.4.1 无限制模式(高级)

输入区模式滑块右侧盾牌开关;按会话独立、纯内存、重启即清。开启前有 5 秒冷静期。

解除 开启后行为
工具批准 跳过批准弹窗,直接执行
命令白名单 fs.exec 不限命令
网络过滤 web.fetch / web.bing 不过滤内网 / 环回 / 链路本地

始终保留的硬底线(不受开关影响):

硬底线 说明
samples/ 沙箱 不可解除
rm -rf 参数校验 仍校验
危险注入黑名单 fork 炸弹 / 写 /etc / curl|sh / eval
协议白名单 http(s) 放行

消息标识:模式期间产生的连续消息以浅色边框整体圈出(起止界标),关闭后当场收口;模式未结束不打「结束」界标。子代理可按需递归继承该模式,继承产生的消息同样带标识。

14.5 审批请求字段与留痕

审批弹窗(hook:ask 事件)携带的字段:

字段 说明
request_id 审批号
event 触发的 Hook 事件名
fingerprint 授权指纹,「始终允许」按它匹配
handler_type / handler_label 处理器类型与显示名
matcher / match_target 命中的匹配器与匹配目标
source_scope / source_id 来源作用域(plugin / user / workspace)及其 ID
session_id 会话 ID
timeout_sec 倒计时秒数(30)

决策取值:deny(拒绝)/ allow_once(仅本次允许)/ always_allow(始终允许)。

留痕:仅「始终允许」会持久化 — 写入工作区级授权文件 hook-approvals.yaml(记录授权指纹与决策时间),可在 设置 → Hooks 查看与撤销;「仅本次允许」「拒绝」与超时只作用于当次调用,不落盘。