Not every AI agent action should be fully autonomous. Some actions are too risky to allow without a human reviewing and approving them first. Authensor's approval workflow system lets you define which actions require approval and routes them to the right reviewers.
Use escalation for actions where the cost of a mistake is high:
In your policy, set the action to escalate for rules that require approval:
rules:
- tool: "payment.send"
action: escalate
when:
args.amount:
gt: 100
reason: "Payments over $100 require human approval"
- tool: "email.send"
action: escalate
when:
args.to:
not:
endsWith: "@yourcompany.com"
reason: "External emails require approval"
When the guard returns escalate, your agent should pause and wait:
const decision = guard('payment.send', { to: 'vendor@example.com', amount: 500 });
if (decision.action === 'escalate') {
const approval = await requestApproval({
requestId: decision.receipt.id,
tool: 'payment.send',
args: { to: 'vendor@example.com', amount: 500 },
reason: decision.reason,
reviewers: ['finance-team']
});
if (approval.granted) {
await executeTool('payment.send', { to: 'vendor@example.com', amount: 500 });
} else {
agent.respond("Payment was denied by the finance team.");
}
}
The control plane supports multiple approval delivery methods:
For high-stakes actions, require multiple approvers:
- tool: "infrastructure.delete"
action: escalate
reason: "Infrastructure deletion requires two approvals"
metadata:
required_approvals: 2
approver_roles: ["engineering-lead", "security"]
Set a timeout for approvals. If no human responds within the window, the action is automatically denied. This prevents the agent from hanging indefinitely:
metadata:
approval_timeout_minutes: 30
timeout_action: deny
Fail-closed timeouts are the safe default. An action that nobody reviewed should not proceed.
Explore more guides on AI agent safety, prompt injection, and building secure systems.
View All Guides