Skip to main content

Task statuses

Every tool call, subagent run, and batch your AI Agent starts becomes a task. This page lists every status a task can be in, what each status means, and what triggers the next transition.

Use this page as a reference when you see a status in the Dashboard and want to know exactly what it means.


Status summary

StatusGroupMeaning
pendingQueuedTask created, not yet started.
scheduledQueuedTask queued for later execution (for example, a batch item waiting for its turn).
approvedQueuedTask was approved by a human and is queued to run.
in_progressActiveTask is executing right now.
waiting_for_humanWaitingPaused — a human needs to approve, dismiss, or answer a question.
waiting_for_childrenWaitingParent paused — it is waiting for one or more child tasks to finish.
successTerminalFinished successfully.
failedTerminalFinished with an error.
dismissedTerminalA human dismissed the task; the action did not run.
skippedTerminalTask was bypassed (for example, an ancestor was dismissed, or a batch item was filtered out).

Statuses fall into four groups:

  • Queued — not running yet, but on its way.
  • Active — executing.
  • Waiting — paused on a human or a child task.
  • Terminal — finished. No further transitions.

Each status in detail

pending

The task was created but has not started yet. Most tasks spend only milliseconds here.

What triggers the next transition:

  • The worker picks up the task → in_progress.
  • The task's tool needs approval → waiting_for_human.
  • The task is scheduled to run later (for example inside a batch) → scheduled.
  • The task cannot run (validation failed) → failed or skipped.

scheduled

The task is queued for later execution.

What triggers the next transition:

  • The worker picks it up → in_progress or pending.
  • You cancel the batch it belongs to → skipped.

approved

A human clicked Approve on this task. It is queued to run.

What triggers the next transition:

  • The worker runs the task → in_progress.
  • Execution is cancelled → dismissed or skipped.

in_progress

The task is running right now. For a tool call, this means the tool is executing. For an AI Agent turn, the LLM is thinking.

What triggers the next transition:

  • Execution completes → success.
  • Execution hits an error → failed.
  • The task spawns child tasks (for example, a batch or a subagent) and parks itself → waiting_for_children.
  • The task returns a pause signal (for example, the Ask User Questions tool) → waiting_for_human.

waiting_for_human

The task is paused and needs a human. This is the status you'll most often see in the Review pending human tasks view.

What triggers the next transition:

  • You click Approveapproved.
  • You click Dismissdismissed.
  • You answer a questions card → approved (then runs to success).
  • An ancestor task is cancelled → skipped.
info

A task in waiting_for_human does not time out. It stays here until you resolve it, or until you or the system cancel the conversation or batch it belongs to.


waiting_for_children

The task has spawned child tasks (for example, a batch with 100 items, or a parent AI Agent calling a subagent) and is waiting for them to finish.

What triggers the next transition:

  • All children reach a terminal status → the parent goes back to in_progress to compile the result, then to success / failed.
  • The task cannot continue (for example, the batch was cancelled) → failed or skipped.
warning

If a parent task looks stuck in waiting_for_children, one or more child tasks are usually sitting in waiting_for_human. Find them in the Dashboard and resolve them. See Troubleshoot stuck tasks.


success — terminal

The task finished successfully. The result is attached and the task does not transition anywhere else.


failed — terminal

The task finished with an error. The error message is attached — expand the task in the timeline to see it. Common causes:

  • The external service returned an error (API down, invalid payload).
  • The tool's input was malformed.
  • The LLM reached its max tokens or encountered a content filter.

dismissed — terminal

A human explicitly dismissed this task. The underlying action did not run. If the human left feedback when dismissing, it is attached to the task and your AI Agent used it to adjust its next move.


skipped — terminal

The task was bypassed without running. Reasons this happens:

  • The batch it belongs to was cancelled or filtered.
  • An ancestor task was dismissed or failed, so this one was never needed.
  • A guardrail decided the task did not need to run.

The task tree

Tasks form a tree. An AI Agent turn creates one ai_task. Every tool call inside that turn creates a task_action whose parent is the ai_task. A batch spawns a batch_processing task whose children are one task_action per row. A subagent call spawns a new ai_task whose parent is the task_action that invoked it.

A parent can only reach a terminal status when all of its children are terminal. This is why you sometimes see a parent stuck in waiting_for_children — drill into its children to find the one that needs you.