Explainerbeginner7 min read

Wallet connection, signature and token approval: three different permissions

Read a MetaMask signature request by its permissions. Compare wallet connection, sign-in, token approvals, Permit2 and account delegation before signing.

Educational comic: Brokzi stops an impatient giant signing pen while separating a public-account connection screen from a signed spending permit with contract, amount and time checks.
WALLET PERMISSIONSA sign-in is not a spending permit.AI-assisted original illustration · a visual metaphor, not documentary evidence.
On this page

A MetaMask signature request can look like a sign-in screen while authorizing something quite different. Both screens can say "Sign", so read the data underneath before agreeing.

This guide covers Ethereum and compatible EVM permission mechanisms. Wallet versions and applications present them differently; it is not a promise that every flow has three neat popups. If the wallet itself is confusing, read what a crypto wallet manages.

Compare the request, not the button

RequestWhat it can authorizeWhere to read the rules
Basic account connectionSharing your selected address with the siteMetaMask connection
Sign-in messageAn offchain authentication sessionSign-In with Ethereum
ERC-20 approvalA spender's allowance for a tokenERC-20
Signed permitAllowance creation or a transfer, under the particular protocolERC-2612, Permit2
Account authorizationDelegation to account code, or specific smart-account permissionsEIP-7702, MetaMask advanced permissions

The scopes differ, and you will not necessarily see them in this order. Rejecting a later request does not automatically remove an earlier permission.

Connecting exposes an address, not a spending allowance

In MetaMask's basic connection flow, a site gets your account address and can inspect public blockchain balances. That connection alone does not give it an ERC-20 spending allowance.

Sharing an address still has a privacy consequence: a site can associate your visit with that public account. Disconnecting does not erase the site's knowledge or blockchain history. Also, a site's "Connect" button may lead into a separate permission request. Read each wallet screen rather than treating the website's label as the scope.

Signing can authenticate you or authorize an action

MetaMask's signing documentation distinguishes personal_sign, commonly used for authentication, from eth_signTypedData_v4, which displays structured data that can be verified onchain. Neither method name is a verdict that the request is harmless.

A proper Sign-In with Ethereum message identifies the requesting domain, account, URI, chain ID and nonce, with optional time limits. Its job is authentication. Check the domain against the site you intended to use and read the statement. A claim of "login" beside a spending permit does not turn that permit into a login.

Typed data can contain a token, spender, amount and deadline. A neat layout makes these fields easier to read; it does not establish that the contract or requested action is trustworthy. Never approve unreadable data just because there is no immediate balance change. MetaMask documents signature phishing in which an attacker obtains a signature and uses it later.

An approval creates permission; a transfer uses it

In the conventional ERC-20 model, approve(spender, amount) sets how much a spender may take. A later transferFrom uses that authorization. Approving does not itself mean the intended purchase or swap completed.

Read the network, token contract, spender and amount together. A familiar token symbol or app name cannot replace a contract address. For the ongoing-allowance mechanism and its review checklist, use token approvals explained.

Why a gasless signature can still authorize spending

Signing data offchain does not by itself submit an onchain transaction. A protocol can nevertheless accept that signature in a later transaction, possibly sent by somebody else. "No gas fee shown" describes the signing step, not a guarantee about its effects.

ERC-2612: a signed allowance

For a token implementing ERC-2612, a valid permit can set an allowance when submitted onchain. The signed data includes owner, spender, value, nonce and deadline, with a domain tying the signature to its context. Anyone can submit the valid permit; the signer need not be the submitter.

The deadline limits when the permit can be accepted. It does not automatically expire the allowance created by that acceptance. Token-specific variants can behave differently, so check the actual implementation rather than assuming every field called "expiry" has the same meaning.

Permit2: two different spending paths

Uniswap's Permit2 documentation describes an initial ERC-20 approval to the Permit2 contract, then two modules. SignatureTransfer supports a single, nonce-scoped transfer; AllowanceTransfer stores a spender's allowance with an amount and expiration. The latter also has a signature deadline, which is distinct from allowance expiration.

The one-time transfer permission does not persist after use, but the underlying token approval to Permit2 is a separate record. Read which module is involved, the token and amount, the authorized spender where applicable, and the timing. "Permit2" is a mechanism name, not an automatic safety badge.

Account delegation is broader than token approval

EIP-7702 lets an account authorize delegation to code at a specified address. That delegation persists; it is not simply one token's allowance. Its security depends on the delegated implementation. The specification also notes that processed delegations are not rolled back merely because subsequent transaction execution fails.

At a different layer, MetaMask's advanced permissions use smart-account capabilities in supported apps. Requests can specify spending, timing and other limits, and some flows show permissions before basic connection. Do not assume this feature exists in every wallet or that every request has the same safeguards. Check what access is proposed and how that particular permission can end.

A practical pause before signing

  1. Confirm the site through an independently checked route. Do not use a rescue link from an unsolicited message.
  2. Identify the request: account access, authentication, spending, transaction or account delegation.
  3. Check the actual network and contracts. For sign-in, check the domain and URI; for spending, inspect asset, recipient or spender, and amount.
  4. Read nonce and time fields where present. A submission deadline and a spending-permission expiration can be different conditions.
  5. Compare the action with what you intended. If you cannot explain what the request permits, reject it and consult the wallet or protocol's official documentation.

Keep your seed phrase and private key out of every site form, support chat and permission checker. This guide asks you to read permissions, not connect a wallet or test a transaction with real funds.

Does disconnecting revoke permission?

No. MetaMask distinguishes disconnection from allowance revocation. For a conventional ERC-20 allowance, revocation changes a token-contract record through an onchain transaction and costs a network fee. Verify the resulting allowance; submitting a transaction is not confirmation.

Signed permits, Permit2 permissions and delegated accounts need their own checks. An empty ERC-20 approval list does not prove that every authorization is closed. Revocation does not recover an already completed transfer or repair an exposed private key.

Before agreeing to a MetaMask signature request, check who may do what, with which asset or account, under which limits. You need the request's details to answer that.

Sources

Primary documentation read 5 October 2026. Provider interfaces can change; this is a mechanism comparison, not a live wallet test or endorsement.

See something wrong? Brokzi logs material changes. Prepare a correction note.

About the byline

Brokzi Editorial

The accountable byline for Brokzi’s explainers, definitions, news notes, and corrections.

Editorial responsibility →