{"id":72008,"date":"2026-09-11T05:09:21","date_gmt":"2026-09-11T02:09:21","guid":{"rendered":"https:\/\/lwallet.com.ua\/?p=72008"},"modified":"2026-09-11T05:09:38","modified_gmt":"2026-09-11T02:09:38","slug":"approve-permit-walletconnect","status":"publish","type":"post","link":"https:\/\/lwallet.com.ua\/en\/approve-permit-walletconnect\/","title":{"rendered":"Approve, Permit and WalletConnect: How Permissions Can Drain Your Tokens"},"content":{"rendered":"\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Approve, Permit and WalletConnect<\/strong> are common DeFi mechanisms that can give a contract permission to interact with your assets. Crypto security usually starts with protecting your <a href=\"https:\/\/lwallet.com.ua\/en\/how-to-store-a-seed-phrase\/\">seed phrase<\/a>: keep it offline, never enter it on random websites, and never share it with anyone. But that alone is not enough if you approve a permission or signature without checking exactly what it authorizes.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Approve, Permit, Permit2, WalletConnect and EIP-7702 delegations all work differently, but the critical moment is often the same: you see a familiar Confirm or Sign button and approve the request without understanding what it actually does. Your private keys can remain fully protected while the permission you just granted is enough to move your tokens.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">This guide focuses on what matters before you confirm a request: <strong>how approve and Permit work, why Unlimited approval can be risky, why Disconnect is not the same as Revoke, what WalletConnect actually does, and what changed with EIP-7702<\/strong>. We will also cover how to review active permissions and what to do after signing something suspicious.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Approve, Permit and WalletConnect: where the risk comes from<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Simply opening a website does not give a smart contract permission to spend your ERC-20 tokens. In most cases, it needs a previously granted <code>allowance<\/code> \u2014 permission for a specific address or contract to spend up to a certain amount through <code>transferFrom<\/code>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ordinary swaps, staking and lending depend on this mechanism. The first time you use a new token, a dApp will often ask for an approve transaction before it performs the actual swap. Before confirming it, check <strong>who is receiving the permission, how much they can spend, and how long the permission lasts<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">According to Scam Sniffer, wallet drainers stole about <strong>$494 million from 332,000 addresses<\/strong> in 2024, with malicious Permit signatures accounting for a meaningful share of losses in major incidents. Total losses from this type of attack fell substantially in 2025, but the attack vector did not disappear: convincing a wallet owner to sign the right message is often easier than stealing the private key itself.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">This distinction matters even if you use a hardware wallet. The device isolates your private keys and signs requests internally, but it <strong>does not decide whether a contract is trustworthy or whether you truly intended to grant those exact permissions<\/strong>. If you confirm a malicious request on the device, the wallet can sign it without ever exposing the private key.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]<\/p>\r\n<p>Before confirming anything on a hardware wallet, verify the contract address, amount, transaction type, and other details shown on the device itself. Protecting the private key does not remove the need to verify what you are signing.<\/p>\r\n<p>[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">What a typical permission-based attack looks like<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A typical attack looks completely ordinary. You land on a fake airdrop, mint page, or a copy of a familiar DeFi service, connect your wallet, and receive a request that seems like the natural next step: Claim, Continue, Verify, or Sign.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Behind that button could be an approve for an attacker-controlled address, a Permit for a large amount, or another type of authorization. <strong>The risk appears when you approve the specific request<\/strong>: once the signature is valid, the permission may be used without asking you again.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">The signatures you may see in your wallet<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The <strong>Sign<\/strong> button can refer to very different actions: logging in to a website, signing a structured Permit, or approving a raw hash that the wallet barely explains. Knowing the most common signature formats helps you understand what you are being asked to approve.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">eth_sign: a signature without readable context<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><code>eth_sign<\/code> signs a raw 32-byte value that a typical user cannot meaningfully verify in a normal wallet interface. Because it provides so little readable context, the method is considered risky for everyday dApp use, and modern wallets often restrict it or hide it behind additional settings.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>If a website asks you to enable <code>eth_sign<\/code> separately just to continue, it is better not to approve the request.<\/strong> Modern DeFi services usually support signature formats that let the wallet show more useful information about what you are authorizing.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">personal_sign: commonly used for login<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><code>personal_sign<\/code> is commonly used for authentication or to prove ownership of an address. It is not a standard Ethereum transaction, but you should still read the message carefully: <strong>a service may treat that signed message as authorization for a specific action within its own protocol<\/strong>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">EIP-712: structured signatures<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">EIP-712 allows a wallet to display structured fields instead of an unreadable block of hex data \u2014 for example, the <code>spender<\/code>, amount, deadline, network, and contract. Permit and many Permit2 flows use this format.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A structured format makes the request easier to inspect, but <strong>its safety still depends on the values inside it<\/strong>. If the <code>spender<\/code> points to an attacker-controlled address and <code>value<\/code> allows an excessive amount to be spent, the readable format only helps if you actually review those fields.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Approve: the standard ERC-20 permission<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-1024x573.jpg\" alt=\"Approve and transferFrom: how an ERC-20 allowance works\" class=\"wp-image-71980\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic2.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The <code>approve(spender, amount)<\/code> function records how much the specified <code>spender<\/code> is allowed to spend from your balance. The approve call itself <strong>does not move your tokens<\/strong>; funds move only when the approved spender later calls <code>transferFrom<\/code>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Why Unlimited approval increases the risk<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To avoid asking for approve before every transaction, dApps often request a very large or effectively unlimited allowance. That reduces the number of approvals required for future swaps, but it also leaves the contract with broad spending authority that can remain active for years.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">An old allowance does not disappear just because you stopped using the service. It remains recorded in the token contract until it is changed or revoked. If the contract or related infrastructure is compromised later, <strong>an attacker may be able to use the permission you already granted<\/strong> without needing another signature from you.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">For NFTs, <code>setApprovalForAll<\/code> serves a similar purpose by allowing an operator to manage every NFT you own from a particular collection. Fake mint and claim sites can present this request as a routine step even though the permission is much broader than a single NFT transfer.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]<\/p>\r\n<p><strong>Disconnect does not cancel an on-chain approve.<\/strong> After you disconnect a site, the existing allowance remains in the token contract and stays active until you revoke it separately.<\/p>\r\n<p>[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Permit: granting permission with a signature<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-1024x573.jpg\" alt=\"Permit and Permit2: signatures and dApp permissions\" class=\"wp-image-71983\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic3.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A standard approve requires an on-chain transaction and gas. EIP-2612 Permit works differently: you sign a message off-chain, and a service, relayer, or another party later submits that signature to the token contract.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The message includes fields such as owner, spender, value, deadline, and nonce. After verifying the signature, the contract creates an allowance without a separate approve transaction, which makes the process faster and avoids gas for the user at the signing stage. That can make <strong>a Permit feel like an ordinary message even though it may authorize real token spending<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Signing a Permit may leave no transaction in your wallet history at that moment. A valid signature can be submitted later, as long as the deadline has not passed and the relevant nonce has not already been used.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In March 2026, researchers analyzed an incident in which roughly <strong>$1.76 million in USDC<\/strong> was drained after a malicious Permit signature. According to GoPlus, the user&#8217;s device had been compromised, allowing the attackers to replace the request and obtain a valid signature; the incident did not involve a vulnerability in Permit itself.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If no new allowance appears in a block explorer, that does not rule out the risk. Until the Permit signature is submitted on-chain, a normal approvals list may not show it at all.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">What the domain separator does<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The EIP-712 domain separator binds a Permit to a specific network and contract, reducing the chance that the same signature can simply be replayed in a different context. It does not verify whether you chose the correct <code>spender<\/code>, however: <strong>a signature intentionally or accidentally granted to a malicious address can still be perfectly valid<\/strong>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Permit2: one permission system for many tokens<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Not every ERC-20 token supports EIP-2612, so Uniswap created Permit2 as a separate, universal permission layer. You first grant the Permit2 contract a base on-chain approve, then use signatures to give individual dApps more specific permissions.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When reviewing Permit2, check two separate layers: <strong>the token&#8217;s base approve for the Permit2 contract<\/strong> and the permissions individual applications received through Permit2. Revoking one application-level permission does not necessarily remove the underlying allowance.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Structured Permit2 signatures can contain many technical fields, which makes it easy to approve them mechanically without checking who receives the permission or how broad it is. Phishing flows often rely on exactly that behavior while presenting a familiar-looking DeFi interface.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]<\/p>\r\n<p>Treat Permit requests with the same care as an on-chain approve. If the request appears unexpectedly or you cannot verify the <code>spender<\/code>, amount, and deadline, reject the signature.<\/p>\r\n<p>[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">WalletConnect: connecting without direct access to your tokens<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-1024x573.jpg\" alt=\"Approve, Permit and WalletConnect: wallet connections and signature requests\" class=\"wp-image-71986\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic4.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">WalletConnect is sometimes mistaken for a separate permission to access your assets. Its role is different: the protocol <strong>connects your wallet to a dApp and carries requests between them<\/strong>. Connecting through a QR code or deep link does not, by itself, create a token allowance.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Once the session is established, the dApp can send an approve, Permit, transaction, or message-signing request. Your wallet displays each request separately, so the important question is what the specific action you are about to sign actually authorizes.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When an incident is described as \u201cstolen through WalletConnect,\u201d the underlying cause is often a malicious request delivered through an open session and approved by the user, rather than a compromise of WalletConnect itself.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">Why old sessions should be closed<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Closing a browser tab does not necessarily end a WalletConnect session, so an old connection may remain active and continue receiving requests from the dApp. <strong>It is a good idea to close old or unfamiliar sessions periodically<\/strong>, even though those sessions do not create on-chain permissions by themselves.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Disconnect ends the WalletConnect session with the dApp, while Revoke changes or cancels an on-chain allowance. If a contract previously received Unlimited approval, disconnecting the WalletConnect session does not affect that permission.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"nm-block-heading wp-block-heading\">What remains after Disconnect<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">After Disconnect, the dApp disappears from your active sessions, but a previously granted approve remains valid because <strong>the allowance is stored on-chain in the token contract<\/strong>. Closing the tab, clearing cookies, or disconnecting the site does not change that record.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Revoking an allowance does not necessarily end the WalletConnect session either. If you no longer use a service, review both the active connection and any on-chain approvals separately.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">EIP-7702: a new risk after Pectra<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-1024x573.jpg\" alt=\"EIP-7702: EOA delegation and batched actions\" class=\"wp-image-71989\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic5.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">EIP-7702 went live on Ethereum with the Pectra upgrade on May 7, 2025. It allows an EOA to delegate execution logic to another contract while keeping the same address, enabling features such as batching, third-party gas payment, spending limits, and other smart-account functionality.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Those capabilities also increase the amount of authority a delegated contract can receive. If you authorize <strong>a contract with malicious or substituted logic<\/strong>, a single delegation may allow a batch of actions that would previously have required several separate confirmations.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Wallet drainers began using EIP-7702 soon after Pectra. Reports from 2025 describe major losses involving malicious batch signatures, while researchers also documented sweeper contracts using 7702 on addresses whose keys had already been compromised.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The risk depends on the scenario. If an attacker already has the private key, EIP-7702 can help automate draining funds from the compromised address. In another scenario, <strong>the key remains with the owner, but the user is tricked into signing a dangerous delegation<\/strong>. In the first case, funds should be moved to a new wallet with fresh keys; in the second, revoke the unwanted delegation and check for any other signs of compromise.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">An unfamiliar smart-account or EIP-7702 delegation deserves investigation. Check which contract received the delegation and when it happened. An unknown delegation does not automatically mean your seed phrase has been exposed, but it should not be ignored.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">How to review and revoke permissions<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">There is no single place to review <strong>Approve, Permit and WalletConnect<\/strong>. On-chain approvals are checked through permission-management tools or a block explorer, while WalletConnect sessions are managed directly in your wallet. For ERC-20 tokens and NFTs, a service such as <strong>revoke.cash<\/strong> can show active approvals and the contracts that hold them.<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li><strong>ERC-20 approve.<\/strong> Review Unlimited and unusually large allowances, especially those granted to old or unused contracts.<\/li>\r\n\r\n\r\n\r\n<li><strong>NFT approvals.<\/strong> Check <code>setApprovalForAll<\/code> if you have used mint sites, marketplaces, or other NFT dApps.<\/li>\r\n\r\n\r\n\r\n<li><strong>Permit2.<\/strong> Review both the base approve granted to Permit2 and the individual permissions issued to applications through it.<\/li>\r\n\r\n\r\n\r\n<li><strong>WalletConnect.<\/strong> Close old and unnecessary sessions separately from your review of on-chain permissions.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Revoking an on-chain permission is a separate transaction and requires gas, so cancelling every approval immediately after use is not always practical. A better approach is to <strong>review your permissions periodically and remove those you no longer need<\/strong>, especially after experimenting with new DeFi services, mints, or airdrops.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Permit is different: an off-chain signed message will not appear among your on-chain approvals until it is used. If you have reason to believe an attacker obtained that signature, do not wait for a new record to appear in an explorer before protecting your assets.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">There is no need to audit permissions every day, but after actively testing new DeFi protocols, it is worth checking <strong>which contracts still have authority over your assets<\/strong>. This is especially useful before sending a significant amount of a token to an address that has granted approvals in the past.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">What to check before signing<\/h2>\r\n\r\n\r\n<div class=\"wp-block-image wp-block-image size-large is-style-default blog-img\">\r\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-1024x573.jpg\" alt=\"Crypto wallet signing safety checklist\" class=\"wp-image-71992\" title=\"\" srcset=\"https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-1024x573.jpg 1024w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-300x168.jpg 300w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-766x429.jpg 766w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-1536x860.jpg 1536w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-349x195.jpg 349w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6-679x380.jpg 679w, https:\/\/lwallet.com.ua\/wp-content\/uploads\/2026\/09\/blog-approve-permit-walletconnect-11-09-2026-content-pic6.jpg 1631w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Before you press Confirm, check the fields that determine how much authority the request actually grants.<\/p>\r\n\r\n\r\n\r\n<ul class=\"nm-block-list wp-block-list\">\r\n<li><strong>Check the domain.<\/strong> Open DeFi services from bookmarks or official sources instead of relying on ads or random links.<\/li>\r\n\r\n\r\n\r\n<li><strong>Verify the <code>spender<\/code> and contract.<\/strong> If an address is unfamiliar, compare it with the service&#8217;s official documentation or check it in a block explorer.<\/li>\r\n\r\n\r\n\r\n<li><strong>Check the amount and deadline.<\/strong> An Unlimited amount or an unusually long validity period for a one-time action deserves extra scrutiny.<\/li>\r\n\r\n\r\n\r\n<li><strong>Do not sign unreadable data.<\/strong> If your wallet shows only raw hex with no understandable description of the action, you cannot meaningfully verify what the signature authorizes.<\/li>\r\n\r\n\r\n\r\n<li><strong>Keep your main funds separate from experiments.<\/strong> Use a separate wallet with a limited balance for new dApps, mints, and airdrops.<\/li>\r\n\r\n\r\n\r\n<li><strong>Verify the hardware wallet screen.<\/strong> Before signing, rely on the information shown by the device itself and make sure it matches the action you intended to perform on the website.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">[vc_message color=&#8221;warning&#8221; message_box_style=&#8221;classic&#8221; message_box_color=&#8221;alert-warning&#8221; style=&#8221;rounded&#8221;]<\/p>\r\n<p>If the request does not match the action you just initiated, or you cannot clearly verify its key fields, reject the signature and return to the transaction only after you understand why the request appeared.<\/p>\r\n<p>[\/vc_message]<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">What to do if you already signed a suspicious request<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you just approved a suspicious approve, Permit, or EIP-7702 delegation and you are not sure what it authorized, assume the permission may already be usable. <strong>Protect your assets first, then investigate the details.<\/strong><\/p>\r\n\r\n\r\n\r\n<ol class=\"nm-block-list wp-block-list\">\r\n<li><strong>Move valuable assets to a safe address.<\/strong> This is especially important if you suspect an off-chain Permit signature may already be in an attacker&#8217;s hands.<\/li>\r\n\r\n\r\n\r\n<li><strong>Revoke suspicious on-chain approvals.<\/strong> Check ERC-20 approve, NFT <code>setApprovalForAll<\/code>, and Permit2 permissions.<\/li>\r\n\r\n\r\n\r\n<li><strong>Review EIP-7702 and smart-account delegations.<\/strong> Revoke any unfamiliar delegation. If you also see signs that the private key itself was exposed, move the funds to a new wallet with fresh keys.<\/li>\r\n\r\n\r\n\r\n<li><strong>End WalletConnect sessions<\/strong> and stop interacting with the suspicious site.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Once the funds are protected, review the transaction history, contract addresses, and signature data to determine exactly what permission was granted and whether any other active authorizations remain.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"nm-block-heading wp-block-heading\">Conclusion<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Approve, Permit and WalletConnect<\/strong>, along with Permit2 and EIP-7702, serve different purposes. Approve creates a token allowance, Permit lets you grant that permission with an off-chain signature, Permit2 centralizes permission management, WalletConnect carries requests between a dApp and your wallet, and EIP-7702 lets an EOA delegate smart-contract logic.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Before signing, verify the <code>spender<\/code>, amount, deadline, and contract even when the website is familiar and the request looks routine. Keep your main funds away from experimental dApps, and periodically review old approvals so you can revoke permissions you no longer need.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A hardware wallet protects your private keys, but you still need to verify the request before pressing Confirm. Secure key storage does not replace checking exactly what authority you are giving to a contract.<\/p>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Approve, Permit and WalletConnect are common DeFi mechanisms that can give a contract permission to interact with your assets. Crypto security usually starts with protecting your seed phrase: keep it offline, never enter it on random websites, and never share it with anyone. But that alone is not enough if you approve a permission or &hellip;<\/p>\n","protected":false},"author":10,"featured_media":71978,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2725],"tags":[],"class_list":["post-72008","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-security"],"_links":{"self":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts\/72008","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/comments?post=72008"}],"version-history":[{"count":2,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts\/72008\/revisions"}],"predecessor-version":[{"id":72010,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/posts\/72008\/revisions\/72010"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/media\/71978"}],"wp:attachment":[{"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/media?parent=72008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/categories?post=72008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lwallet.com.ua\/en\/wp-json\/wp\/v2\/tags?post=72008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}