Skip to main content
Use permissions to define what an authority may do with a Swig wallet. A role combines one authority with an actions list, so the same permission model applies to a single signer or a ParticipantSet with several members. This page lists the 18 actions accepted by wallet.roles.add() in TypeScript 0.10.0 and Python 0.9.0, with their required fields, units, and permission boundaries.

Read the action reference

In TypeScript, each action is an object with a type and the fields listed below. Python uses an exported constructor named after the action, such as ManageAuthorityAction() or TokenRecurringDestinationLimitAction(...). Python field names use snake case: program_id and recurring_amount correspond to TypeScript’s programId and recurringAmount. For a complete transaction example, see Add Roles. To save permissions as reusable wallet-creation configuration, see Policy Templates. Program access and asset spending are checked separately. For example, a SOL transfer needs access to the System Program and an appropriate SOL allowance. Granting program, programAll, or programCurated alone does not grant an unlimited SOL or token allowance.

Amounts addresses and windows

  • Express SOL and staking amounts in lamports, and token amounts in the mint’s smallest units. For a token with six decimals, 1_000_000 represents one token.
  • TypeScript accepts bigint, integer strings, or numbers. Use bigint or integer strings when a value exceeds JavaScript’s safe integer range. Python accepts integers or integer strings.
  • Express window in Solana slots, not seconds. A recurring allowance resets according to its on-chain window; it is not a per-transaction limit or an exact wall-clock schedule.
  • Supply public addresses as base58 strings. A SOL destination is the recipient account. A token destination is the recipient token account, such as its associated token account, rather than the owner’s wallet address.

Management permissions

An authority that can manage roles can grant powerful permissions to another key. Choose it when the signer should administer the wallet.

SOL permissions

Token permissions

For example, a token transfer can combine the appropriate token program permission with tokenDestinationLimit to restrict both the asset and its recipient. The destination account in the permission must match the account used by the transfer.

Program permissions

The curated list is defined by the protocol version. It is not a list supplied by the application, and it does not imply approval of every operation that a listed program exposes.

Staking and sub account permissions

Adding an action grants permission; it does not create a stake account or a sub-account, or prepare its operations automatically. Use the appropriate protocol instructions for those operations. The action list above is the Developer SDK’s AddRoleAction surface, not every permission in every protocol version. In particular, it does not expose ReplaceAuthority, ProgramScope, CloseSwigAuthority, or the scoped V2 sub-account actions. Consult the TypeScript action definitions and Python action definitions when choosing SDK inputs.