Qwen Code v0.25.1-preview.2 Caps Foreground Subagents per Model and Lands the H4-H6 Managed-Agent Contracts
Qwen Code v0.25.1-preview.2 enforces the per-model concurrency cap on foreground subagents, defers agent and goal declarations by default, and lands H4 child-agent, H5 channel and H6 automation record contracts plus a cross-node EventTransport design.
Qwen Code has tagged the third preview of its 0.25.1 line, and it is the release where the managed-agent roadmap sketched in preview.0 starts landing as durable contracts. Release v0.25.1-preview.2 went out from the qwen-code-review-bot on 10 October at 18:14 UTC at commit d381509, still carrying the pre-release label. The releases index shows the week’s cadence: preview.0 on 6 October, preview.1 on 9 October at 05:35, preview.2 on 10 October.

The headline change: foreground subagents hit the per-model cap
The entry operators will act on first is fix(agent): enforce per-model concurrency cap on foreground sub-agents (#12461). The per-model concurrency cap now binds foreground sub-agents, so a coordinator that spawns child agents inline during a turn hits the ceiling you configured for that model instead of fanning out unchecked. If you meter subagent token cost at fan-out, this is the enforcement point the foreground lane was missing.
Two related entries reshape how agents get declared and talk to each other. feat(core): defer agent and goal declarations by default (#13033) defers agent and goal declarations, and feat(agents): remove the thread backend and run A2A on sessions (#13583) — alongside session-centric multi-agent collaboration (#13467) — moves collaboration onto sessions as the unit of work. That matters to anyone running subagent orchestration patterns across a fleet.
H4, H5 and H6 arrive as record contracts
Preview.0 shipped the H4/H5/H6 slice designs as documents (#13499). The v0.25.1-preview.2 changelog lists them implemented, with named record contracts at each stage:
- H4 child agents. H4a child agent and child acceptance record contract (#13505), H4b child Session runtime (#13550), H4c workflow child kind and child launch budget (#13754), H4d-a session message record contract and child continuation rules (#13786), H4d-b session message runtime (#13822), H4e-a team record contract (#13811) with H4e-b1 lead-side team runtime (#13824), H4f public task cancel for child agent tasks (#13823), worktree admission for managed child agents (#13841), child Workspace capability for managed child Sessions (#13781) and restart-recoverable foreground child wait (#13769).
- H5 channels. Stage H5 channel contracts and persistence (#13497), H5a channel route and delivery record contract (#13548), and H5b/H5c channel runtime for the email reference adapter (#13572).
- H6 automation. H6a schedule and automation run record contract (#13536) and H6b/H6c automation runtime for persistent definitions (#13598).
Underneath those stages, the EventTransport message-envelope contract (#13498) and the cross-node EventTransport design (#13500) define the envelope messages travel in, with docs naming RocketMQ LiteTopic 5.5.0+ as the preferred P2 EventTransport candidate (#13826). The hosted harness also moves a generation, to G3 (#13174).
“Record contract” is the operative phrase for operators. Acceptance, route, delivery, schedule and run records are the audit trail you replay when a managed fleet does something surprising — the evidence discipline behind fleet replay.
Guardrails and fixes worth an audit pass
| Changelog entry | PR | Operator takeaway |
|---|---|---|
| Show captured inputs in native approval cards | #13407 | Approval cards expose what the agent captured |
| Read bounded approval input previews | #13400 | Oversized previews stop blowing up cards |
| Escalate repeated destructive-command denials to manual approval | #13636 | Repeat denials escalate instead of looping |
| Stop MCP server rules from authorizing a colliding server | #12531 | A rule cannot bless a colliding server name; re-check your MCP inventory |
| Never honor memory agent budgets from workspace scope | #13508 | Move workspace-scope memory budgets to user scope |
| Recognize llama.cpp context-overflow wording so compaction runs | #13421 | Local llama.cpp lanes compact instead of failing |
| Recover function-style XML tool calls | #13437 | Function-style XML tool calls are recovered |
| Preserve GLM vision metadata for dashed model IDs | #13651 | Dashed GLM IDs keep vision metadata |
| Key the models.dev catalog under dotted as well as dashed ids | #13299 | Catalog lookups survive both ID spellings |
Should you move a lane onto it?
Treat it as a preview. The tag carries the pre-release label, and the release page lists 14 platform assets built from it, crediting wenshao, doudouOUC and 18 other contributors, with five first-time contributors landing changes. The stable line remains Qwen Code 0.25.0. A reasonable rollout: one canary lane on the preview tag, per-model caps set explicitly, memory budgets moved out of workspace scope, MCP server rules re-checked for name collisions, and approval cards watched for the new captured-input display.
One caveat runs through all of this: the release notes are PR titles. They tell you what landed, not how each change is implemented, and we have not run this build. Verify scope in the linked pull requests before depending on a specific behavior.
For readers new to the tool: Qwen Code is the open-source, Apache-2.0 coding agent from the QwenLM project that runs in the terminal, editor, desktop, browser and chat — 28.4k stars on GitHub, installed through its standalone script, npm with Node 22+, or Homebrew. The official docs cover the surfaces fleet operators lean on: headless qwen -p runs for scripts and CI, the qwen serve daemon for multi-client HTTP and SSE access, and TypeScript, Python and Java SDKs.