What Are Token Approvals? Why Unlimited Allowances Are Risky
How ERC-20 approve and allowance mechanics work, and why granting unlimited token approvals exposes your funds to risk.
A token approval is a permission you grant to a smart contract — usually a DEX, lending protocol, or other DeFi application — allowing it to move a specified amount of a specific token out of your wallet on your behalf, without needing your signature for each individual transfer afterward. Approvals are what let DeFi apps interact with your tokens at all, since a smart contract can't move funds out of your wallet without this explicit permission.
Approvals are a foundational, necessary part of how DeFi works — every swap on a decentralized exchange, every deposit into a lending protocol, and every liquidity provision starts with an approval. But the mechanics of how approvals are typically granted create a persistent, often invisible risk that most users never revisit.
How the approve/allowance mechanism works
The ERC-20 token standard (the specification most tokens on Ethereum and compatible chains follow) includes two key functions:
approve(spender, amount)— lets a token holder authorize a specific contract address ("spender") to transfer up to a specified amount of their tokens.transferFrom— the function the approved spender contract then calls to actually move tokens, up to the approved amount, whenever it needs to (for example, executing a swap you requested).
This two-step design exists because a smart contract can't unilaterally pull funds from any wallet — it needs standing permission first. Once granted, that permission remains active indefinitely, or until you use it up (in a limited approval) or explicitly revoke it — it does not expire automatically after a single use unless the amount approved matches exactly what's used.
Why unlimited approvals are so common
Because gas fees apply to every on-chain transaction, many DeFi interfaces default to requesting an unlimited approval — technically, an amount set to the maximum possible integer value — rather than the exact amount needed for a single transaction. This means you only pay the approval gas fee once, and future interactions with that same contract don't require repeated approval transactions. It's a legitimate convenience optimization, but it comes with a durable tradeoff: that contract now has permission to move your entire balance of that token, at any point in the future, for as long as the approval remains active.
Where the risk actually materializes
An unlimited approval by itself isn't a loss — it only becomes dangerous if the approved contract is later compromised, was malicious from the start, or is a legitimate protocol that gets hacked. If any of those occur, an attacker who gains control of the contract's logic (or simply is the malicious contract) can call transferFrom and move your entire approved balance, without needing any further signature from you at that moment. This is exactly the mechanism behind many wallet drainer attacks — the drain doesn't require a new signature if a prior unlimited approval already exists and is later exploited.
Crucially, this risk persists silently. You might approve a protocol once, stop using it entirely, and forget about it — but the approval remains live on-chain indefinitely unless you revoke it, meaning a protocol you used once years ago and never think about could still be a live liability today.
Approval risk by scenario
| Scenario | Risk level | Why |
|---|---|---|
| Unlimited approval to an audited, actively maintained protocol you still use | Lower, but nonzero | Risk persists if the protocol is ever hacked or compromised |
| Unlimited approval to an abandoned or one-time-use protocol | Higher | No ongoing monitoring, easy to forget it exists |
| Limited approval scoped to the exact transaction amount | Lowest | Approval is exhausted after the specific transaction |
| Approval to an unverified or unaudited contract | Highest | No independent assurance the contract behaves as expected |
Managing approval risk
The most direct mitigation is choosing limited approvals — scoped to the exact amount a transaction needs — over unlimited ones where your wallet or the dApp interface allows the choice, accepting the tradeoff of a small additional gas cost on future interactions. See our comparison of unlimited vs. limited approvals for a fuller breakdown of that tradeoff. Regardless of which you choose going forward, periodically reviewing and revoking old, unused approvals using a dedicated approval-checking tool closes off exposure from forgotten past interactions — our guide on how often to revoke approvals and our roundup of approval checker tools both cover this in practice. The glossary has more background if smart contract terminology is unfamiliar.
Bottom line
Token approvals are what make DeFi functional, not a flaw to avoid entirely — but the common default of granting unlimited, indefinite permission trades a small amount of future convenience for an open-ended liability that persists long after you've stopped thinking about a given protocol. Favoring limited approvals when practical, and revoking unused ones on a routine basis, keeps that liability from quietly accumulating across every protocol you've ever touched.
Related articles
This article is for educational purposes only and is not financial advice. DeFi involves significant risk, including total loss of funds. Always do your own research.