Task Lifecycle
Every task in Agent HQ follows a defined lifecycle from creation to completion.
Statuses
Section titled “Statuses”backlog → queued → processing → done → failed → blockedBacklog
Section titled “Backlog”The starting state. Tasks in the backlog are defined but not yet scheduled to run. They sit in the leftmost column of the task board.
Queued
Section titled “Queued”The task is scheduled to run and waiting for an available execution slot. Tasks move to this status when you drag them to “In Progress” or when Pilot creates them for immediate execution.
Processing
Section titled “Processing”The task is actively running in a sandbox. You can watch real-time execution logs, see code being written, and monitor progress.
The task completed successfully. Output, files, and any generated pull requests are available for review.
Failed
Section titled “Failed”The task encountered an error during execution. You can inspect the execution logs to understand what went wrong, then retry or modify the task.
Blocked
Section titled “Blocked”The task requires human intervention — typically an approval decision. See Approvals for the approval workflow.
State transitions
Section titled “State transitions”| From | To | Trigger |
|---|---|---|
| Backlog | Queued | User runs the task or Pilot schedules it |
| Queued | Processing | Execution slot becomes available |
| Processing | Done | Task completes successfully |
| Processing | Failed | Task encounters an unrecoverable error |
| Processing | Blocked | Task requires approval |
| Blocked | Processing | User approves the task |
| Blocked | Failed | User rejects the task |
| Failed | Queued | User retries the task |
| Done | Queued | User reruns the task |
Interrupting a task
Section titled “Interrupting a task”You can stop a running task at any time by clicking the Interrupt button in the task detail view. This halts execution immediately. The task moves to a failed state, and you can review any partial output.
Timing
Section titled “Timing”Each task tracks:
- created_at — when the task was created
- started_at — when execution began
- completed_at — when execution finished
This lets you see how long each task took to execute.