- Ship
- Approvals
A human in the loop
where it matters
Pause sensitive tool calls for human review. Approve or reject in the dashboard or via REST API. Time-bounded, conditional, audited.
Read the approvals docsApprovals
PendingPause. Review. Decide.
A sensitive tool call enters the queue. A human decides. The agent picks up where it left off, or stops with a clear reason.
- 01
Agent calls a gated tool
process_refund(amount=129)
- 02
The run pauses
Status flips to Awaiting Approval. The agent stops; the request stays alive.
- 03
Reviewers are notified
Email and in-app by default. Optional webhook forwards to Slack, Teams, PagerDuty, or your own workflow.
- 04
A reviewer decides
Approve or reject from the dashboard or via REST API.
- 05
The run resumes
Or fails with the rejection reason. With on_rejection: continue, the agent adapts instead.
From one line to a policy
List the tools to gate. Add a condition to scope approval to the calls that actually matter.
approval:
tools:
- order_tools.process_refund
timeout: 600
message: "This refund requires manager approval."Every call to order_tools.process_refund pauses the run until a project member approves.
approval:
tools:
- order_tools.cancel_order # always gated
- order_tools.process_refund: param.amount > 1000 # conditional
timeout: 3600
message: "This action requires manager approval."
on_rejection: continueSmall refunds fly through. Larger ones pause for review. With on_rejection: continue, the agent adapts instead.
The Approvals page
Pending approvals sit at the top of the Approvals page with full context: agent, tool, parameters, age. Approve or reject in place, or open the run detail drawer for the full picture.
- order_tools.process_refundawaiting approvalon order-manager · order_id=ORD-1234 · amount=1292m
- order_tools.process_refundawaiting approvalon order-manager · order_id=ORD-1287 · amount=24005m
- order_tools.cancel_orderawaiting approvalon order-manager · order_id=ORD-1199 · reason=customer_request11m
- db_deleteawaiting approvalon support-triage · table=conversations · id=4281923m
Every decision, on the record
Approval decisions land in the project audit log next to deploys and config changes. They also show up on the run's trace view, next to the tool calls they gated.
Every approval and rejection is recorded with the team member who made the decision and when.
Tool name and the exact parameters at the moment of decision are captured alongside the action.
Approval events show up on the run's trace view too, with wait duration and reviewer next to the gated tool call.