第十三节 工具权限与审批
AVL Code 通过工具权限策略对每一次工具调用做精细化管控。
13.1 三态权限
每个工具都可以设置为:
- 启用:直接放行。
- 询问:每次调用前弹窗审批。
- 禁用:直接拒绝。
可按工作模式独立配置;常见做法:execute 模式启用写工具,plan 模式禁用所有写工具。三态对子代理同样生效(禁用工具在子代理侧一并拿不到),插件 / 外部服务卸载后残留的工具配置会被自动清理。
13.2 调用前审批
当一个被标记为「询问」的工具即将执行时:
- 桌面端弹出审批弹窗,展示工具名、入参与影响范围。
- 你可以选择:
- 允许(仅本次)
- 始终允许:把"工具+参数模式"加入白名单。
- 拒绝
- 弹窗带 30 秒倒计时,超时未响应按「拒绝」处理。
13.2.1 无限制模式(高级)
输入区模式滑块右侧有一个盾牌开关,专给清楚自己在做什么的高级用户用。开启前先过一道风险确认弹窗(含 5 秒冷静期 — 确认按钮先禁用并倒计时「请仔细阅读风险提示 5s…」,归零才能点,期间按 Enter 也不触发),开启后红色危险态常驻提醒,关闭即时生效。
作用域:按会话独立、纯内存、重启即清,不会悄悄留着。
开启后解除三类日常摩擦:
| 摩擦 | 开启后 |
|---|---|
| 工具批准 | 跳过批准弹窗(不再逐个 ask / 拒绝 / 延后),工具直接执行 |
| 命令白名单 | fs.exec 不再受命令白名单限制,任意命令可执行 |
| 网络访问 | web.fetch / web.bing 不再过滤内网 / 环回 / 链路本地地址 |
始终保留的硬底线(不受开关影响):
samples/沙箱隔离rm -rf等破坏性命令的参数校验- 危险注入黑名单(fork 炸弹 / 写
/etc/curl|sh/eval) http(s)协议白名单
斜杠命令快捷开关 — 也可在输入框直接敲:
/unrestricted(或中文别名/无限)— 切换当前会话的无限制模式。开启时同样过 5 秒冷静期的风险确认弹窗,关闭即时生效。中文别名在命令菜单与/help里隐藏(避免重复行),但键入回车仍可执行。
无护栏区间的消息标识:无限制模式期间产生的连续消息会以浅色边框整体圈出,起止一目了然,事后回看能一眼分辨哪些内容是在无护栏状态下生成的;关闭开关后边框当场收口,模式未结束时不会提前打「结束」界标。子代理可按需递归继承该模式,继承产生的消息同样带标识。
13.2.2 本地模式:一键断掉内置联网工具
与无限制模式正好相反的方向 —— 本地模式把这个会话的内置联网能力一次关掉,适合处理不宜外发的资料、或者本来就没网的环境。
开关位置:输入区的联网开关。默认是「联网工具已启用」,点击后弹确认框「禁用联网工具?」,确认即生效。
关掉的是哪些:
- 网页抓取与搜索
- GitHub 检索
- VirusTotal / GTI 威胁情报云查
- 漏洞库在线同步
不受影响的(这点很重要,别误以为"全断网了"):
- shell 命令(比如
curl)的网络访问 —— 本开关不拦 - 外接 MCP 工具的网络访问
- 与模型服务本身的通信
对模型选择的影响:本地模式下,这个会话的数据只发给它自己所用的模型 ——
code.ask、sec.decompile、记忆自动提炼不再按路由策略选澜砥模型,一律用当前会话的模型;- 子任务一律用主会话的模型(忽略子任务的路由策略与子代理定义里的模型);
- Hook 用触发它的会话自己的模型;确定不了时跳过这次 Hook 的模型调用,不改用别的会话的模型;
- 发往本地模式会话的例行程序用该会话的模型。
作用域:按会话生效,重启后自动恢复联网;子代理同样受限。开启期间依赖联网检索的任务(查资料、云端威胁分析、拉最新漏洞数据)效果会明显受限,这是预期内的。
斜杠命令快捷开关:输入框直接敲 /local 即可切换。
13.3 白名单匹配
「始终允许」的匹配粒度可在 设置 → Hooks → 自动批准 中调整:
- 仅本次(最严)
- 同工具同参数
- 同工具任何参数
- 整个工作区放行(最松)
13.4 多端审批
同一条审批请求会同时出现在桌面弹窗与已绑定的远程通道(如微信);首个应答生效,其余端的后续回复会被提示已应答。另有一条容易混淆的规则:拒绝 > 挂起 > 询问 > 允许 的优先级排序属于 Hook 层 — 同一次评估中多个 Hook 返回的权限决策按它合并,与多端应答无关。
13.5 远程审批
如果你已绑定微信通道,所有 询问 类审批都会同步推送到对应聊天,你可以在微信里用一行命令完成审批:
/approve <审批号> # 允许本次
/always <审批号> # 始终允许
/deny <审批号> # 拒绝
桌面侧弹窗会同步消失,整条任务自动续跑。
13.6 留痕
审批决策不落独立审计存储:仅「始终允许」写入工作区级授权文件 hook-approvals.yaml(记录授权指纹与决策时间),可在 设置 → Hooks 查看与撤销;「仅本次允许」与「拒绝」只作用于当次调用,不留存记录。
