Skip to content

[Feature]: /tasks command — User-facing task status dashboard via IM channels #54226

Description

@capjason

Summary

Add a /tasks slash command that returns a real-time aggregated status panel of all running tasks (sub-agents, ACP sessions, long-running operations) directly in the user's IM channel (Discord, Telegram, WhatsApp, etc.).

Problem

When OpenClaw runs complex, long-running tasks (coding via ACP harness, multi-step research, parallel sub-agents), the user in the IM channel has zero visibility:

  • Is it running? No indication after the initial acknowledgment.
  • Is it stuck? No heartbeat or liveness signal.
  • What phase is it in? No progress reporting.
  • How long will it take? No ETA or time estimate.
  • Did it fail silently? ACP sessions can die without notifying the parent (ACP sessions silently fail/die without completion events #52452).

The user is forced to either wait blindly or repeatedly ask "are you still working on it?" — which is a terrible UX for tasks that can take 10-30+ minutes.

Existing commands gap

The closest existing command is /subagents list, but it:

/acp status is scoped to a single ACP session and also lacks progress/phase info.

Proposed Solution

/tasks command

A user-invokable command (via IM slash command, or natural language like "tasks" / "task status") that returns:

📋 Active Tasks

1. 🟢 Fix webhook retry logic
   ├ Type: ACP (Claude Code)
   ├ Phase: 4/6 · Running tests
   ├ Elapsed: 12m08s
   ├ Last activity: 15s ago
   └ ETA: 5-10 minutes

2. 🟡 Organize API docs
   ├ Type: Sub-agent
   ├ Phase: Waiting for parent to merge results
   ├ Elapsed: 3m22s
   └ Last activity: 2m ago

3. ✅ Database migration script (completed 5m ago)

💤 No active tasks → "All clear — nothing running right now."

Required data per task

Field Source Current status
Task title / description Caller provides at spawn time (task param) Available
Task type Runtime type (subagent / acp) Available
Status (running / waiting / blocked / failed / completed) Session state Partially available via sessions_list
Current phase / step Agent self-reports or harness exposes Not available — needs #29569
Elapsed time Session start timestamp Available
Last activity timestamp Last tool call / output Not available — needs platform support
ETA estimate Agent self-reports or heuristic Not available

Implementation layers

Layer 1 — Platform (OpenClaw core):

  • Expose last_activity_at on sessions (timestamp of last tool call, message, or output)
  • Include ACP sessions in sessions_list / subagents list responses (currently invisible per ACP sessions silently fail/die without completion events #52452)
  • Add optional phase / progress metadata field that agents can set via a tool call (e.g., session_update(phase="running tests", progress="4/6"))
  • Register /tasks as a built-in slash command that triggers the aggregation

Layer 2 — Agent behavior (workaround until platform support):

  • Agent maintains a local task registry file
  • On spawn, agent records task metadata
  • On status query, agent reads registry + calls sessions_list to cross-validate
  • Limitation: agent cannot see ACP internal state; stale if agent process restarts

UX design principles

  1. Pull-based, zero push notifications. The user queries when they want to check. This avoids the fundamental IM problem of "every status update = a notification = an interruption."
  2. Cross-session global view. Show all tasks across all sessions for this user, not scoped to one session.
  3. Semantic, not technical. Show task titles and phases, not session keys and process IDs.
  4. Render per-channel. Adapt format for Discord (components v2), Telegram (monospace), WhatsApp (plain text + emoji).

Related Issues

Additional Context

This feature request emerged from real-world usage where the operator interacts with OpenClaw exclusively through Discord. For complex coding tasks delegated to ACP harnesses (Codex, Claude Code), the operator currently has no way to check task status without interrupting the agent's work or waiting blindly for completion.

The /tasks command would serve as the IM-native equivalent of a task manager / mission control panel.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions