The problem with classic approvals
An ERC-20 token cannot be moved by a contract unless you first approve that contract as a spender. That rule is sound, but the way apps use it has created lasting risks:
One approval per contract
Every router you use needs its own approval transaction for every token, each costing gas.
Unlimited by habit
Many apps ask for an unlimited amount so you never approve again. If that contract is exploited, the whole balance is exposed.
No expiry
An approval granted years ago to a contract you forgot about is still active until you revoke it.
Revoking costs gas
Cleaning up is another on-chain transaction per token and spender, so most people never do it.
Token-level permits (EIP-2612) let you approve with a signature instead of a transaction, but only tokens that implement them support them, and many widely used tokens do not.
What Permit2 is
Permit2 is a token approval contract published by Uniswap Labs and deployed at the same address on every major EVM chain. It sits between your tokens and the apps that want to move them.
You approve Permit2 once for a token. From then on, an app can only pull that token through Permit2, and only with a valid permit signed by you. Because Permit2 is a separate contract rather than a feature of each token, it works with any standard ERC-20, including tokens deployed long before it existed.
How a Permit2 swap works
Allow Permit2 to hold an allowance
An ordinary on-chain approval with Permit2 as the spender. If Permit2 already has enough allowance for that token, for example from an earlier swap, this step is skipped.
Sign the permit
Your wallet shows an EIP-712 message: the token, the exact amount, the contract allowed to receive it, a one-time nonce and a deadline. Signing costs no gas.
Send the swap
The signature travels inside the swap transaction. Permit2 checks the signer, amount, nonce and deadline, then transfers exactly that amount. Any mismatch reverts.
Permit2 also offers a second mode, allowance transfer, where you sign a standing allowance with an expiry for a given app. The signature-transfer mode above is the stricter one: nothing remains once the swap is done.
How ChainBridge uses Permit2
ChainBridge's 0x routes use Permit2. KyberSwap and ParaSwap routes use a classic approval to their router. In both cases the approval requested is for the exact amount you are swapping, never unlimited.
- Checked spenders. Permit2 and the 0x settlement contract named in the permit are checked against a contract allowlist before you sign, as is every other spender.
- One confirmation when possible. If an approval is needed and your wallet supports atomic batches (EIP-5792), approval and swap are confirmed together. See one-click swaps.
- Simulation. A Permit2 route cannot be simulated until your signature exists, so the review screen says it was not simulated; your wallet shows the final transaction before you send it.
- Smart contract wallets. A Safe or other contract wallet cannot produce this signature. Permit2 routes are excluded for them and an on-chain route is offered instead. See smart contract wallets.
Permit phishing: the main risk
A permit is just a signature, so it never shows up as a pending transaction and costs nothing to give away. Drainer sites exploit that: they present a Permit2 message for a large amount, a spender they control and a deadline far in the future, often disguised as a login or a claim.
More warning signs in DeFi scam red flags.
Reviewing and revoking
The allowance you gave Permit2 for a token is a normal ERC-20 approval. Revoking it on the approvals page cuts off every permit for that token at once, including any you signed and forgot. Unused signature-transfer permits also die on their own at their deadline.
Read the token approvals guide for a routine to keep your approvals tidy.
Common questions
Do I need to approve Permit2 on every network?
Yes. Permit2 has the same address on every chain, but token approvals are per token and per chain. Approving USDC on Ethereum does nothing for USDC on Arbitrum.
Can a permit signature be reused?
Not a signature-transfer permit like the one 0x uses: it has a one-time nonce and a deadline. Once the swap executes, or the deadline passes, it is void.
How is Permit2 different from EIP-2612 permits?
EIP-2612 is built into a token contract, so only tokens that implement it support it. Permit2 is a separate contract that works with any standard ERC-20 token.
Does Permit2 work with ETH?
No. Native ETH (and BNB, AVAX, POL) has no approval mechanism. Selling the native token needs no approval at all; the amount is sent with the transaction.