Skip to main content

Overview

Context rules define what signers and policies are required for different operations on your smart account. Access the manager via kit.rules.
// Create a rule
await kit.rules.add(contextType, 'My Rule', signers, policies);

// Read a rule
const rule = (await kit.rules.get(0)).result;

// List all active rules (requires indexer)
const rules = await kit.rules.list();

Methods

add()

Create a new context rule on the smart account.
await kit.rules.add(
  contextType: ContextRuleType,
  name: string,
  signers: ContractSigner[],
  policies: PolicyConfig[]
);
Example:
import { createDefaultContext, createWebAuthnSigner } from 'smart-account-kit';

const context = createDefaultContext();
const signer = createWebAuthnSigner(verifierAddress, publicKey, credentialId);

await kit.rules.add(context, 'Default Rule', [signer], []);

get()

Read a specific context rule directly from the contract by ID.
const result = await kit.rules.get(contextRuleId: number);
const rule = result.result; // ContextRule
get() reads directly from the chain. For listing active rules after deletions, use list() or getAll() - these are indexer-backed because the contract does not expose an iterator over active rule IDs.

list()

List all active context rules. Requires indexer access.
const rules = await kit.rules.list(); // ContextRule[]

getAll()

Get all active context rules of a specific type. Requires indexer access.
const rules = await kit.rules.getAll(contextType: ContextRuleType);

remove()

Delete a context rule by ID.
await kit.rules.remove(contextRuleId: number);

updateName()

Update the display name of a context rule.
await kit.rules.updateName(contextRuleId: number, name: string);

updateExpiration()

Update the expiration ledger for a context rule. After this ledger, the rule is no longer active.
await kit.rules.updateExpiration(contextRuleId: number, expirationLedger: number);

Context Rule Types

Use the builder functions to create context rule type values:
import {
  createDefaultContext,         // Matches any operation
  createCallContractContext,    // Matches calls to a specific contract
  createCreateContractContext,  // Matches contract deployments
} from 'smart-account-kit';

// Default - matches everything
const defaultCtx = createDefaultContext();

// Call contract - only matches invocations of CTARGET
const callCtx = createCallContractContext('CTARGET...');

// Create contract - matches deployments
const deployCtx = createCreateContractContext();
See Builder Functions for the full reference.