Skip to content
Orbital

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.

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

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 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.
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 explains the whole loop.

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.
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 explains why a poll loop needs a wait.

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.

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.
Pick an option or write your own answer.