Wallet safety / Updated 2026-09-17
Sweeper Bots: Why Money Disappears the Second You Refill a Compromised Wallet
When a key leaks, an automated bot takes up residence in the wallet and drains every deposit within seconds. Why you cannot outrun it, why sending gas makes it worse, and the only order of operations that gets your remaining assets out.
How this guide is checked
Official sources first, no wallet connection, no guaranteed returns.
Reviewed on 2026-09-17 by WildWildCrypto Safety Desk. Method: Human editorial review with official-source checks, affiliate-disclosure checks, and no-financial-advice checks.
Publisher: WildWildCrypto Editorial. Corrections go through the contact page. We do not ask for seed phrases or tell you what to buy.
sweeper bot compromised wallet matters because You found out something got your recovery phrase, you sent a little gas in to rescue the rest, and it vanished before the page finished loading — so now you are wondering whether you are being watched in real time, and whether there is any amount of speed that wins.
This guide explains what is actually sitting on that address, why the race is unwinnable by design, how a newer Ethereum feature lets an attacker leave code behind that survives an empty balance, and the exact order in which to move what is left.
You will learn why depositing gas is the single most common way people lose a second time, what a delegation is and how to check whether one is on your address, the transfer sequence one major wallet publishes specifically for this situation, and why the phrase itself can never be repaired — only abandoned.
The wallet is not broken — it is occupied
The mental model most people arrive with is that a hacked wallet is damaged goods: something went wrong inside it, and with the right fix it could be made safe again. That model produces every bad decision that follows. A wallet is not a container. It is a set of addresses derived from a secret, and if that secret leaked, the accurate description is not that your wallet is broken but that somebody else holds a complete, permanent copy of it — and has almost certainly automated what they do with it.
Phantom's support documentation describes the tool they use plainly: a sweeper bot monitors the blockchain for incoming transactions and immediately transfers newly deposited assets to an attacker-controlled address. These bots run continuously and, in Phantom's phrasing, operate far faster than a human can react. They do not sleep, they do not get bored after a week, and they cost the attacker essentially nothing to leave running on thousands of addresses at once. Many people only discover their key is gone because of the symptom rather than the cause — money keeps arriving and then leaving within seconds, over and over, and no explanation fits until this one does.
This is why the instinct to 'secure the wallet' by changing something — a password, a PIN, a device, an app — accomplishes nothing at all. Those protect access to a phrase. They do not change the phrase, and the phrase is what was taken. There is no rotate function, because the words mathematically produce the keys; a new phrase means new keys, which means a different wallet entirely. Phantom's guidance reflects the same reality from the other end: they do not offer fund recovery services, and in most cases, once funds are swept, they cannot be recovered.
So the objective changes. You are not defending this wallet. You are evacuating it once, in the right order, and never touching it again — without handing the attacker a second helping on the way out.
Checklist
- A leaked recovery phrase is copied, not damaged — it cannot be repaired or rotated.
- Phantom: a sweeper bot watches for incoming transactions and immediately moves them out.
- Phantom: these bots operate far faster than a human can react.
- Changing a PIN, password, app or device does not change the phrase.
- Phantom: once funds are swept they usually cannot be recovered.
- The goal is a one-time evacuation, not a repair.
Why the race is unwinnable, and why gas is the trap
The single most common second loss happens like this. Tokens or an NFT are still sitting in the compromised wallet. Moving them costs a network fee, and the wallet has no fee token left because that was the first thing swept. So the owner sends in a small amount of ETH, SOL or whatever the chain requires — and it is gone before they can sign anything. It feels like bad luck or bad timing. It is neither. It is the design working exactly as intended.
The bot is not clicking a button when it notices you. It is watching the pending-transaction pool and submitting its own transaction the moment your deposit is visible, with a fee set high enough to be processed first. You are competing against software that is already awake, already funded, and already authorised by the same key you are using. There is no browser speed, no mobile app, no early morning hour that changes this.
MetaMask's own migration documentation for exactly this situation says so without hedging: if your account has been compromised, adding more of the network's gas token to your account may result in the new gas token balance being swept out before you can take any actions. That is the official guidance from a wallet with every commercial reason to tell you something more hopeful, and it is worth trusting over any forum post promising a trick.
There is one legitimate technical route, and MetaMask names it: transaction bundling, submitted through a service such as Flashbots, where the funding transaction and the rescue transaction are grouped so that they either execute together or not at all — removing the window the bot exploits. Understand what that is before pinning hope on it. It is specialist tooling, it does not work identically on every chain, and a rushed attempt made in a panic can itself cost money. For a modest amount of stranded tokens it is often not worth it. For a high-value NFT or a large token balance, it is the only approach with a real chance, and it is worth reading the documentation slowly before touching anything.
What is never worth it is the third option: anyone who contacts you offering to do the rescue. A drained address is public and its distress visible on-chain, so whoever offers help found you the way the bot did.
Checklist
- The bot watches pending transactions and outbids you on fees — speed cannot win.
- MetaMask: adding gas to a compromised account may be swept before you can act.
- Transaction bundling (e.g. Flashbots) groups funding and rescue so both happen or neither does.
- Bundling is specialist tooling — worth it for high value, rarely for small balances.
- Never accept an unsolicited offer to rescue a visibly drained address.
- A drained address is public; the 'helpers' who appear found you the same way the bot did.
Delegated code: the part that survives an empty wallet
Something changed in 2025 that most post-compromise advice has not caught up with. EIP-7702, now final in the Ethereum specification, adds a transaction type that allows ordinary externally owned accounts to set code in their account — in the specification's own words, a delegation indicator is written to the authorizing account's code. Revoke.cash describes the user-facing version: the standard allows normal EOAs to use the same functionality as smart contracts, by setting a delegate smart contract that can act on their behalf.
This is a genuinely useful feature, and it is worth being precise about what is and is not the problem. Revoke.cash is explicit that draining through this route is only possible if your seed phrase is compromised, and in the sweeper scenario this guide is about, that is exactly right — the standard did not create a new way in. What it created is a new way to stay. (A minority are instead signed by the user, key never stolen.) An attacker who already holds your key can point your address at a contract that automatically forwards anything arriving, and the specification is clear about the power that grants: the code specified by an authorization has unrestricted access to the account, and a poorly implemented delegate can allow a malicious actor to take near complete control over a signer's EOA.
This is not theoretical or rare. When Wintermute's research team measured delegations shortly after the upgrade activated, they found that over 97% of all EIP-7702 delegations were authorized to multiple contracts using the exact same code — reused, copy-pasted sweeper contracts they nicknamed CrimeEnjoyors, with a single contract address accounting for more than half of roughly 79,000 authorizations at the time. The economics tell you why: the code is short, simple and free to redeploy, so an attacker points every compromised address they hold at the same bytecode and walks away.
The practical consequence is a step missing from almost every checklist. A delegation persists until it is deliberately changed, so an address can look clean — zero balance, no pending activity — while still having attacker code attached to it. If you are on an EVM chain, check. Revoke.cash lets you inspect all your EIP-7702 delegations in the delegations tab on your account page, and several wallets now surface the same information under smart-account settings. Removing it is a separate matter: most wallets do not allow external dapps to enable or revoke these delegations, so the revocation has to happen inside your wallet application, and support varies. For a wallet you are abandoning anyway this is mostly diagnostic — but it is exactly the check that tells you whether an address you were about to reuse is genuinely yours again.
Checklist
- EIP-7702 lets an ordinary account delegate its behaviour to a contract.
- The specification: delegated code has unrestricted access to the account.
- Revoke.cash: sweeper draining requires an already-compromised seed phrase.
- Wintermute: over 97% of measured delegations pointed at identical, reused sweeper code.
- A delegation persists until deliberately revoked — an empty address can still be occupied.
- Check delegations in Revoke.cash's delegations tab or your wallet's smart-account settings.
- Revocation usually must be done inside the wallet app, not from an external site.
The evacuation, in the only order that works
If there are assets worth rescuing, sequence matters more than speed, and MetaMask publishes the sequence for precisely this scenario. Before anything else, two preconditions: you are not being physically observed, and the system you are working on is free of malware. That second one is not a formality. If the thing that took your phrase is still running on this machine, every new wallet you create on it is born compromised, and you will repeat this entire exercise in a week.
So start on different hardware if you possibly can — a phone you do not use for the same things, a freshly reinstalled machine, a borrowed device you trust. Create the new wallet there as a genuinely separate instance: a new browser profile or a separate app installation, not a second account inside the same compromised setup. Write the new recovery phrase down on paper, offline, and never let it touch a photo library, a notes app, a password manager's clipboard, or a cloud drive.
Then transfer in MetaMask's recommended order, which is the opposite of what instinct suggests. NFTs go first, because they are likely the most expensive to transfer and you want the fee budget spent on them while it exists. Other tokens go second. Network gas tokens go absolutely last — MetaMask capitalises this point, noting that gas tokens should be the last thing you transfer, because otherwise you will have no way to pay the transfer fees for everything else. Working in that order means each move is funded by what is already there rather than by a fresh deposit the bot is waiting for.
Two things to do after the move, while it is still fresh. First, outstanding token approvals granted to contracts from the old address are a separate exposure that does not travel with your funds — MetaMask's guidance on token approvals covers how to review them, and the habit is worth carrying to the new wallet regardless. Second, write down what happened and when, including transaction hashes, before the details blur; if there is ever a police report or a tax loss to substantiate, that record is the whole case.
Then close the door properly. Remove the old accounts from your wallet interface so you cannot select them by accident, and warn anyone who has your old address saved — an employer, a client, a family member, an exchange withdrawal whitelist. The most avoidable loss after a compromise is a payment someone else sends to the address you forgot to update.
Checklist
- Work on a device you have reason to believe is clean; malware makes a new wallet pointless.
- Create the new wallet as a separate instance — new profile or separate installation.
- Record the new phrase offline; never a photo, note, cloud file or clipboard.
- MetaMask order: NFTs first, then other tokens, gas token last.
- Gas last, because otherwise you cannot pay fees for anything else.
- Review outstanding token approvals as a separate exposure.
- Save transaction hashes and a timeline while the details are fresh.
- Remove the old accounts from your interface and tell anyone who has the old address.
Find the hole, or you will dig it again
Evacuating without identifying the cause is how people end up doing this twice. The phrase did not escape on its own; it left through a specific route, and that route is almost certainly still open.
Work through the realistic list honestly. Was the phrase ever typed into a website, an app, a support chat or a 'wallet validation' page — because nothing legitimate ever asks for it. Does it exist as a photograph, a screenshot, a note, an email draft or a cloud document, where photo-scanning malware and account compromises can reach it. Was the wallet software installed from a search advertisement, a social media link, or a store listing you did not verify. Is there a browser extension with access to everything you do. Was the phrase generated on a device you did not control, or pre-printed on a card that came with it — a sold-as-new hardware wallet arriving with a phrase already filled in is a known scam. And was this address ever restored on a shared or public computer.
The version of this that ends well is unglamorous: a clean device, a fresh phrase generated offline and stored on paper, a hardware wallet if the amount justifies keeping keys off general-purpose computers entirely, and a wallet whose history now starts today.
Checklist
- Identify the specific route the phrase escaped through before funding anything new.
- Nothing legitimate ever asks you to type a recovery phrase.
- Check for photos, screenshots, notes, drafts and cloud copies of the phrase.
- Check how the wallet software was installed and which extensions have full page access.
- A device that arrives with a phrase already printed is a known scam.
- Rebuild on a clean device with an offline-generated phrase, stored offline.
Authority sources used
Outbound links are included for verification and entity authority, not decoration.
- Beware of sweeper bots in your Phantom walletPhantom Help Center
- How to migrate your assets to a new walletMetaMask Help Center
- EIP-7702: Set Code for EOAsEthereum Improvement Proposals
- What Is EIP7702?Revoke.cash
- Post-Pectra, Malicious Ethereum Contracts Are Trying to Drain Wallets, Wintermute SaysCoinDesk
- What are token approvalsMetaMask (Consensys)
FAQ
Can I just move fast enough to beat the sweeper bot?
No, and the belief that you can is what produces the second loss. You are not racing a person deciding to act; you are racing software that is already watching the pending-transaction pool and submitting a competing transaction with a higher fee the instant your deposit becomes visible. Phantom's own description is that these bots operate far faster than a human can react, and their advice is correspondingly direct: stop using the wallet, do not deposit additional funds, and do not attempt to beat the bot. MetaMask's migration guidance says the same thing in operational terms, warning that adding gas to a compromised account may result in that balance being swept before you can take any action. The only approach that removes the race rather than trying to win it is transaction bundling through a service such as Flashbots, where the funding and the rescue execute together or not at all — which MetaMask points to specifically for this case. That is specialist tooling worth learning for a high-value asset and rarely worth it for a small balance.
Why can't I just change my recovery phrase?
Because the phrase is not a password guarding the wallet — it is the input that generates the wallet's keys. Change the phrase and you have not secured the old addresses; you have created different addresses belonging to a different wallet. There is no rotate function anywhere in the design, and any product claiming to offer one for an existing wallet is misunderstanding the system or lying about it. What this means practically is that the moment a phrase is exposed, every address it has ever produced or ever will produce should be treated as permanently public, including accounts you have not created yet. That is also why partial reuse is dangerous: someone holding the original phrase can regenerate every address derived from it, so a 'new' wallet built on the same words, or the same words with one changed, is not new at all.
My wallet is empty now. Is it safe to use again for small amounts?
No. An empty balance says nothing about who holds the key, and treating a drained address as reusable is how people fund a stranger's bot indefinitely. There is also a newer reason to be careful, which is that an address can carry attacker code even when it holds nothing. EIP-7702 allows an ordinary account to have a delegate contract set on it, and the specification notes that code has unrestricted access to the account and persists until deliberately changed. Wintermute's research found that the overwhelming majority of delegations they measured pointed at identical reused sweeper code. So if you want to know the true state of an EVM address, check its delegations — Revoke.cash exposes them in the delegations tab of an account page, and many wallets show the same under smart-account settings. Even if it comes back clean, the key is still copied, and that alone settles the question.
What if there are staked, locked or vesting assets I can't move yet?
This is the genuinely hard case and it deserves an honest answer: sometimes there is no clean solution, and the right move is planning rather than improvising. Start by establishing the exact unlock mechanics — when the asset becomes transferable, which address receives it, and whether the claim itself requires a fee-paying transaction from the compromised address. If the asset unlocks to the compromised address, assume the bot will take it at the moment of unlock unless the claim and the transfer out are bundled into a single atomic operation, which is the same transaction-bundling approach MetaMask points to for rescue transfers. If a protocol has any mechanism for redirecting a beneficiary address, look for it now rather than on unlock day. And if the value is substantial, treating this as a deadline with a prepared plan — tooling tested, fees ready, timing known — is worth far more than any amount of reacting quickly on the day.
Should I tell anyone, or is reporting a waste of time?
Report, but calibrate your expectations and protect yourself from the second scam while you do. Reporting has real value in two narrow cases: if funds moved to a custodial exchange, that exchange is the only party who can freeze anything, and speed genuinely matters there; and aggregated reports to national fraud and cybercrime bodies are what makes patterns visible and occasionally supports later enforcement. Outside those, recovery of stolen crypto is uncommon and no report changes that. What matters more is guarding the aftermath. Victim lists circulate, and a person who has just lost money is the ideal target for a follow-up approach, so treat every inbound offer of help as hostile by default — especially those claiming to be a recovery firm, a blockchain forensics specialist, a lawyer, or an official who happens to have found your case. Anyone requiring payment before recovering anything is running the second scam, and the up-front fee is the entire product.
How do I make sure this doesn't happen again?
Reduce the number of places the secret can leak from, and reduce what any single leak can reach. Practically, that means a phrase generated offline by a device you control and recorded on paper or metal rather than anywhere digital — no photos, no notes app, no cloud document, no password manager field. It means installing wallet software only from the vendor's own published link, and auditing browser extensions, since anything with permission to read and change data on all websites can alter a wallet interface without leaving a memorable mistake behind. It means separating amounts: a small day-to-day wallet for connecting to applications, and a larger holding whose key has never touched a browser at all, which is the practical argument for a hardware wallet once the balance justifies it. And it means treating the single unbreakable rule as genuinely unbreakable — no legitimate support agent, wallet, exchange, airdrop, validator or migration ever needs your recovery phrase, so the request itself is the answer.