Understanding Policies
A Policy combines two key components:- Signer: The cryptographic identity (authority) that controls the wallet
- Permission: The set of allowed actions for that signer
Key Concepts
Signers
A Signer represents a cryptographic authority that can sign transactions for the wallet. Each signer has:- Type: The signature algorithm used
- Public Key: The cryptographic public key
- Max Duration Slots (for sessions): How long the authority remains valid
Permissions
A Permission defines what actions a signer can perform. Permissions are composed of one or more Actions that specify allowed operations.Authority Types
Swig supports multiple authority types for different use cases:Action Types
Actions define what operations are permitted: General:All- Full access to all operationsAllButManageAuthority- Everything except adding/removing signersManageAuthority- Can add and remove signers
SolLimit- Transfer up to a specified amount of SOLSolRecurringLimit- Transfer up to an amount within a time windowSolDestinationLimit- Transfer to a specific destination onlySolRecurringDestinationLimit- Recurring limit to specific destination
TokenLimit- Transfer up to a specified amount of a tokenTokenRecurringLimit- Token transfer with time-based limitsTokenDestinationLimit- Token transfer to specific destinationTokenRecurringDestinationLimit- Recurring token limit to destination
Program- Can interact with a specific program IDProgramAll- Can interact with any programProgramCurated- Can interact with curated/approved programs
StakeLimit- Stake up to a specified amountStakeRecurringLimit- Staking with time-based limitsStakeAll- Full staking permissions
SubAccount- Can manage sub-accounts
Creating a Policy
Step 1: Navigate to Policies
- Log in to the Developer Portal
- Select your project
- Click Policies in the navigation menu
Step 2: Start Policy Creation
Click the Create Policy button to open the policy creation dialog.Step 3: Select or Create a Permission
The first step asks you to choose permissions: Option A: Use an Existing Permission- Search and select from your previously created permissions
- Useful for reusing permission sets across multiple policies
- Blank: Start with no actions (add your own)
- Full Access: Includes the
Allaction - Other templates may be available
- Configure custom actions for this policy
- The permission is saved and can be reused later
Step 4: Configure the Policy
Fill in the policy details:Basic Information
- Policy Name (required): A descriptive name, e.g.,
user-wallet-policy - Description (optional): Explain the policy’s purpose
Signer Configuration
Choose one of three options: Link Existing Signer:- Select from signers you’ve previously created
- Useful for reusing the same authority across policies
- Signer Name: Descriptive name for the signer
- Type: Select the authority type (Ed25519, Secp256k1, etc.)
- Public Key: The authority’s public key
- For Ed25519: Base58-encoded public key
- For Secp256k1/Secp256r1: Hex-encoded (64 bytes)
- Max Duration Slots (session types only): How long the session is valid
- Create the policy without a signer
- You must provide the signer when creating wallets via the API (using
signerId, orwalletAddress+walletType)
Permission Configuration
If you didn’t select an existing permission:- Use the Permissions Builder to add actions
- Configure limits and destinations as needed
- At least one action is required
Step 5: Create the Policy
Review your configuration and click Create Policy.Policy Status
Policies have different statuses based on their configuration:Example: Creating a Limited Transfer Policy
Here’s an example of creating a policy that allows limited SOL transfers:- Policy Name:
limited-sol-transfer - Description:
Allows up to 1 SOL transfers per day - Signer:
- Type:
ED25519 - Public Key: Your user’s Solana public key
- Type:
- Permission Actions:
SolRecurringLimit:- Amount:
1000000000(1 SOL in lamports) - Window:
86400(24 hours in seconds)
- Amount:
Managing Policies
Viewing Policies
The Policies page shows:- Policy name and description
- Attached signer (if any)
- Permission summary
- Status indicator
- Last updated timestamp
Updating Policies
Click on a policy to:- Change the name or description
- Attach a different signer
- Update the permission
Deleting Policies
Next Steps
Now that you’ve created a policy, you can:- Fetch the policy via the API to verify its configuration
- Create Swig wallets using your policy

