Qwen Code v0.25.1 Ships Stable: Session-Centric Multi-Agent Work, A2A on Sessions, and a Same-Day Desktop and SDK Train
Qwen Code's stable v0.25.1 moves multi-agent work onto sessions, removes the thread backend behind A2A, and lands with Desktop v0.25.1 and TypeScript SDK v0.1.19 bundling the same CLI. What operators should canary, pin and re-check.
Qwen Code’s stable line reached v0.25.1 on October 11, when qwen-code-review-bot published the release on GitHub at 10:20. The release page reports “No known breaking changes” against a full changelog running v0.25.0 to v0.25.1. Two companion releases followed within about 80 minutes: Qwen Code Desktop v0.25.1 at 11:31 and TypeScript SDK v0.1.19 at 11:42, whose notes state it bundles CLI 0.25.1 “built from source (same branch/ref as SDK)”. The project’s releases index shows all three at the top of the list — one version number operators can align the CLI, desktop app and SDK-driven harness lanes on.

The GA, not the preview runway
Earlier articles covered the previews: v0.25.1-preview.0 introduced an experimental Kubernetes CSI runtime and M5b durable local outcomes, and v0.25.1-preview.2 added per-model foreground subagent caps and the H4-H6 managed-agent contracts. v0.25.1 is the tag fleets actually pin, and its consolidated list carries session-centric multi-agent work neither preview article covered, building on the advisor tool and Managed Runtime v2 that arrived in 0.25.0.
Session-centric multi-agent work
The most consequential cluster in the notes:
- Session-centric multi-agent collaboration (#13467), and removal of the thread backend, with A2A run on sessions (#13583).
- Worktree admission for managed child agents (#13841) and a child Workspace capability for managed child sessions (#13781).
- Restart-recoverable foreground child wait (fixes #13708, #13769), so a parent restart no longer drops a blocking wait on a child.
- Public task cancel for child agent tasks (#13823).
- Pinned AgentDefinition revisions execute (#13530), so a fleet run can be pinned to an exact agent definition revision instead of drifting with the latest edit.
- Workspace actor roles enforced across the bound-Session surface (#13545).
What readers can do: if you coordinate Qwen Code agents across worktrees or child sessions, the coordination surface is now the session itself — cancellable, restart-tolerant and role-checked. One caveat deserves a canary pass: the notes list the thread-backend removal under features while also claiming “No known breaking changes”, exactly the kind of tension a canary lane exists to resolve. Canary every CLI upgrade before promoting it to unattended lanes, and re-check your subagent orchestration patterns against the session model.
Hooks, trajectory and headless control
- PreToolUse
updatedInputnow applies with full revalidation (#13442): the release notes document that input rewritten by a hook is revalidated in full before the tool runs; they do not establish which permission paths re-check rewritten input, so re-test any hook that rewrites tool input against your own permission and validation gates. - Trajectory tooling matured: record and replay of the request lifecycle (#13755), native tool execution lifecycles recorded (#13836) and preserved model request execution identity (#13740), alongside web-shell trajectory search and earlier-window browsing (#13264, #13716).
- Experimental headless Mod commands (#13843) point toward scriptable Mods outside the TUI.
- Repeated destructive-command denials escalate to manual approval (#13636).
Daily-driver fixes
- QWEN.md and AGENTS.md discovery now stops at the Git root (#13381), so instruction files above the repository no longer enter requests.
- The parent model is told why a foreground subagent stopped (#13624).
- MCP permission rules for one server can no longer authorize a different colliding server (#12531).
- llama.cpp context-overflow wording is recognized so compaction runs instead of looping on HTTP 400 (#13421).
- Extension Git operations fail immediately without credentials instead of stalling (#13454).
- Full extension scans speed up by loading directories in bounded parallel batches (#13379).
- Complete file reads stay on one opened source (#13776), and unknown
${identifier}placeholders stay literal in subagent prompts (#13694).
The Desktop and SDK lanes
The Desktop v0.25.1 notes add Qwen Live endpoint and model settings (#12529), separate private and group channel access policies (#12547), opt-in mobile access (#12537) and a QWEN_DESKTOP_DISABLE_UPDATES opt-out for the startup update check (#12587). One perf entry claims to “halve fresh-startup time to typeable and cut RSS by 60%” (#12622) — a vendor-stated number; measure it on your own machines before believing it.
The SDK v0.1.19 release is the bundling story: its notes state the bundled CLI 0.25.1 is built from source on the same branch/ref as the SDK itself, and the SDK tag points at commit 73ee616 while the CLI and Desktop tags point at c1a8218. Matching version numbers therefore do not lock lanes together by themselves; they give operators a single CLI version to align harness, desktop and CLI lanes on deliberately, after their own verification.

| Lane | Version | Published 11 Oct (GitHub) | Notable |
|---|---|---|---|
| CLI | v0.25.1 | 10:20 | Session-centric agents, A2A on sessions, no known breaking changes |
| Desktop | v0.25.1 | 11:31 | Qwen Live settings, channel access policies, mobile access opt-in |
| TypeScript SDK | v0.1.19 | 11:42 | Bundles CLI 0.25.1 built from the SDK’s own ref |
What to do now
The official overview documents the standalone installer, with an npm fallback that requires Node.js 22 or later:
curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
For offline lanes the docs describe running the installer with --archive PATH and keeping SHA256SUMS next to the archive — worth doing wherever you need to prove provenance. Then: canary v0.25.1 on one interactive lane before pinning fleets; re-test hook scripts that rewrite tool input against the PreToolUse revalidation; inventory anything that depended on the thread backend; and if you run the desktop app, decide your update-check posture now that QWEN_DESKTOP_DISABLE_UPDATES exists.