Skip to main content
Delegated accounts (also known as delegates) start with no permissions and must be explicitly granted access. Permissions are granular, allowing vault owners to build precise guardrails by adding specific capabilities to each delegate.
  • Low-privileged delegates are ideal for performing routine tasks such as staking and farming.
  • High-privileged delegates can be used for more sensitive operations like trading and transfers.
This approach enhances security by ensuring that delegates can only perform intended actions within the defined boundaries:
  • It reduces the risk of unauthorized operations and accidental mistakes.
  • Even if a delegate is compromised, the impact is limited to the permissions granted to them.

Permissions

Permissions are protocol-specific capabilities defined by each integration program. They represent the smallest units of access that can be granted to delegates, allowing for fine-grained control over what actions each delegate can perform. Permission bitflags are stored as u64 integers, allowing for a maximum of 64 permissions per protocol. Follow the links in the table to view the permission definitions in program IDLs.
ProtocolPermission NamePermission BitflagDescription
SystemWSOL0b0000000000000001Wrap SOL to wSOL
Transfer0b0000000000000010Transfer vault SOL an allowlisted address
Jupiter SwapSwapAny0b0000000000000001Swap any token to any other token
SwapLst0b0000000000000010Swap among SOL and LSTs
SwapAllowlisted0b0000000000000100Swap tokens that are explicitly allowlisted
SPLTransfer0b0000000000000001Transfer vault token an allowlisted address
Drift ProtocolInitUser0b0000000000000001Initialize Drift user account
UpdateUser0b0000000000000010Update Drift user account settings
DeleteUser0b0000000000000100Delete Drift user account
Deposit0b0000000000001000Deposit tokens into Drift
Withdraw0b0000000000010000Withdraw tokens from Drift
Borrow0b0000000000100000Borrow tokens on Drift
CreateModifyOrders0b0000000001000000Create or modify trading orders
CancelOrders0b0000000010000000Cancel existing orders
PerpMarkets0b0000000100000000Access perpetual markets
SpotMarkets0b0000001000000000Access spot markets
Drift VaultsDeposit0b0000000000000001Deposit into Drift vaults
Withdraw0b0000000000000010Withdraw from Drift vaults
Kamino LendingInit0b0000000000000001Initialize Kamino lending account
Deposit0b0000000000000010Deposit tokens into Kamino lending
Withdraw0b0000000000000100Withdraw tokens from Kamino lending
Borrow0b0000000000001000Borrow tokens on Kamino lending
Repay0b0000000000010000Repay borrowed tokens
Kamino VaultsDeposit0b0000000000000001Deposit into Kamino vaults
Withdraw0b0000000000000010Withdraw from Kamino vaults
Kamino FarmsStake0b0000000000000001Stake tokens in Kamino farms
Unstake0b0000000000000010Unstake tokens from Kamino farms
HarvestReward0b0000000000000100Harvest farming rewards

Pending Audit

This table lists permissions defined by integration programs that are pending audit.
ProtocolPermission NamePermission BitflagDescription
Stake ProgramStake0b0000000000000001Stake SOL to a validator
Unstake0b0000000000000010Unstake from a validator
Stake PoolDepositSol0b0000000000000001Deposit SOL to a pool
DepositStake0b0000000000000010Deposit stake account to a pool
WithdrawSol0b0000000000000100Withdraw SOL from a pool
WithdrawStake0b0000000000001000Withdraw stake account from a pool
SanctumDepositSol0b0000000000000001Deposit SOL to a pool
DepositStake0b0000000000000010Deposit stake account to a pool
WithdrawSol0b0000000000000100Withdraw SOL from a pool
WithdrawStake0b0000000000001000Withdraw stake account from a pool
MarinadeStake0b0000000000000001Stake SOL to get mSOL
Unstake0b0000000000000010Unstake mSOL to get SOL
CCTPTransfer0b0000000000000001Bridge asset to another chain