activity.params. See the
activity parameter reference for the full field
list and Transaction Management for product flows.
Use activity.kind
when you want policies to survive activity version upgrades. Pin activity.type when you rely on
fields that exist only on a specific version (for example destination_address on
ACTIVITY_TYPE_CREATE_SWAP_QUOTE_V2, ACTIVITY_TYPE_CREATE_SWAP_QUOTE_V3,
ACTIVITY_TYPE_EXECUTE_SWAP_V3, and ACTIVITY_TYPE_EXECUTE_SWAP_V4). A policy that pins
activity.type does not match a newer version: a condition on ACTIVITY_TYPE_EXECUTE_SWAP_V3 does
not apply to ACTIVITY_TYPE_EXECUTE_SWAP_V4, and a condition on
ACTIVITY_TYPE_CREATE_SWAP_QUOTE_V2 does not apply to ACTIVITY_TYPE_CREATE_SWAP_QUOTE_V3, which
the SDKs send by default.
Swap quotes
Cap slippage on swap quote requests
Whenslippage_bps is omitted on the intent, accessing activity.params.slippage_bps fails with
FieldNotUsed rather than evaluating as zero.
Restrict quote output tokens to an allowlist
Require organization-controlled destinations on cross-chain quotes
Swap execution
Deny execution into unapproved output assets
Require two approvers for large trades (base units)
Compareinput_amount as a uint in token base units.
Deny sponsored swap execution
Restrict execute destination (V3 and V4)
Market swaps
Market swaps areACTIVITY_TYPE_EXECUTE_SWAP_V4 activities with activity.params.mode set to MARKET. Bound swaps
on that activity type have the mode BOUND_QUOTE. Policies that use activity.kind,
activity.resource, or activity.action cover both modes, so a broad ALLOW also allows market
swaps. Root quorum approvals skip policies, including these DENY rules.
Deny market swaps
Cap slippage on market swaps
Usequote_slippage_bps rather than slippage_bps. It is derived from the verified quote, so it
applies when the provider chose the slippage. slippage_bps fails with FieldNotUsed when the
intent omits it, so a DENY on it does not fire.
Require a price floor on market swaps
An omittedminOutputAmount reads as 0.
Swap fee sponsorship and fixed rate
Swap fee sponsorship and fixed rate bill your parent organization and count against its spend limits.fee_sponsorship and fixed_rate exist on
ACTIVITY_TYPE_CREATE_SWAP_QUOTE_V3 and ACTIVITY_TYPE_EXECUTE_SWAP_V4 only, so pin those types.
On ACTIVITY_TYPE_EXECUTE_SWAP_V4, both fields come from the verified quote, so they apply to bound
and market swaps.
Deny fee-sponsored and fixed-rate swaps
Earn deposits and withdrawals
Allow deposits only on approved chains
Restrict deposits to approved wrappers
EVM wrapper addresses in policies should use lowercase0x hex to match normalized
activity.params.wrapper_address values.
Deny sponsored Earn deposits
Cap deposit size (base units)
activity.params.assets compares as a uint in raw on-chain
units, like swap input_amount.
Gate full-position withdrawals
amount_value is a string; the API accepts the literal MAX to withdraw an entire position.
Earn administration
Cap client fee on wrapper deployment
client_fee_bps is exposed as a uint in whole basis points
(the API intent carries a decimal string). client_fee_wallet remains a string; allowlist it for
treasury controls.