mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-28 11:41:04 +00:00
feat(subagents): propagate approval mode to sub-agents (#3066)
* feat(subagents): propagate approval mode to sub-agents Replace hardcoded PermissionMode.Default with resolution logic: - Permissive parent modes (yolo, auto-edit) always win - Plan-mode parents keep sub-agents in plan mode - Agent definitions can declare approvalMode in frontmatter - Default fallback is auto-edit in trusted folders - Untrusted folders block privileged mode escalation Also maps Claude permission aliases (acceptEdits, bypassPermissions, dontAsk) to qwen-code approval modes in the converter. * fix(subagents): correct dontAsk mapping and add approval mode resolution tests Map Claude's `dontAsk` to `default` instead of `auto-edit` — `dontAsk` denies prompts (restrictive) so `default` is a closer semantic match. Add 9 unit tests covering the full `resolveSubagentApprovalMode` decision matrix: permissive parent override, agent-declared modes, trusted/untrusted folder blocking, and plan-mode fallback. * test: remove flaky InputPrompt tab-suggestion test on Windows
This commit is contained in:
parent
b3bc42931e
commit
0026777828
7 changed files with 294 additions and 29 deletions
|
|
@ -99,10 +99,10 @@ Subagents are configured using Markdown files with YAML frontmatter. This format
|
|||
name: agent-name
|
||||
description: Brief description of when and how to use this agent
|
||||
model: inherit # Optional: inherit or model-id
|
||||
tools:
|
||||
- tool1
|
||||
- tool2
|
||||
- tool3 # Optional
|
||||
approvalMode: auto-edit # Optional: default, plan, auto-edit, yolo
|
||||
tools: # Optional: allowlist of tools
|
||||
- tool1
|
||||
- tool2
|
||||
---
|
||||
|
||||
System prompt content goes here.
|
||||
|
|
@ -118,6 +118,38 @@ Use the optional `model` frontmatter field to control which model a subagent use
|
|||
- `glm-5`: Use that model ID with the main conversation's auth type
|
||||
- `openai:gpt-4o`: Use a different provider (resolves credentials from env vars)
|
||||
|
||||
#### Permission Mode
|
||||
|
||||
Use the optional `approvalMode` frontmatter field to control how a subagent's tool calls are approved. Valid values:
|
||||
|
||||
- `default`: Tools require interactive approval (same as the main session default)
|
||||
- `plan`: Analyze-only mode — the agent plans but does not execute changes
|
||||
- `auto-edit`: Tools are auto-approved without prompting (recommended for most agents)
|
||||
- `yolo`: All tools auto-approved, including potentially destructive ones
|
||||
|
||||
If you omit this field, the subagent's permission mode is determined automatically:
|
||||
|
||||
- If the parent session is in **yolo** or **auto-edit** mode, the subagent inherits that mode. A permissive parent stays permissive.
|
||||
- If the parent session is in **plan** mode, the subagent stays in plan mode. An analyze-only session cannot mutate files through a delegated agent.
|
||||
- If the parent session is in **default** mode (in a trusted folder), the subagent gets **auto-edit** so it can work autonomously.
|
||||
|
||||
When you do set `approvalMode`, the parent's permissive modes still take priority. For example, if the parent is in yolo mode, a subagent with `approvalMode: plan` will still run in yolo mode.
|
||||
|
||||
```
|
||||
---
|
||||
name: cautious-reviewer
|
||||
description: Reviews code without making changes
|
||||
approvalMode: plan
|
||||
tools:
|
||||
- read_file
|
||||
- grep_search
|
||||
- glob
|
||||
---
|
||||
|
||||
You are a code reviewer. Analyze the code and report findings.
|
||||
Do not modify any files.
|
||||
```
|
||||
|
||||
#### Example Usage
|
||||
|
||||
```
|
||||
|
|
@ -501,6 +533,7 @@ Always follow these standards:
|
|||
## Security Considerations
|
||||
|
||||
- **Tool Restrictions**: Subagents only have access to their configured tools
|
||||
- **Permission Mode**: Subagents inherit their parent's permission mode by default. Plan-mode sessions cannot escalate to auto-edit through delegated agents. Privileged modes (auto-edit, yolo) are blocked in untrusted folders.
|
||||
- **Sandboxing**: All tool execution follows the same security model as direct tool use
|
||||
- **Audit Trail**: All Subagents actions are logged and visible in real-time
|
||||
- **Access Control**: Project and user-level separation provides appropriate boundaries
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue