Wallets & Self-Custody How to Revoke Hidden Site Permissions Safely David Parker August 19, 2026 Disconnecting a wallet from a website does not revoke the permissions that website’s smart contract may already hold over your cryptocurrency. That distinction confuses a lot of users: a wallet connection is just a read-only link that lets a site see your address, while a token approval is an on-chain instruction that lets a specific contract move a defined amount of your tokens whenever it chooses, independent of whether the site’s tab is even open. This matters because approvals don’t expire on their own in most implementations, and many dApps request unlimited allowances by default for convenience. A contract you approved once, months ago, for a site you no longer use, can still hold standing permission to move your tokens today—and if that contract is later compromised or was malicious from the start, the exposure is real and current, not historical. This guide explains how token approvals actually work at the protocol level, why they’re different from a simple wallet connection, and what it takes to audit and revoke them safely. Understanding Wallet Permissions vs. Token Approvals A wallet connection and a token approval solve different problems, and conflating them is where most of the confusion around “hidden permissions” starts. Connecting a wallet shares your public address so a site can display your balance and build transactions for you to sign—it grants no spending power on its own. A token approval is a separate, explicit transaction you sign that writes a permission record directly onto the blockchain itself. Because approvals live on-chain rather than in a browser session, closing a tab, clearing cookies, or disconnecting a wallet in a site’s interface has zero effect on them. The only way to change an approval is to submit another on-chain transaction that updates or removes it—which is exactly why sites offering a “disconnect” button can create a false sense that access has been cut off. Bitcoin‘s UTXO model has no equivalent standing-permission concept; each spend requires a fresh signature with no persistent allowance. This approval mechanism is specific to account-based, smart-contract-capable chains like Ethereum and its EVM-compatible peers. How the ERC-20 Approve and Allowance Mechanism Works The ERC-20 token standard includes an approve function that lets a token holder authorize a specific contract address to transfer up to a set amount of tokens on their behalf. That authorized contract can then call transferFrom at any point afterward, pulling tokens without requiring a new signature each time. This design exists to let decentralized exchanges and other contracts move tokens during multi-step operations without prompting a signature at every single step. Why Unlimited Allowances Became the Default Many dApp interfaces request an approval for the maximum possible token amount rather than the exact amount needed for a single transaction, since this avoids asking the user to sign a new approval every time they interact with the same contract. The convenience trade-off is that the contract’s standing permission stays unlimited indefinitely, regardless of how much was actually used in any given interaction. What a Compromised Contract Can Actually Do If an approved contract is exploited or was deceptive by design, it can call transferFrom to move up to the full approved amount at any future time, without any further action from the token holder. This is distinct from a wallet-draining phishing signature—it’s a standing authorization that was granted knowingly at some point and simply never revisited. What This Means for Your Wallet Security Practically, this means your active risk surface isn’t just the sites you’re currently using—it’s every contract you’ve ever approved and never revoked. Wallet security hygiene for anyone who interacts with multiple dApps needs to include periodic approval audits, not just careful signing in the moment. Revoking an approval means submitting a new transaction that sets the allowance back to zero for that specific contract and token pair. This costs a normal network fee, since it’s a real on-chain state change, not a client-side setting. Common Mistakes Players Make Assuming a wallet’s “disconnect” button removes token spending permissions—it only ends the browser session, not the on-chain allowance Approving the maximum amount by default without checking whether the interface offers an exact-amount option Never revisiting old approvals from dApps no longer in active use, leaving standing risk indefinitely Confusing a malicious signature request with a legitimate approval prompt, since both look similar in a wallet’s confirmation screen Advanced Permission Management Mechanics Permit2 and Off-Chain Signature Approvals Newer standards like Permit2 let approvals be granted through a signed off-chain message rather than a separate on-chain transaction, then verified on-chain at the moment of use. This reduces the number of upfront transactions users need to pay for, but it also means an approval interface can be built around Permit2 in ways less visible to users who are used to inspecting standard approve transactions. Time-Limited and Amount-Limited Approvals Some wallet interfaces now surface options to set both a spending cap and an expiration timestamp on an approval, rather than granting indefinite unlimited access. Where available, this bounds worst-case exposure automatically, without relying on the user to remember to revoke anything manually later. Cross-Chain Approval Fragmentation Because approvals are recorded per chain, the same wallet address can carry entirely separate sets of standing permissions on Ethereum mainnet, various Layer 2 networks, and other EVM-compatible chains. Auditing only one network gives an incomplete picture of total exposure across a multi-chain wallet. Approval Type Standing Risk How to Revoke Unlimited ERC-20 Allowance Full token balance exposed indefinitely On-chain transaction setting allowance to zero Fixed-Amount Allowance Limited to the approved amount On-chain transaction setting allowance to zero Permit2 Signature Approval Varies by dApp implementation Revoke via Permit2-aware approval management tools NFT Operator Approval Full collection transferable by approved operator On-chain transaction removing operator approval Approval-management tools that read directly from the blockchain, rather than a site’s own records, give the most reliable picture since they surface every approval tied to an address regardless of which dApp originally requested it. Revoking Approvals After Using an Unfamiliar dApp A player tries a new platform once for a single swap, grants an unlimited approval during the process, and decides afterward not to keep using the site. The wallet address is checked against an on-chain approval-scanning tool rather than trusting the dApp’s own dashboard Every active approval tied to that address is listed, including ones from sites used long before The approval granted to the new platform’s contract is identified and selected for revocation A revoke transaction is submitted, setting that specific allowance back to zero The Technical Process The revocation is a standard contract call—functionally another approval transaction, just setting the allowance value to zero instead of a positive number—so it costs a normal network fee and requires a wallet signature like any other transaction. The Outcome Once confirmed, that specific contract can no longer move tokens from the wallet under the old approval, regardless of whether the platform itself is later found to be compromised. Other approvals to unrelated contracts are unaffected and need to be reviewed separately if they’re also no longer needed. How Experienced Users Audit Their Approvals Users who interact with many dApps regularly build a habit of checking their full approval list on a fixed schedule rather than only after a specific incident or news report about an exploit. This applies just as much to a wallet used mainly for depositing into ACR Poker software as to one used for active DeFi trading—any contract interaction can leave behind a standing approval. They treat every approval, especially unlimited ones, as a liability revoked as soon as the associated dApp is no longer in active use. Preferring Explicit Amounts Where Possible Where an interface allows it, experienced users manually adjust a requested approval down to the specific amount needed for that transaction instead of accepting a default unlimited request, accepting the minor inconvenience of a future re-approval in exchange for a smaller standing exposure. The Future of Wallet Permission Management Account abstraction and session-key architectures are moving toward permissions that are scoped and time-limited by design rather than indefinite by default, reducing how much standing risk accumulates from routine dApp use. Wallet interfaces are also increasingly surfacing approval history directly, rather than requiring users to rely on separate third-party scanning tools. Until those defaults become universal, the responsibility for tracking and revoking old approvals sits with the user—no wallet currently expires an ERC-20 allowance automatically just because a session ended or a browser tab was closed. Frequently Asked Questions Does disconnecting my wallet from a site revoke its permissions? No. Disconnecting only ends the browser session between your wallet and the site’s interface. Any token approval you previously signed remains active on-chain until you submit a separate transaction that sets that specific allowance back to zero. Why do so many dApps ask for unlimited token approval? It avoids prompting a new approval transaction every time you interact with the same contract, which is more convenient for frequent users. The trade-off is a standing, indefinite spending permission rather than one scoped to a single transaction amount. Does revoking an approval cost a network fee? Yes. Revoking is a real on-chain transaction that sets an allowance to zero, so it requires a wallet signature and pays the same type of network fee as any other transaction, varying with current network congestion. Do I need to check approvals separately on every chain? Yes. Approvals are recorded per chain, so the same wallet address can hold entirely different standing permissions on Ethereum mainnet, Layer 2 networks, and other EVM-compatible chains. Reviewing only one network leaves an incomplete picture of total exposure. Is it safe to approve the exact amount instead of unlimited? Yes, and it reduces standing exposure by limiting what a compromised contract could move to that specific amount. The trade-off is needing to sign a new approval the next time you interact with the same contract for a larger amount.