Repository navigation
Agent chat: a stopped subagent's line says why (stopped by you, interrupted by Send now) and offers Restart - #24051
Conversation
…rupted by Send now) and offers Restart Leo: "UI ALSO NEEDS TO BE BETTER". Lines read "Subagent stopped: <name> · 17m 6s" with no reason and no way to run the subagent again. - The reason comes from what the pane knows: a foreground subagent stopped while a Send now's cancel (its queue_order) or this pane's Stop was ending the turn, or a subagent this pane asked to stop (_acpmux/subagent_stop). Anything else (Claude's own TaskStop, another client's cancel, a Codex interrupt) shows no reason rather than a guess. Reasons survive the fold's rebuilds; a Send now's survives a reload (acpmux records it). - Restart, on hover or focus, on a stopped, failed or lost subagent of the chat's own whose prompt acpmux recorded: it sends the chat a prompt asking its agent to run that subagent again with its kind and prompt, through the composer's chat.send (as Retry does). No new backend op. - New strings in all 21 languages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: Tour of |
|
Found 10 test failures on Blacksmith runners: Failures
|
|
Owned by transcript-parity on cosmic-gray · session |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
|
Bead |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
|
|
|
Review (codex xhigh, correctness first): BLOCK at 404ee07
Localization is complete: the six added catalog keys each have all 21 supported locales, and |
…erun forgets its old reason; Restart guarded like the composer Codex xhigh review of #24051 (BLOCK at 404ee07): - A stale turn cause could label a subagent an earlier turn started: the cause now applies only to subagents the current turn started. - A reason survived a subagent running again: it is forgotten then. - Restart now shows only for the chat the pane shows, not View Only, not in a subagent's read-only pane, and a row left over from a chat switch sends nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
|
Review (codex xhigh, correctness first): BLOCK at e04ab85
The three prior findings are otherwise addressed: turn causes are limited to agents in the current turn ( |
…chat during a switch's hold Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
|
Review (codex xhigh, correctness first): SHIP at 6f1eec4 The two prior blockers are fixed:
Localization is complete: all six added keys have all 21 locales with matching Non-blocking nit: the new Restart routing helpers are unit-tested, while the full App/direct-client switch-hold interaction is covered by static identity checks rather than UI automation. |
…r (no reordering churn) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
|
Review (codex xhigh, correctness first): SHIP at 15e53fe The requested base-update and catalog checks pass:
Non-blocking nit: the full App/direct-client switch interaction remains covered by static identity checks and helper tests rather than UI automation. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39766181620 at 81640d1 failed: cmux-next web bundles (source-keyed cache). |
|
base-red-watch: |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39767073305 at aa8d973 failed: cmux-next web bundles (source-keyed cache). |
|
base-red-watch: |
|
Shipped in:
|
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo: "UI ALSO NEEDS TO BE BETTER". A subagent's end line in the agent chat read
Subagent stopped: <name> · 17m 6s: fine as info, but it never said why the subagent stopped, and there was no way to run it again.What changes
cancelled) subagent's line now adds why it stopped, when the pane knows:Subagent stopped: Check the docs · stopped by you · 1m 36s, or· interrupted by Send now ·. The reason comes from data the pane already has:queue_orderrecord that setsinterruptingin direct.ts). acpmux records this, so the reason survives a reload;stopAfterSeq), or any subagent this pane stopped from its own Stop button (_acpmux/subagent_stop). Both read stopped by you. These are known only to the live pane: the reasons survive the fold's rebuilds, but a page reload loses them, because acpmux records no cause for a cancel;Subagent finished:andSubagent failed:. Claude'stask_notificationstatus maps through acpmux's adapter (failed→ failed,stopped→ cancelled, else completed) and arrives as the line's state.Run the Explore subagent "Check the docs" again with the same prompt:followed by the original prompt. The original prompt is thepromptacpmux already records onsubagent_spawned, and the send goes through the composer'schat.send, as Retry does. It shows only for the chat's own subagents with a recorded prompt and a connected chat. No new backend op.Tests
subagents/subagentFold.test.ts: reason mapping (Send now, Stop, pane Stop request, background subagent, stopRunning, rebuild survival, running again forgets, unknown → none, finished/failed carry none).subagents/restart.test.ts: when Restart is offered; the prompt text (with and without kind; braces in the prompt kept as is).test/subagent-tray.test.tsx: the rendered line with each reason and with none; Restart wiring (click →restartSubagent(agent); none for finished or no-prompt lines; none without the action).Before / after (gallery, synthetic fixtures)
agent-pane.subagent-tray:failed-linenow shows a failure, both reasons and an unknown one; the newrestart-on-hovervariant shows the focused Restart button. Live side by side:scripts/gallery-compare.sh tp/subagent-stopped-reason --entry agent-pane.subagent-tray(tailnet).Tests run on cmux16 at the head: 33 pass, 0 fail;
vp checkfinds no type errors in 2284 files.What the base already fixed (vs Leo's nightly 03960f5)
Nothing for this item: #23104, #24031, #24087 and #23962 changed when subagents end and how the tray counts them, but the stopped line still had no reason and no Restart.
Web only (no Swift). risk:normal.
Agent session: cosmic-gray
🤖 Generated with Claude Code