enabled 决定工具是否暴露给模型,permission_policy 决定模型调用工具时如何评估。用它们禁用写文件、执行命令、调用外部服务等可能改变外部状态的工具,或要求这些工具在执行前等待确认。
两个配置字段
两个字段都适用于内置工具集(
agent_toolset)和 MCP 工具集(mcp_toolset),并且都可以在两个层级上设置:
- 工具集级:在工具声明的
default_config中设置,作为该工具集内所有工具的默认值; - 单工具级:在
configs中对某个具体工具设置同名字段,覆盖工具集级默认值。
always_allow 评估——模型调用该工具时会直接执行。每次工具调用的评估结果都会通过 agent.tool_use 事件的 evaluated_permission 字段下发给客户端。
处理 always_ask 确认
设为always_ask 的工具被模型调用时,平台发送 agent.tool_use 事件后暂停执行,等待客户端通过 POST /v1/sessions/{session_id}/events 回复 user.tool_confirmation。平台收到确认结果后,再执行或跳过该工具调用。事件订阅与恢复方式见 事件流。
来源 agent.tool_use 事件外层的 id 就是要填写的 event_id。允许执行时,将 result 设为 allow:
result 改为 deny,并可添加 deny_message 说明原因;允许执行时该字段必须为空。请求必须只包含工具确认事件,成功提交返回 202。
配置工具权限
在 创建智能体 时,通过工具声明携带这两个字段。已有智能体也可以修改这两个配置:更新智能体 时传入tools 字段即可(tools 会整体替换当前工具声明),更新会生成新的智能体版本,无需重建。下面的示例为内置工具集设置默认自动放行,并把其中的写文件工具单独禁用:
MCP 工具集
MCP 工具集同样在default_config 和 configs 中设置 enabled 与 permission_policy。mcp_server_name 必须引用同一智能体 mcp_servers 中已声明的服务;configs[].name 使用该 MCP 服务实际提供的工具名。
configs 的生效规则见 接入 MCP。
下一步
配置工具权限策略
了解内置工具集与 MCP 工具的声明方式。
处理工具确认事件
实时接收工具调用与会话状态事件。