Skip to main content
权限策略(permission policy)控制服务端执行的工具——内置工具集与 MCP 工具集——是自动执行,还是先暂停等待你的批准。自定义工具由你的应用自己执行、自己把关,不受权限策略约束。

权限策略类型

内置工具集(agent_toolset_20260601)与 MCP 工具集(mcp_toolset)的默认策略都是 always_allow。只有显式配置了 always_ask 的调用才会停下来等待审批;平台不提供「记住本次决定」或「只询问一次」这类中间形态。 权限策略控制的是「已启用的工具何时执行」。要把某个工具从 Agent 中彻底移除,应改用 enabled: false 禁用它,见工具

为工具集设置策略

权限策略写在 Agent 的 tools 配置里,可以在创建 Agent 时设置,也可以之后通过更新 Agent 修改。同一份工具配置有三个入口,字段与默认值完全相同:
  • 创建 Agent:POST /v1/agents 的 tools[]。
  • 更新 Agent:POST /v1/agents/:agentId 的 tools[];产生新版本,只影响之后创建的会话。
  • 创建会话时覆盖:POST /v1/sessions 的 agent.tools[];整体替换 Agent 版本中的工具配置,会话创建后冻结。
正在运行的会话保持创建时的工具配置不变,更新只对之后创建的会话生效。

内置工具集的权限

default_config.permission_policy 为集合内所有工具设置统一策略:
更常见的做法是只对高风险工具收紧。下面的配置放行只读操作、对可变更沙箱状态的工具要求审批:

MCP 工具集的权限

MCP 工具的策略配置方式相同,configs[].name 用服务器上报的原始工具名:
继承规则:configs[].permission_policy 省略或为 null 时继承 default_config.permission_policy;后者省略时取协议默认 always_allow
always_ask 要有人通过事件接口批准。定时部署可以绑定带 always_ask 的 Agent,但触发后会停在 requires_action,直到你补发 user.tool_confirmation。无人值守的 cron 请用 always_allow

响应确认请求

当 Agent 调用一个策略为 always_ask 的工具时:
  1. 会话发出 agent.tool_useagent.mcp_tool_use 事件。
  2. 会话暂停,发出 session.status_idle 事件,其 stop_reason.typerequires_action,等待审批的事件 ID 列在 stop_reason.event_ids 数组中。会话会无限期等待你的响应。
  3. 为每个待审批事件发送一条 user.tool_confirmation 事件:tool_use_id 填对应工具调用事件的 ID,result“allow”“deny”,拒绝时可用 deny_message 说明原因(仅允许与 deny 搭配)。一次 events 请求可以携带多条确认。
  4. 所有待审批事件都被处理后,会话回到 running。被允许的工具执行;被拒绝的工具不执行,Agent 会收到一条「调用被拒绝」的工具结果,其中包含你的 deny_message。
注意:tool_use_id 必须精确等于当前 requires_action.event_ids 中某个工具调用事件的 ID;对不在等待中的事件发确认会被拒绝。同一批 events 里,同一个待审批事件只能出现一条确认。

自定义工具

权限策略不适用于自定义工具。Agent 调用自定义工具时,你的应用收到 agent.custom_tool_use 事件,是否执行完全由你决定,执行后回发 user.custom_tool_result。完整流程见事件与流式输出

下一步

Skills

为 Agent 挂载可复用的领域知识

事件与流式输出

发送事件、流式接收、在执行途中打断或转向

本页对应 OpenAPI

Agent:tools 上的 permission_policy