Approval steps
An approval step pauses a workflow run at a designated node and waits for an authorised person to review the context and either approve or reject the continuation. In Orvanta this mechanism is called ConsentGate.
Why approval steps?
Section titled “Why approval steps?”Automation is powerful — but some operations are irreversible, high-risk, or require human judgement. An approval step gives you a safe checkpoint without breaking the automation flow:
- Deleting production data
- Sending bulk communications
- Deploying to a critical environment
- Initiating financial transactions
- Approving an AI agent’s proposed action
How it works
Section titled “How it works”- The workflow runs normally until it hits an approval (ConsentGate) node.
- The run transitions to
awaiting_approvaland execution pauses. - Designated approvers receive a notification (email, Slack, or webhook).
- An approver opens the approval UI, reviews the run context, and clicks Approve or Reject.
- If approved, the workflow continues from the next node.
- If rejected, the run transitions to
failed(with a rejection reason attached to the context).
Configuring an approval node
Section titled “Configuring an approval node”In the workflow editor, add a ConsentGate node and configure:
| Field | Description |
|---|---|
| Approvers | One or more users or roles who can approve this gate. |
| Timeout | How long to wait before auto-rejecting (optional). |
| Notification channel | Email, Slack, or webhook. |
| Message template | Custom message shown to the approver; can reference context values. |
Example message template
Section titled “Example message template”Workflow: {{ workflow.name }}Triggered by: {{ run.triggered_by }}
The following action is about to be taken:- Delete customer: {{ context.customer_id }}- Record count: {{ context.record_count }}
Please review and approve or reject.Programmatic approval
Section titled “Programmatic approval”Approvals can also be submitted via the REST API, enabling programmatic approval workflows (e.g., from a custom internal tool):
POST /api/v1/runs/{run_id}/consentAuthorization: Bearer <token>Content-Type: application/json
{ "decision": "approved", "reason": "Reviewed and confirmed by on-call engineer"}Related
Section titled “Related”- Jobs and runs — Run lifecycle and the
awaiting_approvalstate. - Workflows — Node types and workflow structure.
- API Reference — Full API reference including the consent endpoint.