Manual and destroy runs
Trigger a Run by hand — an on-demand plan or apply, or a destroy — from the Stack's Runs tab, in any execution mode, and understand what commit a manual Run pins.
Most Runs are born from Git — a push or a pull request. But you can always trigger one by hand, and destroy Runs only ever happen this way. Both start from the Stack’s Runs tab.
The New run dialog
On a Stack’s Runs tab, New run opens a dialog with two choices:
- What kind — a Change run (plan, then apply after its gate), or a Destroy run (plan a teardown, then apply after approval). You can also run a plan-only check when you want to see a plan without applying anything.
- Which ref — defaults to the Stack’s tracked branch. Point it at another branch or ref for an ad-hoc plan.
A manual Run runs whatever the execution mode gate
would apply to it — a merge_then_apply Stack still parks a manual Change run at
approval; an auto_apply Stack applies it. Manual runs are also the only way a
manual-mode Stack runs at all, and the escape hatch
in every mode.
A manual Change run
Use one to:
- Run a
manual-mode Stack — nothing fires from a push, so you drive every plan and apply from here. - Re-apply the tracked branch — the revert path. If an apply went wrong, revert the change in Git and trigger a manual Change run on the tracked branch to bring live infrastructure back in line. This is how you “re-apply main” in any mode.
- Recover a stuck Run — after a force-failed Run, a fresh manual Change run re-plans against the current state (see Troubleshooting).
A destroy run
A Destroy run plans a full teardown of the Stack’s resources, then applies it.
Danger: A destroy run removes every resource the Stack manages. Recreating them is a fresh apply, but any data they held — databases, volumes, DNS — is gone and cannot be recovered. Read the destroy plan before you approve.
It is deliberately hemmed in:
- Manual-only. A destroy never comes from a push, a merge, or a cascade — you always ask for it explicitly.
- Always parks for approval. A destroy waits at awaiting approval in
every execution mode — including
auto_apply. There is no way to tear down infrastructure without a human reading the destroy plan and approving it. - Never cascades. A destroy apply does not trigger downstream Stacks. To take a layered estate down, destroy from the leaves inward — and note you can’t delete a Stack while another still depends on it.
What a manual Run pins
A webhook-born Run is pinned to the exact commit that triggered it. A manual
Run instead tracks the ref you chose and resolves its head when the plan
runs — so a manual Change run on main plans against main’s current tip.
From that point it behaves like any other Run: the plan pins to that resolved
commit, and if you approve, the apply executes that exact plan, never a
re-plan of a since-moved branch. What you read is what runs.