Skip to content

Task Lifecycle

Every task in Agent HQ follows a defined lifecycle from creation to completion.

The task board displays three columns:

ColumnShowsDescription
Backlogbacklog tasksTasks waiting to be run
In Progressqueued, processing, blocked, and failed tasksTasks that are actively being worked on or need attention
Donedone tasksCompleted tasks

When you drag a task between columns, Agent HQ sets the appropriate underlying status (e.g. dragging to In Progress sets it to queued).

Each task has one of six statuses:

The starting state. Tasks in the backlog are defined but not yet scheduled to run.

The task is scheduled to run and waiting for an available execution slot. Tasks move here when you drag them to In Progress or when Pilot creates them for immediate execution.

The task is actively running in a sandbox. You can watch real-time execution logs, see code being written, and monitor progress. Processing tasks are sorted to the top of the In Progress column.

The task completed successfully. Output, files, and any generated pull requests are available for review.

The task encountered an error during execution or was interrupted. Failed tasks remain in the In Progress column so you can easily retry them.

The task requires human intervention — typically an approval decision. See Approvals for the approval workflow.

FromToTrigger
BacklogQueuedUser runs the task or Pilot schedules it
QueuedProcessingExecution slot becomes available
ProcessingDoneTask completes successfully
ProcessingFailedTask encounters an error
ProcessingBlockedTask requires approval
BlockedProcessingUser approves the task
BlockedFailedUser rejects the task
FailedQueuedUser retries the task
DoneQueuedUser reruns the 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.

Each task tracks:

  • created_at — when the task was created
  • started_at — when execution began (set on first queue or processing transition)
  • completed_at — when execution finished successfully