[FEATURE] Cowork Dispatch should proactively notify user when child tasks complete

Resolved 💬 3 comments Opened Apr 28, 2026 by leedan-meetpeeps Closed May 1, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

When Cowork Dispatch spawns child tasks via start_task or start_code_task, completions don't reliably surface to the user. Even when the user is actively in the conversation, Dispatch frequently fails to relay a completed child until the user prompts with something like "is X done?" or "any updates?". This forces the user into a polling pattern instead of getting pushed updates.

Concrete example (2026-04-27): Across one ~25-turn Dispatch session orchestrating a typical multi-task workflow (~15 child tasks spawned), roughly half of completions required me to ask before they were relayed, despite the system clearly knowing they were done — I'd see system reminders saying "Task X completed. Use read_transcript..." but Dispatch wouldn't act on them without a user nudge.

What's narrow about this: even for self-spawned children where Dispatch DOES receive a system reminder saying "Task X completed", the model waits for a user prompt before acting. The signal is present; the model behavior is the gap.

Proposed Solution

Ranked from cheapest to most architectural:

  1. System-prompt change (cheapest fix — pure orchestration behavior): have Dispatch run a list_sessions check at the start of every user turn and proactively relay any newly-idle children BEFORE responding to the user's new message.
  2. Push-trigger architecture: when a child task completes, fire a system message into the Dispatch session that triggers a turn for it to relay the completion, even if the user hasn't messaged.
  3. UI surface: a "Tasks" tray/inbox in the Cowork sidebar that shows newly-idle child sessions with badges, so the user can see at a glance what's complete.

Any one of these would close the gap.

Alternative Solutions

Failed workaround attempt: I tried building a 5-min cron heartbeat that scans for completed-but-un-relayed child sessions and surfaces them. Spent meaningful time wiring up a ledger and a scheduled task. Disabled it within the day because the scheduled-task notification surface ALSO doesn't reach the user — notifyOnCompletion: true digests land in sibling sessions that the user doesn't see. So the workaround hit a deeper version of the same gap. (I'll file the scheduled-tasks-notification gap as a separate issue if it's not already known.)

Priority

Medium - Would be very helpful

Feature Category

Other

Use Case Example

Reproduction: Open a Cowork Dispatch session. Spawn 10–15 child tasks via start_task or start_code_task. Continue interacting with Dispatch on other matters. Observe that approximately half of child completions are not relayed until the user explicitly asks "is X done?" or "any updates?". Despite the parent session receiving system reminders confirming completion, the model defers acting on them.

Related issues (overlapping symptoms, different framings):

  • #43960 — "Dispatch/Cowork should have visibility into all Claude Code sessions" — captures the "user has to ask Dispatch about child tasks" symptom but frames as a visibility gap rather than a model-behavior gap.
  • #33563 — "Cowork scheduled tasks should send feedback back to parent session/inbox" — adjacent: scheduled-task → parent feedback channel.
  • #32085 — "Background agent resume creates retry loop, model doesn't wait for completion" — same architectural failure: model not auto-acting on completion signals.
  • #21048 — "Background task completion notification not appearing" — closest semantic match.
  • #24983 — "External event sources to trigger messages in active conversation" — acknowledges no mechanism to wake an active session.

This issue is narrower than any of those: even for self-spawned children where Dispatch DOES receive a system reminder saying "Task X completed", the model waits for a user prompt before acting. The signal is present; the model behavior is the gap.

Cowork is a research preview and the orchestration loop is hard — appreciate the work going in. This particular gap was the most-felt friction point in a real session.

Additional Context

_No response_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗