EIPs

EIP-2255 — Wallet permissions

eips.ethereum.org/EIPS/eip-2255

A permission system layered on top of EIP-1193. A dapp asks the wallet for a capability (typically eth_accounts); the wallet returns a Permission object recording what was granted and any caveats.

import {
  wallet_request_permissions,
  wallet_get_permissions,
} from "@ethernauta/eip/2255";

const permissions = await wallet_request_permissions({
  eth_accounts: {},
})(signer({ chain_id: eip155_1.chain_id }));

const current = await wallet_get_permissions()(
  signer({ chain_id: eip155_1.chain_id }),
);

Surface

ExportTypePurpose
wallet_request_permissionsSignable<Permission[]>Open the permission prompt.
wallet_get_permissionsSignable<Permission[]>Read current permissions.
Permission, Caveat, RequestedPermissionstypesInferred from schemas.
permissionSchema, caveatSchema, requestedPermissionSchemaValibot schemasValidate wire shapes.

Where it’s used

  • eth_requestAccounts (EIP-1102) creates an eth_accounts permission as a side effect.
  • A dapp can revoke its own access by calling wallet_requestPermissions with restricting caveats.
  • A wallet UI typically exposes “manage connections” — that’s just reading + mutating the permission set.

See also