跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Subagent 权限与工具

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

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

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