What is the intent state machine?
Every validated transaction in Mandate is tracked as an intent. The intent moves through a strict state machine from validation to on-chain confirmation (or failure). The entry state depends on which endpoint the agent uses: action-based validation creates anallowed intent, raw validation creates a reserved intent.
State diagram
State reference
Transitions
Terminal vs non-terminal states
Terminal states end the intent lifecycle. No further transitions are possible. Terminal states:allowed, confirmed, failed, expired, rejected
Non-terminal states: reserved, approval_pending, approved, broadcasted
Non-terminal states have TTLs enforced by a scheduled expiration job. When the TTL expires, the intent moves to expired and any reserved quota is released back to the agent’s budget.
Quota behavior by terminal state
Polling for status
UseGET /api/intents/{id}/status to check the current state. The SDK provides convenience methods:
MandateError if the intent reaches a terminal failure state.
Next Steps
Intent Lifecycle Concepts
Conceptual explanation of how intents move through the system.
MandateClient
SDK methods for validation, event posting, and status polling.
Check Status (CLI)
Poll intent status from the command line.