Supported Permissions for Session Keys

What Permissions Can You Apply to Session Keys?

Session keys work best when they are tightly scoped. Our smart wallets, specifically Modular Account V2, gives you a flexible set of built-in permission types. These permissions are validated onchain removing any dependency on an offchain engine and increasing security of users’ wallets.

Use these to limit what a key can do, for how long, where it can call, and how much it can spend.

Time Range

Supports limiting keys with a start and/or expiry time ranges

ERC-20 Spending Limits

Supports limiting how much of a specific ERC-20 token a key may spend

Gas and native token spending limits

Supports limiting how much native tokens, e.g. ETH on mainnet, a key may spend

Access Control Lists

Supports limiting function selectors and/or external contracts that a key may interact with.

Internal Selector Allowlist

Supports limiting what functions a key may call on the Modular Account (e.g. installing or uninstalling modules, or upgrading the account)

You can combine multiple permissions on a single session key. These can be layered to match the minimum required access for your use case.

Composing Permissions: Fine-Grained Control

Permissions are composable. You can apply multiple permissions to a single session key to tightly define its behavior.

Example: You could create a session key that:

  • Only works between June 1–June 15
  • Can call just one staking contract
  • Spend no more than 100 USDC

Use Case: In Alchemy’s modular wallet demo, one key is scoped to auto-stake a user’s funds once a day, but only within a capped budget and only on a verified contract.

By combining permissions, you can build tailored, safe delegation schemes — perfect for dapps, relayers, and complex workflows.