OpenClaw Main Streams Live Subagent Work—and Stops Calling Non-Delivery Delivered
Web, Apple and Android clients gain live task rows and edit counters, while the Gateway now records sinkless or requester-settled results as intentional non-delivery.
OpenClaw has merged the missing operator view for delegated work: task events can carry live subagent activity and edit counters, and official web, Apple and Android clients render that work inside the parent chat.
A related correctness fix changes what completion records mean. Results intentionally handed back to a waiting requester—or suppressed because an isolated cron run is inactive and has no sink—are no longer persisted as if a transport delivered them.
Together these changes improve both sides of supervision: what the worker is doing now, and what actually happened to its result.
Availability: these changes are on main; mixed-version clients may not render the new rows even when the Gateway emits them.
Live activity is observation, not a transcript
PR #121549 extends task events with bounded current activity rather than inventing a second task system. The clients then render per-subagent rows and live edit progress:
- PR #121840 covers Control UI;
- PR #121815 covers macOS and iOS; and
- PR #121813 covers Android.
The useful operator question changes from “three background tasks exist” to “which task is active, what phase is it in, and are edits accumulating?” That can expose stalls and duplicate work earlier.
Do not treat the row as durable forensic evidence. Live activity can be sampled, coalesced or absent after reconnect. The final task record, session transcript, workspace diff and delivery outcome remain the authoritative artefacts for post-incident review.
Delivered now means a transport delivered
PR #121837 fixes two intentional non-delivery paths that were incorrectly stored as delivered:
- requester settlement, where the result is consumed by the waiting parent path rather than sent over a channel; and
- an inactive isolated cron run with no delivery sink, where transport delivery is intentionally suppressed.
The false state previously leaked into /subagents, maintenance, steering and sweeper decisions. The new distinction may make dashboards appear to have more non-delivery after upgrade. That can be a correction in accounting rather than a new transport regression.
A separate merged fix reports best-effort delivery failures instead of allowing them to vanish behind completion. Operators should alert on actual failed delivery while excluding explicitly intentional non-outcomes.
Rollout checklist
- run one parent with two synthetic subagents and confirm all official clients show the same task identities and terminal states;
- make one worker produce edits and prove counters advance without exposing patch contents in the summary row;
- disconnect and reconnect each client, then compare the reconstructed display with durable task inspection;
- settle one result through a waiting requester and require an intentional non-delivery outcome—not
delivered; - complete one inactive sinkless cron run and require no channel send plus the same truthful non-outcome;
- force a best-effort transport failure and require a failed-delivery diagnostic distinct from intentional suppression; and
- verify cleanup,
/stopand Gateway restart do not resurrect finished rows or duplicate final announcements.
Build alerts around explicit outcome classes. A single rule that pages on every non-delivered record will turn intentional requester settlement into noise.
Bottom line
Live subagent rows make parallel work less of a black box. Truthful delivery state makes the record less of a liar. Use the first for supervision and the second for automation; preserve durable task and transcript evidence for investigations.
THE RECEIPTS
Claims should survive the click.
Primary links used for this article are listed openly. If the evidence changes, the verification date changes with it.THE OPERATOR BRIEF