Skip to main content

Allowlist specific Solana Programs

Allow a SOL Transfer instruction with a max value

Allow sending Solana transactions within a time window

Allow a SOL Transfer instruction with a max value to allowlisted recipients

Allow a Solana Transaction that has a Create and Transfer instruction, while limiting Transfers to 1 SOL

Allow a TransferChecked instruction with a max value of a USDC token

Denylist recipients of a transaction

Allowlist some System Program instructions and some Token Program instructions

Allowlist some Solana Programs and restrict SOL transfers

Restrict message signing

Use the message field source on signMessage rules to constrain what messages a Solana wallet can sign. The content field supports string operators (eq, contains, starts_with, ends_with, in, in_condition_set), and the byte_length field supports numeric operators.

Prevent private key exports while allowing other actions

Only permit private key exports

Anti patterns

Avoid adding rules that may override other rules

Known Limitations

Address Lookup Tables (ALTs)

Solana policy evaluation does not support resolving addresses from Address Lookup Tables (ALTs). If your policy has conditions that reference addresses stored in an ALT (e.g., recipient/sender allowlists), policy evaluation will fail and the transaction will be rejected.
What this means for your application:
  • Transactions using ALTs work normally if your policy does not have address-based conditions, or if the addresses being evaluated are in the transaction’s static account keys (not the ALT)
  • Policy evaluation will only fail if a policy condition needs to inspect an address that is stored in the ALT (e.g., Transfer.to, Transfer.from, recipient allowlists where the address is in the ALT portion)
  • Policies that only check programId, instructionName, transfer amounts, or time-based conditions work fine with ALT transactions
Workaround: If you need address-based policy conditions (recipient/sender allowlists), ensure those addresses are included in the transaction’s static account keys rather than resolved via ALT. Most simple transactions (SOL transfers, basic token transfers) do not require ALTs and will work with all policy types. If ALT support for address-based policies is a requirement for your use case, please reach out to discuss your needs.