> For the complete documentation index, see [llms.txt](https://docs.squads.so/main/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.squads.so/main/development/reference/permissions.md).

# Permissions

Permissions allow you to limit what actions specific members can take in your Squad. This is particularly useful when you want to assign different roles or responsibilities to different members. For example, you might want some members to only be able to vote on proposals, while others can initiate and execute transactions.

By assigning specific permissions, you can create a more secure and flexible Squads setup. For instance, you could have:

* `Proposers`: Members who can initiate transactions
* `Voters`: Members who can vote on proposals
* `Executors`: Members who can execute transactions
* `Almighty`: Members with full permissions to manage all aspects of the multisig (this is all of the above assigned to one member)

With the SDK, we provide a `Permissions` enum, that abstracts any of the complexities related to assigning permissions. Here's an example of how this is used with `multisigCreate:`

<pre class="language-typescript"><code class="lang-typescript">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() {
<strong>    /*
</strong><strong>    See Instructions -> Create Multisig for full snippet
</strong><strong>    */
</strong>    
    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,
        rentCollector: null
    });
}
</code></pre>

## Permission Mappings

Permissions in the program are just mappings of u8 values. Stacking permissions for a single member requires adding up the combination of the permission mappings. Each permission maps to the following value:&#x20;

* **Proposer** - 1
* **Voter** - 2
* **Executor** - 4
* **Almighty** (combination of all) - 7

This is only required to be understood if you are using the CLI, or interacting with the program without using the SDK.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.squads.so/main/development/reference/permissions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
