> ## Documentation Index
> Fetch the complete documentation index at: https://new-docs.squads.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Permissions Reference

## Overview

Permissions limit what actions specific members can take in your Squad. Assign different roles to create a secure and flexible multisig setup.

<img src="https://mintcdn.com/multisig/AWp7cr7Qyh8wtfxN/images/squads-multisig-permissions-roles-proposer-voter-executor-squads-solana-multisig-multi-signature-wallet-account-abstraction-solana-aa-smart-contract-wallet.png?fit=max&auto=format&n=AWp7cr7Qyh8wtfxN&q=85&s=8a2abf7482123ae38a1834b429b8849d" alt="Permissions and Roles" width="4000" height="2104" data-path="images/squads-multisig-permissions-roles-proposer-voter-executor-squads-solana-multisig-multi-signature-wallet-account-abstraction-solana-aa-smart-contract-wallet.png" />

## Permission Types

| Permission | Description |
| - | - |
| **Proposer** | Members who can initiate transactions |
| **Voter** | Members who can vote on proposals |
| **Executor** | Members who can execute transactions |
| **Almighty** | Members with all permissions (Proposer + Voter + Executor) |

## SDK Usage

The SDK provides a `Permissions` enum that abstracts permission complexity.

```typescript theme={null}
import * as multisig from "@sqds/multisig";
import { Connection, Keypair } from "@solana/web3.js";

// Enums
// "Permission" gives single permissions to aggregate in any combination
// "Permissions" provides a method for almighty, and method to aggregate other permissions
const { Permission, Permissions } = multisig.types;

async function main() {
    /*
    See Instructions -> Create Multisig for full snippet
    */

    const ix = await multisig.instructions.multisigCreateV2({
        createKey: createKey.publicKey,
        creator: creator.publicKey,
        multisigPda,
        configAuthority: null,
        timeLock: 0,
        members: [{
                key: creator.publicKey,
                // Granted Proposer, Voter, and Executor permissions
                permissions: Permissions.all(),
            },
            {
                key: secondMember.publicKey,
                // Member can only add votes to proposed transactions
                permissions: Permissions.fromPermissions([Permission.Vote]),
            },
        ],
        threshold: 2,
        // Program config treasury account
        treasury: configTreasury,
        rentCollector: null
    });
}
```

## Permission Mappings

Permissions in the program are mappings of u8 values. When using the CLI or interacting directly with the program without the SDK, use these values:

| Permission | Value |
| - | - |
| Proposer | 1 |
| Voter | 2 |
| Executor | 4 |
| Almighty (all) | 7 |

### Combining Permissions

Stack permissions by adding up the values:

* **Proposer + Voter**: 1 + 2 = 3
* **Proposer + Executor**: 1 + 4 = 5
* **Voter + Executor**: 2 + 4 = 6
* **All (Proposer + Voter + Executor)**: 1 + 2 + 4 = 7

## Example Configurations

### Simple 2-of-3 Multisig

All members have full permissions:

```typescript theme={null}
members: [
  { key: member1.publicKey, permissions: Permissions.all() },
  { key: member2.publicKey, permissions: Permissions.all() },
  { key: member3.publicKey, permissions: Permissions.all() },
]
```

### Role-Based Multisig

Different members have different responsibilities:

```typescript theme={null}
members: [
  // Admin can propose, vote, and execute
  { key: admin.publicKey, permissions: Permissions.all() },
  // Team members can only vote
  { key: team1.publicKey, permissions: Permissions.fromPermissions([Permission.Vote]) },
  { key: team2.publicKey, permissions: Permissions.fromPermissions([Permission.Vote]) },
  // Bot can only execute approved transactions
  { key: bot.publicKey, permissions: Permissions.fromPermissions([Permission.Execute]) },
]
```

## See Also

* [Create Multisig](/developers/typescript-sdk/instructions/create-multisig)
* [CLI Commands](/developers/cli/cli-install-and-commands)
* [Multisig Account](/developers/reference/accounts#multisig)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.