Voice Approvals (HITL)
The Voice Approvals tool implements Human-in-the-Loop (HITL) for voice calls. Before executing high-stakes actions — payments, bookings, permanent changes — the agent asks for verbal confirmation and handles three intents: approve, reject, and clarify.How It Works
Approval Modes
| Mode | Behavior |
|---|---|
blocking | Agent cannot proceed until explicit approval or rejection |
confirm_tools | Agent asks confirmation before ANY tool that modifies external state |
audit | Logs approval requests but doesn’t block execution |
Configuration
| Setting | Type | Default | Description |
|---|---|---|---|
voiceApprovalEnabled | boolean | false | Enable voice HITL approvals |
voiceApprovalMode | string | blocking | Mode: blocking, confirm_tools, audit |
voiceApprovalMaxClarifications | integer | 3 | Max clarification questions before forcing yes/no |
voiceApprovalTimeoutMinutes | integer | 5 | Approval timeout in minutes |
voiceApprovalPrompt | string | — | Custom approval protocol prompt (overrides defaults) |
LLM Tools
request_voice_approval
Request verbal confirmation from the caller before a high-stakes action.
record_approval_decision
Record the caller’s approval or rejection.
Three-Intent Handling
The LLM acts as a natural-language state machine:- APPROVE — “Yes”, “Go ahead”, “Sure”, “Do it” -> calls
record_approval_decisionwithdecision='approved' - REJECT — “No”, “Cancel”, “Never mind” -> calls
record_approval_decisionwithdecision='rejected' - CLARIFY — “Wait, how much?”, “What’s included?” -> Agent answers naturally, then re-asks. No tool call for clarifications.
Confirm Tools Mode
Inconfirm_tools mode, the agent automatically asks for confirmation before calling ANY tool that modifies external state:
- Creating records
- Sending messages
- Processing payments
- Booking appointments
- Updating databases
- Triggering webhooks

