Approvals
An approval pauses a deployment until enough eligible people say yes. Approvals are available on every plan.
Configure on the environment
Section titled “Configure on the environment”Approvals are a protection rule of the environment, not of a pipeline, so they apply to every way of deploying there:
# environment protection rulesrequired_approvals: 2approvers: - { kind: role, id: deployer } - { kind: team, id: sre, min_count: 1 } # per-group quorum - { kind: user, id: user_01H... }allow_self_approval: false # defaultapproval_timeout: 24hrequired_approvals: how many distinct approvals are needed.approvers: users, teams or roles that are eligible.min_countsets a per-group quorum (for example “at least one from SRE”). A person must also hold the permissiondeployments.approveat the environment’s scope.allow_self_approval: by default the person who requested a deployment cannot approve it.approval_timeout: how long to wait before the approval expires.- A rejection by any eligible approver rejects the deployment.
Deciding
Section titled “Deciding”| Channel | How |
|---|---|
| Web | The Approvals inbox lists everything waiting on you, with the release diff and gate results alongside |
| Slack | Interactive buttons on the notification; the Slack user must map to a Slipway user with permission |
| Teams | Adaptive-card actions |
| CLI | slipway approve dep_01H... -m "comment" or slipway reject ... |
| API | ApprovalService.DecideApproval |
Every decision is recorded with the user, the decision, a comment, a timestamp and the channel (web, slack, teams, api), and appears in the audit log.
Waiting for a deploy job
Section titled “Waiting for a deploy job”In a pipeline, a deploy job bound to a protected environment shows waiting_approval and holds its runner slot only after approval: the job is not assigned to a runner until the approval passes, so waiting costs nothing.
Expiry and cancellation
Section titled “Expiry and cancellation”When approval_timeout passes, the approval expires and the deployment fails with that reason. A requester can cancel a waiting deployment (ApprovalService.CancelApproval), which also cancels the approval request.
Good defaults
Section titled “Good defaults”- Production: 1 or 2 approvers from a team that is not the author’s.
- Staging: no approval, auto-promotion.
- Combine with a deployment window so approvals are not requested at 3 a.m.