Skip to content
FunCoding

Search

Search docs, Skills and MCP

Subagent 权限与工具

理解父模式优先级、Auto 继承、bubble 审批和工具执行范围。

This page has not been translated into English yet. The original Chinese version is shown below.

Subagent 的角色提示、审批模式和工具集合是不同层次。正文写“只读”是行为指令;要缩小可执行操作,还应明确提供哪些工具,并核对父会话的实际模式。

父会话如何影响模式

官方专章列出 default、plan、auto-edit、yolo、bubble。当前 Agent 实现还明确处理 auto 的继承:

场景模式选择
父级为 yolo、auto-edit 或 auto优先继承父级模式,即使定义写了更严格模式
其他父模式且定义显式指定模式进入定义模式的解析与信任检查
没有显式模式,父级为 plan保留 plan
没有显式模式,可信目录内的 default 父级使用 auto-edit
不可信目录要求自动授权模式不接受该定义提权,回退父模式

因此在 Auto 父会话下,子级仍接受分类器审批,而不是自动退回每次手动询问。approvalMode: plan 也不能单独作为跨父模式的只读保证。审批规则、工具可用性及其他运行时限制仍会继续生效;不要用委派尝试绕过主会话的分析范围。

bubble 用于把后台工具审批交给父会话,底层按需要确认的行为运行;它不是跳过审批的别名。模式细节见审批模式。

用白名单表达任务边界

tools:
  - read_file
  - grep_search
  - glob

声明 tools 时只保留列出的工具;省略时继承父级可用工具。disallowedTools 在白名单之后进一步剔除,permissions.deny 也仍然有效。仅列出某工具,不会绕过 subagent 控制类工具的排除规则。

如果要继承其余工具但排除某类能力,可使用 disallowedTools。只排除文件写入工具而保留 shell 或可写 MCP,不应被称为全面只读。

延迟工具与 Code Mode

普通延迟工具的白名单同时约束直接声明和 tool_search / tool_call 桥接目标。需要桥接发现与调用时,应显式列出两个桥接工具以及允许的目标;只列普通工具不会自动得到桥接工具。

普通已列出的延迟目标可以直接声明,但被 tools.eager 降为隐藏的目标仍可能需要其他显式展示规则。目标即使隐藏,也必须在白名单中才能通过桥接调用。

Code Mode,即 tools.codeModeOnly,使用另一条路径:没有 tool_call;若 agent 获准使用可从 exec 调用的工具,会自动获得 tool_search,除非 disallowedTools 明确禁用它。被 tools.eager 隐藏的工具仍可从 exec 调用。因此减少声明不等于禁止执行。

MCP 工具

没有 tools 列表时继承父会话 MCP 工具;显式列表则只包含其中明确列出的 MCP 工具。阻止规则可以针对单项 mcp__server__tool_name,或针对整个服务器 mcp__server。

disallowedTools:
  - mcp__slack

工具权限不代替进程隔离;需要文件系统或网络边界时,结合沙箱核对具体执行路径。