Permissions supports EVM, Solana, Cosmos, Stellar, and Sui signing routes. The Developer Portal forms cover a subset of policy shapes; use JSON authoring or work with Para for other supported configurations. Select the wallet type and signing route explicitly, and check the policy reference for the facts supported by each request.
Ordinary Guardrails allow or deny requests without asking for user consent. A policy with conditional approvals adds a separate approval flow. For user-owned SDK wallets, configure Requests: consent grants the application the standing access specified by the policy.
Configure a Guardrail
Create and test Guardrails against a Development API key in the Developer Portal:- Open Permissions and select Guardrails.
- Select Add, choose the networks, and optionally set a policy window.
- Add each transaction action you want to guard and the condition that defines its permitted boundary.
- Review the normalized policy and save it as a draft.
- Activate the draft, then test a transaction inside the boundary and one outside it.
Developer Portal actions
The Developer Portal walkthrough above exposes these EVM transaction actions:
The Developer Portal supports one authored condition per action. Advanced JSON policies can use the supported non-EVM facts and nested conditions described in the Permissions Reference. Use authenticated CLI authoring on beta or contact Para for help with a policy beyond the Portal controls.
Enforcement behavior
For a Guardrail created with these Developer Portal forms, when the REST API receives a transaction signing request:- Para selects the active Guardrail policies that match the API key and transaction selector.
- Para evaluates the transaction action and its configured boundary.
- A transaction inside the boundary continues to signing.
- A transaction outside the boundary is rejected before signing.
- A transaction type that is not covered by an active Guardrail remains allowed for the app-owned wallet.
403 with the code POLICY_DENIED. No signature is created, no transaction is broadcast, and no pending user review is created.
Handle this response as an expected application-level rejection. Log enough request context to identify the attempted action, but do not retry the same transaction without changing the transaction or the policy.
Conditional approvals
A matching conditional approval requirement pauses signing withPOLICY_REVIEW_REQUIRED. The error data includes approvalCaseId when a conditional approval case was created. Read that case with getPartnerApprovalCase(approvalCaseId) and present its state in your application. No signature is produced while the requirement remains unsatisfied.
Eligible people authenticate and complete their approval through the user flow. The partner backend can inspect cases and administer allowed configuration, but cannot approve on a person’s behalf. After the case is approved, retry the original signing request; Para evaluates it again before signing.
Authenticated approvals record people’s decisions. Signature-based requirements collect the configured wallet signatures; completing a case does not itself assemble or broadcast an onchain multisig transaction.
Manage permissions from your backend
Assign roles, bind wallet scopes, configure declared approval settings, and read approval cases.
Selectors and versions
The Portal selects current Guardrails by their complete network set. Ethereum + Base is the same selector regardless of order. Base only is a different selector, so it can have an independent Guardrail. Editing an active Guardrail for the same selector creates its next version and replaces the active version when you select Save changes. Editing a draft keeps the new version in draft. A different selector starts a separate Guardrail.Windowed spend limits
For EVM native and direct ERC-20 transfers, an amount condition can apply to each transaction or to cumulative spend over a fixed window. Cumulative limits:- Use the asset’s base unit.
- Support positive windows in hours, days, or weeks.
- Are scoped to the API key, wallet, network, asset, and window.
- Do not include gas or fees.
transfer(address,uint256). They do not aggregate approvals, transferFrom, router calls, multicalls, non-transfer contract calls, or USD-normalized amounts.
Production
Development and Production API keys do not share policy records. Creating a Production key does not copy or activate the tested Development Guardrail. Para reviews the active Development policy and independently publishes the approved production policy. The Production Permissions page is read-only.Permissions setup
Follow the Development draft, activation, testing, and production workflow.
Permissions reference
Review policy JSON, selectors, actions, conditions, and current limits.