Skip to main content
Every intent moves through a series of statuses from creation to resolution. Understanding these statuses helps your app track proposals and build automation around intent outcomes.

Status overview

Pending

When an intent is proposed, via the API or the Dashboard, it starts in the Pending status. The intent remains pending until one of the following occurs:
  • Enough signers authorize it to meet the threshold (transitions to Processing, Executed, or Failed).
  • The intent is cancelled (transitions to Rejected).
  • The authorization window elapses without enough signatures (transitions to Expired).
  • The underlying resource is modified or deleted (transitions to Dismissed).

Granted

An intent moves to Granted when the current signer has authorized it but the threshold is not yet met. This state is specific to the current signer and is not shared across all authorizers. The intent remains pending, awaiting authorization from more owners or signers.

Processing

An intent moves to Processing when the authorization threshold is met and execution begins. This applies to asynchronous actions such as transfers.

Executed

An intent moves to Executed when the authorization threshold is met and execution succeeds. The proposed action completes automatically — the transaction is signed and broadcasted, or the wallet or policy is updated. After execution, the intent’s action_result field contains the response. For transaction intents, this includes the transaction hash. Fetch the intent or listen to the intent.executed webhook to retrieve these results.

Failed

An intent moves to Failed when the authorization threshold is met, but execution fails. Intent execution can fail for various reasons, such as a policy blocking the transaction or insufficient gas or balance to transact. At this point, the intent is in a terminal state and must be recreated to try again.

Rejected

An intent can be cancelled before it executes, moving it to Rejected. In the Dashboard, cancel an intent from the Approvals page by selecting Cancel proposal. Once rejected, the intent is in a terminal state and cannot execute.

Expired

Intents expire 72 hours after creation by default. If the authorization threshold has not been met within that window, the intent moves to Expired and can no longer accept authorizations. Once expired, the intent is in a terminal state and cannot execute.
To retry an expired intent, propose a new intent with the same parameters.

Dismissed

An intent is automatically dismissed when the underlying resource changes or is deleted. This prevents stale proposals from executing against a resource that no longer matches the original intent. When this may happen:
  • Updating a wallet dismisses all pending intents for that wallet.
  • Deleting a policy dismisses all pending policy and rule intents for that policy.

Next steps

Sign intents

Add authorization signatures to execute a proposed intent.

Fetch intent

Retrieve intent status and execution results via the API.