> For the index of every page in Orbital's docs, read https://docs.beta.runorbital.dev/llms.txt.

# Add gates and waits

> Stop a run for a person with a gate, or for a set time with a wait

Stop a run until a person lets it continue with a human gate, or for a set time with a wait. Use a gate where the process needs a person, and a wait where it needs time to pass.

```dot title="release.dot"
approve [shape="hexagon", label="Approve the release"]
pause [shape="insulator", duration="30m"]
```

Both survive a restart.

| | Human gate | Wait |
| --- | --- | --- |
| Shape | `hexagon` | `insulator` with a `duration` |
| Ends when | A person lets it continue, or a watched pull request changes | The duration passes |
| Run slot | Given up | Kept |
| After a restart | Stays at the gate | Wakes at the time it first set |

## Human gates

A human gate is a step with `shape="hexagon"`. It does no work. When a run reaches one, its standing is Waiting. It shows a clock and "Waiting:" followed by the gate's label, not the pause mark, so you can tell it apart from a run you paused. The runs list's Status filter calls it **At a gate**. It holds no run slot, and it stays at the gate across a restart.

To let the run continue, open it and choose **Continue** or **Skip** on the gate, or **Resume**. The run then joins the back of the queue, continues when a slot is free, and follows the gate's edge. A coding agent can do the same with the `control_run` MCP tool and the `SkipWait` or `Resume` action.

A gate needs an outgoing edge. A gate inside a parallel branch is refused.

### The pull request gate

The shipped delivery workflows stop at a gate labelled "The pull request is waiting for review or merge". The run page shows how long it has waited and when Orbital checks next.

![A gate step reads The pull request is waiting for review or merge, with the time waited, the time until the next check, and a Skip button.](/screenshots/gate-wait.webp?v=fdf72f63d4)

*The gate shows how long it has waited and when it checks next.*

When the run's probes have seen a pull request, Orbital looks at it once a minute. The run continues by itself once the `pr` probe's rolled-up `pr.state` is no longer `WAITING`: the pull request merged, closed, conflicts, failed CI or needs changes. It then joins the queue and follows the gate's edge, as when you let it continue. An approved pull request that is not merged yet goes back to the gate. [Worktrees and delivery](/projects/worktrees-and-delivery/) explains the whole loop.

## Waits

A wait is a step with `shape="insulator"` and a `duration`, such as `duration="30m"`. The run sleeps for that time, then continues. A wait keeps its run slot, but waiting costs no agent visits.

The run page shows a countdown. Choose **Skip** to end the wait now.

![A wait step reads Wakes in 16m 48s, with a progress bar and a Skip button.](/screenshots/wait-countdown.webp?v=ece53f53a5)

*Choose Skip to end the wait early.*

Orbital records the skip, so it still applies if Orbital restarts at that moment. A wait that was running during a restart wakes at the time it first set.

The epic workflows, for example, wait thirty minutes when every remaining ticket is blocked, then look again. [Add a loop](/workflows/add-a-loop/) explains why a poll loop needs a wait.

## Questions from the agent

An agent can also stop a run by asking you something. The run stands as Question until you answer in the composer. That is not a gate, because the workflow did not plan it. See [Message a run](/runs/message-a-run/).

![An agent's question card asks which cap to rename, offers two options to pick from, and has a box to write your own answer with a Send button.](/screenshots/agent-question.webp?v=92fd44eff4)

*Pick an option or write your own answer.*

## Related

- [Human gate](/reference/node-types/#human-gate) and [wait](/reference/node-types/#wait): the syntax for both steps.
- [Add a loop](/workflows/add-a-loop/): use a wait inside a poll loop.
- [Worktrees and delivery](/projects/worktrees-and-delivery/): the delivery loop around the pull request gate.
- [Pause, stop or resolve a run](/runs/control-a-run/): resume a run by hand.
