---
title: "Policy-bound agent sessions"
description: "Create short-lived, scoped, signed, and revocable authorization."
canonical: "https://ens.tools/docs/policy-sessions"
section: "Agent platform"
stability: "experimental"
version: "agent-policy v1 · execution-permission v1"
verifiedAt: "2026-07-29"
owner: "ENS.Tools Agent Authorization"
---

# Policy-bound agent sessions

Create short-lived, scoped, signed, and revocable authorization.

## Overview

A policy is an EIP-712 envelope that a compatible executor can enforce before privileged operations. Wallet-native execution permissions add session keys, exact targets and selectors, call limits, and cumulative value. The durable authorizer resolves ENS live and commits usage atomically.

## What this covers

- Issuer and ENS grantee with optional resolved-address binding.
- Exact allowed MCP tool names.
- Allowed ENS name suffixes.
- Maximum attached ETH value and expiration.
- Public issuance event, live verification, lookup, and signed revocation.
- EOA and ERC-1271 execution-policy signatures with ERC-7715 wallet permission preparation.
- Append-only, idempotent authorization receipts with atomic call and cumulative-value limits.
- Zero-dependency JavaScript SDK and Express/Connect fail-closed middleware.

## Before you run this workflow

### Networks

- Ethereum mainnet EIP-712 domain
- Wallet-selected execution chain where supported

### Prerequisites

- Issuer wallet
- ENS grantee resolving to the intended agent wallet
- Compatible fail-closed executor

### Wallet permissions

- EIP-712 policy signature
- Optional ERC-7715 permission request and ERC-7710 delegated execution

### Expected result

- Published policy
- Live verification decision
- Append-only idempotent usage receipt

### Errors and recovery

- Publish signed revocation
- Expire short sessions
- Deny execution when identity, policy, usage, or simulation evidence is unknown

## How to use it

1. **Define the smallest scope.** Name only the tools, ENS suffixes, value ceiling, and duration the agent needs.
2. **Prepare and read the envelope.** Confirm issuer, grantee, resolved address, chain, policy ID, and human-readable limits.
3. **Sign and publish.** Sign the EIP-712 data, then publish the signed envelope so compatible executors can verify it.
4. **Simulate the exact use.** Collect fresh identity and endpoint evidence and simulate the intended target, selector, and value.
5. **Authorize every execution.** Call authorize_agent_execution with one stable idempotency key. Proceed only when execution.mayProceed is true.
6. **Retain the receipt.** Store the request hash and append-only usage receipt with execution evidence. Retrying the same key does not consume the limit twice.
7. **Revoke when needed.** Prepare and sign the revocation, publish it, and confirm that subsequent verification fails closed.

## A policy is not wallet control

> It does not approve or broadcast a transaction. The wallet enforces its own permission; compatible executors must still call the durable authorizer, honor a denied receipt, and install audited onchain caveats for untrusted runtimes.

## Related guides

- [Intent routing](https://ens.tools/docs/intent-router)
- [Agent jobs, quotes, and escrow evidence](https://ens.tools/docs/agent-commerce)
- [Safety, simulation, and signing](https://ens.tools/docs/safety-and-signing)
