Skip to content

配置工具审批流程

工具审批分为两个阶段。模型准备调用智能体所关联沙箱提供的工具时,沙箱模板或实例中的 工具审批配置 决定是否在执行前产生确认请求。确认请求产生后,渠道可以使用智能体模板中的 工具权限 和渠道用户规则自动处理;Invoke API 调用方则接收中断并提交批准或拒绝。本文将智能体模板中的规则称为模板级审批处理规则。

警告

关闭沙箱 工具审批配置 中的审批开关后,沙箱工具调用直接执行,不检查模板或渠道用户的审批处理规则。必须阻止的操作还应通过最小权限凭证、工具服务授权、MCP Server 权限或沙箱网络策略限制。

设置沙箱工具的审批要求

当模型准备调用智能体所关联沙箱提供的工具,例如 execpython-run 时,沙箱模板或实例中的 工具审批配置 决定是否产生确认请求。智能体模板中的 工具权限 不控制这一步,只处理已经产生的确认请求。

工具来源什么决定是否产生确认请求确认请求产生后如何处理
沙箱工具沙箱模板或实例中的 工具审批配置。开启后,该沙箱提供的所有工具会在执行前产生确认请求;关闭后直接执行渠道按模板和用户规则处理;Invoke API 调用方提交 APPROVEREJECT
用户工具包工具由 Invoke API 或 WebSocket 调用方执行,并通过 RESPONDERROR 返回结果。这是工具结果交互,不是批准或拒绝不参与工具执行和结果回传
MCP、知识库、Skill 和平台工具包这些能力的配置页面不提供沙箱式的 工具审批配置不能通过模板规则把原本直接执行的调用改为需审批调用

智能体使用沙箱模板时,从该模板创建的沙箱沿用模板中的审批开关;直接选择沙箱实例时,使用该实例自己的开关。需要让模板规则或渠道用户补充规则处理沙箱调用时,应先开启对应沙箱的审批开关。

对于没有审批开关的工具,使用最小权限凭证、工具服务授权、调用方允许列表或网络策略限制可执行范围。不要添加一条模板拒绝规则后,就假定原本直接执行的工具已经受它保护。

根据接入方式处理确认请求

沙箱工具产生确认请求后,后续处理取决于智能体的接入方式。Invoke API 直接把确认型中断返回给调用方。飞书、QQ 和 WebSocket 属于渠道接入;渠道账号已经为用户建立用户绑定时,平台先应用模板级规则,再应用渠道用户补充规则。

Invoke API 不进入渠道自动处理链,因此不会检查模板级或渠道用户级审批处理规则。当响应中的 pending_interrupt.typeconfirm 时,调用方使用同一 session_id 和中断 ID 提交 APPROVEREJECT

渠道自动处理需要已经建立用户绑定。用户绑定确定渠道用户正在使用的智能体实例,平台据此应用来源智能体模板中的规则和该用户的补充规则。没有用户绑定时,确认请求不会进入模板和用户规则链,应由渠道交互界面或 WebSocket 客户端处理。

模板规则先检查,命中后不会继续检查渠道用户规则;需要按渠道用户区分处理方式时,不要在模板中添加会提前命中的宽泛允许规则。让目标调用在模板规则中保持未命中,再在渠道账号的 用户绑定 中配置补充规则。WebSocket 客户端还应能够接收未被自动处理的确认型中断,并提交 APPROVEREJECT

配置渠道中的自动处理规则

从人工审批开始,再为已经验证的低风险调用增加允许规则:

要求人工确认所有沙箱工具

开启沙箱 工具审批配置,暂不添加允许规则。

自动批准固定的低风险调用

添加范围精确的模板允许规则。这些规则适用于通过渠道发起,并且已经进入审批流程的匹配调用。

为不同渠道用户设置不同处理方式

让目标调用在模板规则中保持未命中,再配置用户绑定补充规则。

自动拒绝高风险调用

添加范围精确的拒绝规则,并验证调用没有产生外部副作用。

禁止执行特定操作

同时使用最小权限凭证、工具服务授权或沙箱网络策略,建立不可绕过的限制。

让沙箱工具直接执行

关闭沙箱审批,并确认可以接受模板规则和用户规则不参与处理。

允许规则不是工具授权。外部服务、MCP Server、沙箱或业务系统仍会按照各自的身份和权限检查请求。

配置模板级审批处理规则

  1. 打开 智能体模板,创建或编辑目标模板。
  2. 找到 工具权限
  3. 对不得执行的调用选择 添加拒绝规则
  4. 对可以自动通过审批的低风险调用选择 添加允许规则
  5. 按工具来源找到实际工具名称和输入结构;需要按参数值缩小范围时,同时填写参数名和 RE2 表达式。
  6. 保存智能体模板。
  7. 创建新的测试智能体实例,或按更新流程将变更应用到现有测试实例,再验证规则。
工具权限中的拒绝规则、允许规则以及工具名、参数名和 RE2 表达式

同一组模板规则先检查拒绝规则,再检查允许规则;模板规则未匹配时,渠道调用继续检查对应用户绑定的补充规则。没有用户补充规则或补充规则仍未匹配时,调用进入人工审批。

配置渠道用户补充规则

渠道用户补充规则只处理模板规则未匹配的审批请求。需要为特定渠道用户设置不同结果时:

  1. 确认目标工具调用会进入审批流程。
  2. 让该调用在模板拒绝和允许规则中保持未命中。
  3. 打开 渠道账号,进入目标账号的 用户绑定
  4. 编辑目标用户,在控制台显示的“工具权限规则”中添加拒绝或允许规则。
  5. 使用该渠道用户发起真实测试,确认自动拒绝、自动批准或人工审批结果。

如果模板规则已经命中,用户补充规则不会覆盖模板结果。对所有用户都必须禁止的操作,应放在模板拒绝规则中,并在工具提供方保留相应权限限制。

找到工具名称和参数名

规则中的三个字段来自不同位置:

  • 工具名称来自工具的可调用名称,不是插件、模板、实例或工具包的显示名称。
  • 参数名来自工具输入 schema 的顶层 properties。名称必须与工具定义完全一致。
  • 匹配正则 (RE2 语法)由你根据允许或限制的参数值编写,不是工具定义提供的固定值。

按工具来源查找这些值:

工具来源查找工具名称查找参数名
MCP打开 MCP 实例详情,在 工具列表 中复制目标工具的名称展开目标工具的输入 schema,复制顶层 properties 中的字段名
沙箱打开沙箱实例详情并加载工具列表,复制列表中的名称沙箱工具列表只显示名称和描述。先保留人工审批,通过一次低风险测试在 Trace 中核对参数,或查阅该工具的公开说明
其他确认型工具在该能力的工具说明或测试调用的 Trace 中核对可调用名称使用工具输入 schema 的顶层字段;无法确认时不要猜测参数名

平台工具包的选择项表示工具包,不一定等于其中工具的可调用名称。平台工具包配置不提供沙箱式审批开关,模板规则不会把它的调用改为需审批调用;应通过工具说明、调用结果和工具本身的权限限制确认可执行范围。

用户工具包也使用 nameinputSchema.properties 定义工具调用,但此类工具需要 Invoke API 或 WebSocket 调用方执行并返回 RESPONDERROR。调用方应使用这些字段校验自己的工具允许列表;模板允许规则不能代替工具执行或调用方鉴权。

以下工具定义表示可调用名称为 exec,顶层参数名为 command

language-json
{
  "name": "exec",
  "inputSchema": {
    "type": "object",
    "properties": {
      "command": { "type": "string" }
    }
  }
}

如果只允许以 ls 开头的命令,可以填写 execcommand^ls( |$)。请复制实际名称,不要把描述文本、资源名称或嵌套字段路径填入规则。

填写匹配条件

工具名称确定规则适用的调用,参数名和匹配正则进一步限定规则适用的参数值。

字段填写方法留空或特殊值的含义
工具名称使用区分大小写的可调用名称,例如 exec* 匹配所有工具
参数名使用输入 schema 顶层 properties 中的实际字段名,例如 command留空表示不按参数过滤
匹配正则 (RE2 语法)编写与参数值匹配的 RE2 表达式留空表示工具名称匹配后无条件生效

要按参数值过滤,必须同时填写参数名和匹配正则。任一项留空时,规则会在工具名称匹配后生效,不再根据参数值缩小范围。

参数规则适合匹配顶层字符串或数字等稳定值。如果需要限制的值位于嵌套对象或数组中,不要使用点号路径猜测字段;应保留人工审批,或者调整你能够控制的工具契约,把需要判断的值设计为顶层参数。

以下示例说明如何缩小规则范围。请替换为目标工具实际公开的工具名、参数名和参数格式:

自动拒绝删除命令

  • 规则:拒绝
  • 工具名称:exec
  • 参数名:command
  • 匹配正则:^rm( |$)

自动批准只读命令

  • 规则:允许
  • 工具名称:exec
  • 参数名:command
  • 匹配正则:^(ls|pwd)( |$)

自动批准指定目录

  • 规则:允许
  • 工具名称:file_editor
  • 参数名:path
  • 匹配正则:^/workspace/approved/

避免使用 * 配合空参数名和空表达式创建宽泛允许规则。这会让该规则覆盖所有同类确认型工具调用。

通过 API 或 WebSocket 响应中断

Invoke API 调用不进入渠道自动处理链,因此不会检查模板级或渠道用户级审批处理规则。调用方收到类型为 confirmpending_interrupt 后,必须使用同一个 session_id、中断 ID 和 APPROVEREJECT 继续调用任务。

WebSocket 是渠道接入。模板和渠道用户规则可以先处理已经产生的确认请求;规则未匹配时,WebSocket 客户端接收 interrupt,并使用同一消息上下文提交 APPROVEREJECT

用户工具包的工具由调用方业务系统执行。此类中断需要调用方使用 RESPOND 返回工具结果,或者使用 ERROR 返回失败;允许规则不能替代工具执行和结果回传。参见管理 API 会话、调用任务和中断定义用户工具包

通过飞书或 QQ 使用智能体时,未被自动处理的确认请求由渠道交互界面提供审批操作。渠道用户绑定中的“工具权限规则”是模板未命中后的补充审批处理规则,不会覆盖已经命中的模板结果。

验证审批流程

不要用一种接入方式的测试结果代替另一种接入方式。按计划使用的入口分别验证:

  1. 对沙箱工具,先确认对应沙箱模板或实例的 工具审批配置 已开启,并确认测试调用产生确认请求。没有该审批开关的工具不能通过模板规则开启审批。
  2. 通过目标渠道发送明确匹配模板允许规则的低风险请求,确认自动批准并且只执行预期工具和参数。
  3. 发送明确匹配模板拒绝规则的请求,确认工具没有执行,也没有产生外部副作用。
  4. 让调用在模板规则中保持未命中,再使用配置了补充规则的渠道用户验证用户级结果。
  5. 发送模板和用户规则都不匹配的请求,确认调用进入人工审批。
  6. 使用 Invoke API 或 WebSocket 时,分别验证调用方可以正确提交 APPROVEREJECT
  7. 测试表达式边界,并在 Trace 或对应运行记录中核对工具名称、参数、中断和最终结果。

模板更新后,应重新验证已有智能体实例。生产验收方法参见验证智能体实例