- Documentation
- Troubleshooting
- Run and step statuses explained
Run and step statuses explained
Look up every workflow run and step status, what each one means, and the exact next action to take.
A run has one status. Each step inside a run has its own. The two vocabularies overlap but are not identical: a step can be skipped or waiting, a run cannot. Use this page to look up what a status means and what to do next.
This page covers the statuses you see on the runs list and the run detail timeline. For the workflow's own published-or-not lifecycle (Draft, Published, Paused (safety)), see versioning. For why a run stopped short, see why a run paused.
Run statuses
A run status describes the whole execution. There are six values.
| Status | Badge | What it means | Your next action |
|---|---|---|---|
pending | Gray, clock | Run accepted but no step has started yet. | Wait. If it stays pending, confirm the workflow is published and the version is active. See no data coming in. |
running | Blue, play | Steps are executing now, or a step is waiting on a delay, form, event, sub-workflow, or agent. | Watch the step timeline. You can Pause or Cancel from the run detail page. |
paused | Yellow, pause | An operator paused the run, or it is parked on an approval (the runs list shows Waiting for approval). | Click Resume on the run detail page. For an approval, an approver opens the run and decides on the waiting step instead. |
completed | Green, check | Every step finished successfully. Terminal. | Nothing. Start a new run if you need to run it again. |
failed | Red, x | A step errored and the run stopped. Terminal. | Open the first failed step and read its error. See read a failed run. |
cancelled | Outline, square | An operator cancelled the run. Terminal. | Start a new run if you want to run it again. |
completed, failed, and cancelled are terminal: the run will not change status on its own.
The Status dropdown on the runs list offers Any status, Pending, Running, Waiting for approval,
Paused, Completed, Failed, and Cancelled. Waiting for approval lists the paused runs parked on
an approval, and Paused lists the other paused runs. A run whose step waits on a delay, form,
event, sub-workflow, or agent reads running, so open the run to see the waiting step.
Step statuses
A step status describes one node inside a run. It shares the six run values and adds two more: waiting, for a step parked on a wait, and skipped, for control-flow paths that were not taken. There are eight values.
| Status | What it means | Your next action |
|---|---|---|
pending | The step has not started; the run has not reached it yet. | None. It runs when the run reaches it. |
running | The step is executing now. | Wait. |
waiting | The step is parked on a wait. The step carries waiting metadata (such as a scheduled time or the wait type). | Resolve the wait. See why a run paused. |
completed | The step finished successfully. | None. |
failed | The step errored. The step carries a structured error you can read in its detail panel. | Read the error, decide whether it is retryable, fix the cause, then retry. |
skipped | The step was bypassed, for example a branch path that was not taken. | None. This is expected on control-flow paths the run did not follow. |
paused | The step halted as part of a run-level pause. | Resume the run. |
cancelled | The step was cancelled because the run was cancelled. | None. |
A failing step may briefly show as retrying between attempts before it lands on completed or failed. Retrying is a transient state, not a stored step status, so you will not see it as a final value in the timeline.
The success status for both runs and steps is completed. You will not see succeeded anywhere
in the run detail timeline.
Agent run states
Runs that use the agent runtime show one extra pill in the run detail header, on top of the run status. An ordinary workflow run shows the pill only while a tool call from one of its AI agent steps is waiting for a decision, and there it always reads Awaiting approval. There are six states.
| State | Label you see | What it means |
|---|---|---|
pending | Pending | The agent run was accepted but has not started. |
running | Running | The agent is working. |
awaiting-callback | Awaiting callback | Waiting on an asynchronous tool callback. |
awaiting-human | Awaiting approval | A tool call is waiting for a human approval decision. |
completed | Completed | The agent run finished. |
failed | Failed | The agent run errored. |
When the pill reads Awaiting approval, it is a link to the agent's step, where each tool call waiting for approval has its own Approve and Reject buttons. The run itself stays running and the runs list shows it under Waiting for approval.
Why a step is waiting
A step enters waiting for one of these reasons. The wait type is recorded on the step. The run around it reads running, except for an approval, where it reads paused and shows Waiting for approval in the runs list.
| Wait reason | What is happening | How it clears |
|---|---|---|
| Delay | A delay step is holding the run until a scheduled time. | The timer fires automatically. |
| Approval | A gated action is waiting on a human decision. | An approver opens the run and decides on the waiting step. For an AI agent's tool call, that is the agent's step. |
| Form submission | The run is waiting for a published form to be submitted. | Someone submits the form. |
| Wait for event | The run is holding for a correlated external event. | The matching event arrives, or the timeout fires. |
| Connection request | The run is waiting for a client to authorize a connection. | The client authorizes the requested app. See requesting client credentials. |
| Sub-workflow or parallel barrier | The run is waiting for a sub-workflow or parallel/loop branches to finish. | The child work completes. |
Reading a failed step's error
When a step is failed, its detail panel shows a structured error. These are the fields you read.
| Field | Type | Always present | Description |
|---|---|---|---|
code | string | Yes | Machine-readable error constant. The panel shows the literal word "Error" when the code is the generic UNKNOWN_ERROR; integration steps surface an app-specific or HTTP-derived code. |
message | string | Yes | Human-readable summary of what went wrong. |
detail | string | No | Longer detail, shown in an expandable block as Code: <code>. |
providerStatus | number | No | HTTP status from the upstream provider, rendered as "Provider status: NNN". |
retryable | boolean | No | Whether re-running the step is likely to succeed. When true, the panel appends "(retryable)" to the provider status. |
If retryable is true or the failure looks transient, retry the run. If the error points to a configuration or authentication problem, fix the cause first, then retry. See read a failed run.
Example: an authentication failure
A Slack action fails partway through a run. The run status is failed; the Slack step shows failed and the rest of the steps show pending because the run stopped. The step detail panel renders the error like this:
Step: Send Slack message failed
The Slack connection could not be authenticated.
Provider status: 401A 401 with no "(retryable)" tag means the connection needs attention rather than a simple retry. Reconnect the integration, then retry the run. See reconnect an integration.
What you cannot do
- You cannot resume a terminal run. Once a run is
completed,failed, orcancelled, Resume is not available. For a failed run, a retry starts a new run instead. - You cannot retry a run that did not fail. Retry is offered only for
failedruns. Acompletedorcancelledrun has no retry, and neither does a run that is still in progress. - You cannot filter the runs list by a waiting step.
waitingis a step status, not a run status, so a run parked on a delay or an event is listed asrunning. Only approval waits have their own Status option.