imtoken will never ask for your seed phrase, private key or verification code. Always review the address, network and request details before transferring, signing or approving.

Security Center

Token Approvals: Spenders, Amounts, Permissions and Revocation

A token approval lets a specified contract or address use tokens within a defined scope. Check the spender, network, token and amount before approving, and consider revoking permissions that are no longer needed.

On this page
What an approval actually grantsWhy the spender and amount matterDisconnecting a DApp does not revoke approvalBuild a regular approval-review habit

What an approval actually grants

An approval commonly records permission to use tokens rather than immediately transferring them; a later contract call can be what moves assets. Token approval generally grants a contract permission over tokens under defined conditions; the spender, amount and persistence of that permission deserve separate review. For “What an approval actually grants,” first identify whether the relevant fact belongs to the local wallet interface, the selected network, or a contract permission. That distinction prevents an interface message from being mistaken for a final on-chain result.

DApp requests should be separated into account connection, message signing, transaction submission and token approval. They may appear consecutively, but their permissions and on-chain effects are different. In the context of “What an approval actually grants,” use a consistent order: establish the account and network, inspect the specific address, contract or request parameters, and only then authorize an action that can move assets or create permissions. DApp requests should be separated into account connection, message signing, transaction submission and token approval. They may appear consecutively, but their permissions and on-chain effects are different.

Within “What an approval actually grants,” a connection is only a session and does not pre-authorize asset actions. A message signature may prove account control, a transaction signature can change on-chain state, and a token approval can create persistent contract permissions; each deserves its own review.

  • Verify the DApp domain and request source
  • Distinguish connection, signing, transactions and approvals
  • Inspect the contract or spender and permission scope
  • Disconnect and review permissions when no longer needed

Common mistakes and a better sequence

If “What an approval actually grants” behaves differently from expected, record the active network, account, requester and any transaction hash, then eliminate possible causes one at a time. Do not keep signing, approving or sending assets merely to repair an issue that has not yet been identified.

Why the spender and amount matter

Approving the wrong contract or an unnecessarily broad amount increases exposure, so the DApp, contract address, token and limit should be fixed parts of the review. Token approval generally grants a contract permission over tokens under defined conditions; the spender, amount and persistence of that permission deserve separate review. For “Why the spender and amount matter,” first identify whether the relevant fact belongs to the local wallet interface, the selected network, or a contract permission. That distinction prevents an interface message from being mistaken for a final on-chain result.

DApp requests should be separated into account connection, message signing, transaction submission and token approval. They may appear consecutively, but their permissions and on-chain effects are different. In the context of “Why the spender and amount matter,” use a consistent order: establish the account and network, inspect the specific address, contract or request parameters, and only then authorize an action that can move assets or create permissions. DApp requests should be separated into account connection, message signing, transaction submission and token approval. They may appear consecutively, but their permissions and on-chain effects are different.

Within “Why the spender and amount matter,” a connection is only a session and does not pre-authorize asset actions. A message signature may prove account control, a transaction signature can change on-chain state, and a token approval can create persistent contract permissions; each deserves its own review.

  • Verify the DApp domain and request source
  • Distinguish connection, signing, transactions and approvals
  • Inspect the contract or spender and permission scope
  • Disconnect and review permissions when no longer needed

How to verify the result

If “Why the spender and amount matter” behaves differently from expected, record the active network, account, requester and any transaction hash, then eliminate possible causes one at a time. Do not keep signing, approving or sending assets merely to repair an issue that has not yet been identified.

Disconnecting a DApp does not revoke approval

Front-end connection state and on-chain permission are separate; closing a page or disconnecting a wallet normally does not delete an approval already recorded on-chain. Token approval generally grants a contract permission over tokens under defined conditions; the spender, amount and persistence of that permission deserve separate review. For “Disconnecting a DApp does not revoke approval,” first identify whether the relevant fact belongs to the local wallet interface, the selected network, or a contract permission. That distinction prevents an interface message from being mistaken for a final on-chain result.

When an interaction is finished, disconnect sessions that are no longer useful and review persistent approvals periodically. Revoking an old approval cannot undo a past transaction, but it can remove an unnecessary future permission. In the context of “Disconnecting a DApp does not revoke approval,” use a consistent order: establish the account and network, inspect the specific address, contract or request parameters, and only then authorize an action that can move assets or create permissions. DApp requests should be separated into account connection, message signing, transaction submission and token approval. They may appear consecutively, but their permissions and on-chain effects are different.

Within “Disconnecting a DApp does not revoke approval,” a connection is only a session and does not pre-authorize asset actions. A message signature may prove account control, a transaction signature can change on-chain state, and a token approval can create persistent contract permissions; each deserves its own review.

  • Verify the DApp domain and request source
  • Distinguish connection, signing, transactions and approvals
  • Inspect the contract or spender and permission scope
  • Disconnect and review permissions when no longer needed

A pre-confirmation review

If “Disconnecting a DApp does not revoke approval” behaves differently from expected, record the active network, account, requester and any transaction hash, then eliminate possible causes one at a time. Do not keep signing, approving or sending assets merely to repair an issue that has not yet been identified.

Build a regular approval-review habit

Review permissions for DApps you no longer use, unfamiliar contracts and access that is no longer needed, while verifying the correct network and spender before revoking. Token approval generally grants a contract permission over tokens under defined conditions; the spender, amount and persistence of that permission deserve separate review. For “Build a regular approval-review habit,” first identify whether the relevant fact belongs to the local wallet interface, the selected network, or a contract permission. That distinction prevents an interface message from being mistaken for a final on-chain result.

When an interaction is finished, disconnect sessions that are no longer useful and review persistent approvals periodically. Revoking an old approval cannot undo a past transaction, but it can remove an unnecessary future permission. In the context of “Build a regular approval-review habit,” use a consistent order: establish the account and network, inspect the specific address, contract or request parameters, and only then authorize an action that can move assets or create permissions. DApp requests should be separated into account connection, message signing, transaction submission and token approval. They may appear consecutively, but their permissions and on-chain effects are different.

Within “Build a regular approval-review habit,” a connection is only a session and does not pre-authorize asset actions. A message signature may prove account control, a transaction signature can change on-chain state, and a token approval can create persistent contract permissions; each deserves its own review.

  • Verify the DApp domain and request source
  • Distinguish connection, signing, transactions and approvals
  • Inspect the contract or spender and permission scope
  • Disconnect and review permissions when no longer needed

A pre-confirmation review

If “Build a regular approval-review habit” behaves differently from expected, record the active network, account, requester and any transaction hash, then eliminate possible causes one at a time. Do not keep signing, approving or sending assets merely to repair an issue that has not yet been identified.