What happens when an approval expires?
When a transaction triggers an approval requirement, the intent entersapproval_pending state with a 1-hour TTL. If the owner does not approve or reject within that window, the intent transitions to expired. The reserved quota is released, and the transaction must be re-validated to create a new approval request.
After approval, the agent has a 10-minute window to broadcast the transaction. If the agent does not post a transaction hash within 10 minutes, the approved intent also expires.
TTL reference
| State | TTL | What happens on expiry |
|---|---|---|
approval_pending | 1 hour | Intent moves to expired, quota released |
approved | 10 minutes | Intent moves to expired, quota released |
Common causes of timeout
Owner did not see the notification
The owner may not have the dashboard open. By default, approval requests only appear in the dashboard. Set up Telegram or Slack notifications so the owner receives a push notification immediately.Slow decision
Some transactions need discussion before approval. If 1 hour is not enough, re-validate after expiry to restart the approval window.Agent not polling
The agent’swaitForApproval() call may have timed out before the owner responded. Increase the timeoutMs parameter.
How to handle approval expiry in code
Set up notifications
Reduce timeout risk by enabling real-time notifications:- Telegram: Connect your Telegram account in the dashboard under Settings > Notifications. You receive a message with transaction details and approve/reject buttons.
- Slack: Add the Mandate Slack app to your workspace. Configure the channel in dashboard Settings > Notifications.
- Dashboard: Always available. Keep a browser tab open at
https://app.mandate.md/approvals.
Recovering from expired broadcasts
If the intent reachesapproved but the agent fails to broadcast within 10 minutes, the intent expires. Start the entire flow over: call /validate again, wait for a new approval, then broadcast promptly.
Next Steps
Handle Approvals
Complete guide to implementing approval workflows.
Dashboard Notifications
Configure Telegram, Slack, and webhook notifications.
Intent States
Full state machine reference with all TTLs.