Skip to main content

Introduction

Program permissions control which Solana applications a role may invoke.
  • Use when: a role needs to transfer, swap, or interact with a particular Solana application.
  • For: integrations that delegate wallet execution to an application signer or session key.

How it works

  1. Identify the programs invoked by the intended transaction.
  2. Grant the matching program permission on the role.
  3. Add the spending limits needed for the assets involved.
  4. Authorize the operation with that role through Signing.

Permissions

  • Prefer Program for a known integration and add each required program explicitly.
  • ProgramScope is not a standalone program allowlist. Classic’s programScopeBasic() does not provide a usable scoped flow; use programLimit() for an explicit program allowlist.
  • ProgramCurated depends on the deployed program’s list; use explicit IDs when the application needs a fixed allowlist.
  • ProgramAll is highly privileged. Use it only when arbitrary program invocation is intended.

SDK example

Allow System Program transfers.
Pass actions to Add a role. This grants System Program access and a total 0.1 SOL budget. For a routed swap, identify every required program and asset allowance before collecting the user’s authorization.