Human approval when policy withholds a payment.
Escalations
When preflight returns ESCALATED_*, Untch creates an escalation record and notifies your bound channels.
What you receive
- Amount and reason (for example threshold or vendor risk)
- Single-use approval code
- Timeout (default deny when time expires)
How to respond
Text baseline (all channels):
APPROVE <code>
DENY <code>
Dashboard: open Escalations and approve or deny with SIWE identity (ownership checked).
Telegram / Discord / Slack: buttons or text where configured.
iMessage (Photon): text baseline. No native buttons.
Authority rules
An approval counts only if:
- The intent is still active
- The policy allows escalation
- The sender matches a bound handle for an approver of that policy
- The code is valid and unused
- Channel caps and dual-channel rules pass when configured
Failed checks are logged as failed control events. They never silent-approve money.
Agent side
The agent polls:
GET https://asp.untch.xyz/escalation_status/:pollRef
pollRef is typically receiptRef.receiptId or intentHash, matching Guard’s poll handle.