Skip to main content
Policy gates are how WalletSuite decides what an automated actor is allowed to sign. Every signing intent passes through a deterministic Policy Decision Point before the MPC cosigner produces its share. It evaluates the request against your rules and returns one outcome: allow or deny.
Signing runs through MPC threshold signing — no share, no signature. A policy deny means no signature is produced, so a denied intent cannot be signed by anyone. See Agents and Authority for how an automated actor proposes a transaction and why it can never authorize its own.

How rules work

Allowlist rules are your own rules for what may be signed. They are opt-in and deny-by-default: with no active rule, any signing intent on a chain you’re entitled to is admitted; once at least one rule is active, an intent is allowed only if it matches an active rule, and denied otherwise. An intent on a chain you’re not entitled to is always denied. You write rules against typed operations (below), not raw transaction bytes.

Rule Anatomy

A rule matches on the fields below. A field left unset matches any value for that field. All set fields must match for the rule to admit the operation. Match fields are normalized to lowercase before storage so they line up with the operation typing. amountCap is always base units. It is never a USD or decimal value.

Typed Operations

WalletSuite recognizes the following operations. Each rule targets exactly one. An operation outside this set cannot be typed and is denied once your allowlist is armed.

A Rule

A rule that permits USDC transfers on Ethereum to a single payout address, capped per transaction, with a mandatory expiry:
The amountCap here is 5000000000 base units, which is 5000 USDC at 6 decimals. Any transfer to a different destination, above the cap, of a different token, or on a different chain does not match this rule. With this as the only active rule, everything else is denied. For creating, listing, and deactivating rules through the admin API, see Managing Policy Rules.

Off, Shadow, Enforce

The engine has three modes. They are the adoption motion. You watch the engine decide beside your rules before you let it enforce them. The path is shadow first, then enforce. Arm your rules, run in shadow, read the would-deny records, confirm the engine denies exactly what you expect, then switch to enforce. Nothing you did not intend to deny gets denied by surprise.

What a Deny Does

When an intent is denied:
  1. The intent is persisted as denied with the deny reason.
  2. No signature is produced — the cosigner never releases its share for a denied intent.
  3. The decision is recorded in the signing-intents ledger — see Policy Decisions for the record fields.
The decision plane decides. The cosigner enforces. A deny is not a warning that a compliant caller might ignore — it is a signature that is never produced.

Decision Provenance

Every evaluation, allow or deny, produces a fresh policyDecisionId and a stable reason — the seed of your execution evidence. See Policy Decisions → Decision reasons for the reason strings and the full decision record.

Administration

Rules are org-scoped and administered by an admin; every mutation is audited. See Managing Policy Rules for the request shapes and audit snapshots, and Structured Errors for how a policy denial surfaces to a caller.