Skip to content
Executive summary

An intent is a cryptographically signed proposal to change the system. Every modification must go through the intent workflow before execution.

  • Intents are immutable once submitted and create a tamper-evident audit trail.
  • The maker-checker model ensures no single person can unilaterally make changes.
  • Policies determine how many approvals are required and from which roles.
  • Intents can be rejected by any authorized checker, halting the change.
Why this matters

Intents are the enforcement mechanism for your governance policies. Every transfer, policy change, user creation, and configuration update flows through this system. This means you have a complete, cryptographically-secured record of every decision made on the platform — critical for regulatory audits, internal investigations, and demonstrating control over digital assets.

For architects and operators: Monitor intent approval queues and set appropriate expiry times. Stale intents indicate operational bottlenecks. Consider webhook integrations to notify approvers of pending intents.

What is an intent?

An intent represents a proposed change that:

  • Is signed: The proposer cryptographically signs the intent, proving their identity
  • Is immutable: Once submitted, the intent content cannot be modified
  • Requires approval: Policies determine which roles must approve before execution
  • Is auditable: Every intent is recorded in the system's tamper-evident audit trail

Intents ensure that all changes follow your governance rules and create a complete record of who did what and when.

Intent lifecycle

Every intent progresses through a defined set of states:

User submits intent

Policy matched

All approvals received

Approver rejects

System executes

Proposed

PendingApproval

Approved

Rejected

Executed

User submits intent

Policy matched

All approvals received

Approver rejects

System executes

Proposed

PendingApproval

Approved

Rejected

Executed

Intent states

StateDescription
ProposedIntent has been created and signed by the proposer. The proposer's signature counts as the first approval.
Pending ApprovalIntent is awaiting additional approvals as defined by the applicable policy workflow.
ApprovedAll required approvals have been received. The intent is ready for execution.
ExecutedThe change has been applied to the system. The intent is complete.
RejectedAn approver has rejected the intent, or the intent has expired. No changes are made.
ExpiredThe intent's expiry time has passed without sufficient approvals. Treated as rejected.

State transitions

TransitionTrigger
Proposed → Pending ApprovalAutomatic after proposal (if additional approvals needed)
Pending Approval → ApprovedFinal required approval received
Pending Approval → RejectedAny authorized user rejects the intent
Pending Approval → ExpiredIntent expiry time passes
Approved → ExecutedSystem executes the change

Maker-checker model

Intents follow a maker-checker pattern that enforces segregation of duties:

Makers

  • Create and sign intents (propose changes)
  • Must have a role that matches the first step of the policy workflow
  • Their proposal counts as the first approval
  • Cannot approve their own intent again in subsequent workflow steps

Checkers

  • Review pending intents
  • Provide approvals or rejections
  • Must have roles matching subsequent workflow steps
  • Multiple checkers may be required based on the policy

Example flow

SystemCompliance (Checker)Supervisor (Checker)Operator (Maker)SystemCompliance (Checker)Supervisor (Checker)Operator (Maker)Propose transfer intent(1st approval)Review & approve(2nd approval)Review & approve(3rd approval)Execute intent
SystemCompliance (Checker)Supervisor (Checker)Operator (Maker)SystemCompliance (Checker)Supervisor (Checker)Operator (Maker)Propose transfer intent(1st approval)Review & approve(2nd approval)Review & approve(3rd approval)Execute intent

This separation ensures no single user can both propose and fully approve a change.

Intent types

Intents are categorized by the type of operation they perform:

CategoryExample Intent TypesDescription
Domain managementv0_CreateDomain, v0_LockDomainCreate and manage organizational units
User managementv0_CreateUser, v0_UpdateUserManage users and their roles
Asset managementv0_CreateAccount, v0_CreateVaultCreate accounts and vaults
Transactionsv0_CreateTransferOrder, v0_CreateTransactionOrderExecute blockchain operations
Policy managementv0_CreatePolicy, v0_UpdatePolicyDefine governance rules
Endpoint managementv0_CreateEndpointManage external addresses

For details on intent structure, see Intent structure reference.

Intent expiry

Every intent has an expiry time. If the required approvals are not received before this time:

  • The intent transitions to Expired state
  • No changes are made to the system
  • A new intent must be created if the change is still needed

Expiry times prevent stale intents from being approved long after they were proposed, when circumstances may have changed.

Intent targeting

When creating an intent, users specify:

  • Author: The user creating the intent (automatically set)
  • Target domain: The domain where the change will be applied
  • Payload: The specific change details (e.g., new user properties, transfer amount)

Users can only target:

  • Their own domain
  • Subdomains of their domain (if policies permit)

Users cannot target parent domains or sibling domains.

Next steps