If every deploy needs approval, agents stop being useful and humans start rubber-stamping. If nothing needs approval, the platform is a faster path to shadow IT. So deploys are ungated by default, and approval attaches to blast radius instead.

The five gates

Everything else — including redeploying an app whose permissions did not change — is fully automatic. That is what makes the platform usable by an agent.

A pause, not a failure

A gated deployment sits in awaiting_approval. The plan stays valid, and approving resumes the same deployment rather than starting a new one.

Approving at deploy time

--yes passes approval intent with the deployment request.
--yes does not bypass role or policy checks. It expresses that the person running the command intends to approve what the plan found — if they lack the role, it is still refused.
In non-interactive use, a plan with required approvals fails with APPROVAL_REQUIRED unless --yes is supplied. That is deliberate: a script should not silently widen production’s blast radius.

Capability grants approve separately

Requesting a capability never approves it, even for an admin, unless organization policy disables the requirement.

Previews are exempt

Preview environments skip capability approval. They get sandbox connections and an empty database, so the risk is different in kind. See Previews.

Structured for agents

Approval reasons are structured, so the MCP server returns status: "approval_required" with next_actions an agent can follow — rather than an error it has to interpret from prose.
The full reasoning is in ADR 0004.