# Subagent 权限与工具

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

- 网址：https://funcoding.ai/agents/qwen-code/customize/subagent-permissions/
- 核实日期：2026-10-08（命令、配置和价格以官方文档为准）
- 官方来源：[Qwen Code 官方文档：Subagents](https://github.com/QwenLM/qwen-code/blob/main/docs/users/features/sub-agents.md)、[Qwen Code 官方文档：Agent 权限实现](https://github.com/QwenLM/qwen-code/blob/main/packages/core/src/tools/agent/agent.ts)、[Qwen Code 官方文档：Approval Mode](https://github.com/QwenLM/qwen-code/blob/main/docs/users/features/approval-mode.md)

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

## 父会话如何影响模式

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

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

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

`bubble` 用于把后台工具审批交给父会话，底层按需要确认的行为运行；它不是跳过审批的别名。模式细节见[审批模式](https://funcoding.ai/agents/qwen-code/usage/approval-mode/)。

## 用白名单表达任务边界

```yaml
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`。

```yaml
disallowedTools:
  - mcp__slack
```

工具权限不代替进程隔离；需要文件系统或网络边界时，结合[沙箱](https://funcoding.ai/agents/qwen-code/configuration/sandbox-troubleshooting/)核对具体执行路径。
