Editors Note: Welcome back to BTC Wealth! This week, we have a guest essay from Facing Worlds, a BTC OG and friend of the blog, sharing their experience recovering a seed phrase word during the recent COLDCARD exploit.

I counted the words again.

Twenty-three.

A Bitcoin seed phrase is supposed to have twenty-four.

My COLDCARD was sitting at home in the United States. I was on the literal other side of the world, two days into a vacation in Southeast Asia that was supposed to last through Labor Day. I did not even have a return flight booked.

Getting home would have meant another thirty hours of travel and several thousand dollars, right after I had arrived. There was also no easy way to ask a friend to retrieve the physical device. Someone would need keys to my place, instructions and access to things I did not particularly want another person accessing.

It would have been a fucking nightmare.

Under ordinary circumstances, none of this would have mattered. A hardware wallet is supposed to sit somewhere secure until you need it. But these were not ordinary circumstances.

The warning

The first reports I saw focused on a seed-generation vulnerability affecting older COLDCARD models, specifically the MK3. Then people started debating whether MK4 devices were safe.

Nobody online seemed to agree about the timeline. Some people said an MK4 attack was impossible. Others said it was only a matter of time. Some thought it could happen within days. Some posts claimed MK4 wallets were already being drained.

Eventually, Coinkite’s official advisory confirmed that seeds generated on affected MK4 firmware were also vulnerable. According to Coinkite, those seeds had approximately 72 bits of effective entropy, substantially less than intended. Updating the firmware would prevent the problem for newly generated seeds, but it could not repair an old one.

I had an MK4.

There was a meaningful amount of bitcoin in that wallet. It was not a major portion of my overall stack, but it was enough money that losing it would fucking suck.

At first, I kept telling myself it would probably be fine. Then I would refresh Sparrow to make sure the funds were still there. Then I would check X again.

Someone would report another sweep. Someone else would claim MK4 wallets were being drained. Then that report would get corrected because the seed had originally been created on an MK3 and later imported into an MK4.

There was an enormous amount of conjecture flying around, and I had no way to determine how much time I actually had. What I did know was that I could not spend the next four weeks refreshing a wallet and wondering whether the balance would suddenly disappear, especially when I was supposed to be on a relaxing vacation.

The backup

Then I remembered that I had an emergency backup.

Although I did not have the COLDCARD itself, I happened to have the hardware key needed to access a protected copy of the seed words. It was almost an accident that I had brought it with me.

Thank God, I thought.

I opened the backup, copied the words and tried importing them into a new Sparrow wallet.

Sparrow rejected them.

The seed phrase was missing a word.

I counted them manually, one by one. Maybe something had copied incorrectly. Maybe a word had disappeared while I was selecting the text. No. There were only twenty-three.

Sparrow suggested several possibilities for the final word. I tried them all. Nothing worked.

At that point, I assumed I was fucked.

I had apparently forgotten to record one word when I created the emergency backup. The complete seed was sitting inside a hardware wallet thirty hours away, while I had an incomplete copy and no idea which word was missing or where it belonged.

For the next couple of days, I kept checking the balance. The bitcoin was still there, but that did not make me feel much better. It only meant it had not disappeared yet.

I told some buddies in a group chat full of longtime Bitcoin veterans. I was coping hard, hoping they would reassure me that the MK4 was fine and the FUD was overblown. They did the opposite. I got a bunch of oofs and sorry dudes.

Needless to say, I was feeling pretty stressed.

The question I should have asked earlier

I use advanced AI tools constantly, so I do not know why it took me so long to think of asking one about the problem.

I described the situation without providing any of the words. I had twenty-three words in their original order. One word was missing, but I did not know its position. I also had the existing watch-only wallet in Sparrow, including its public wallet information.

How difficult would it be to recover the missing word?

I assumed the answer would involve running a computer for hours or days, crunching through some enormous number of possibilities.

The answer came back: this was actually a small recovery problem.

Bitcoin seed words are not drawn from every word in the English language. Under the BIP-39 standard, they come from a fixed list of 2,048 words.

There were twenty-four possible positions for the missing word. That meant there were only:

2,048 words × 24 positions = 49,152 possibilities.

Even better, a twenty-four-word BIP-39 phrase contains a built-in checksum. Almost every possible insertion would fail that checksum immediately. Instead of deriving 49,152 complete wallets, the computer would only need to examine roughly 192 mathematically valid candidates.

Sparrow also had the wallet’s xpub, public wallet information from which its addresses could be derived. An xpub cannot spend bitcoin, but it provided an exact target for the recovery: the correct phrase would derive the same xpub.

The process was simple:

  1. Insert every possible BIP-39 word into every possible position.

  2. Reject anything with an invalid checksum.

  3. Derive the wallet corresponding to each remaining phrase.

  4. Compare its xpub with the one already stored in Sparrow.

  5. Stop when they match.

This did not require the AI to see my words. It created a generic recovery script and tested it using public BIP-39 and BIP-32 test vectors. The actual twenty-three words would be entered locally on my computer.

The initial recommendation was to transfer the program to a computer that had never touched the internet. I did not have another computer, and I did not feel that I had time to locate and configure one.

So I turned off Wi-Fi, closed everything else and ran the script on my MacBook.

I entered the twenty-three words, the derivation path and the public wallet information from Sparrow. Then I pressed Return.

Almost immediately, the result appeared. It identified the missing position and the missing word.

That was it. The entire calculation took less than a second.

One more panic

I reconstructed the twenty-four-word phrase and imported it into a new Sparrow wallet. The wallet opened successfully. The addresses matched.

But there were no transactions.

For a moment, I thought the recovery had somehow produced a wallet with the right-looking information but none of the bitcoin. I had gone from relief straight back into panic.

The problem turned out to have nothing to do with the seed. Sparrow was scanning the blockchain from the wrong wallet birth date. Once I changed the date and rescanned, the transaction history appeared.

And there was the bitcoin.

I created a transaction sending the funds to an account I controlled at a centralized exchange and jammed it into the mempool with a high fee. At that point, my concern was that someone else might discover the weakened seed and try to race or replace my transaction before it confirmed.

A couple of minutes later, a miner found the next block.

Then the deposit notification appeared.

Thank God.

Why this worked

The recovery felt almost magical, but it was not. The AI did not guess my seed phrase. It never saw any of the words.

Recovery was easy because I already possessed almost all the secret information. The twenty-three words were correct and remained in their original order. Only one word and its position were unknown.

The BIP-39 checksum reduced the search space further, and Sparrow’s xpub provided an exact way to recognize the correct answer without looking up a balance or sending private information anywhere.

This is also an important security lesson: twenty-three ordered words are effectively almost the entire seed. If someone else had obtained those words, they could have performed the same recovery.

An incomplete seed is not necessarily a safe partial secret.

What changed for me

I originally bought a COLDCARD because I viewed it as the ultra-hardcore security option. I had owned Trezor and Ledger devices before, but the COLDCARD was supposed to be the serious Bitcoin wallet, the device I could rely on if I ever needed to move everything off centralized platforms during some political or financial emergency.

You know the paranoid Bitcoiner fantasy. The government decides it is coming for everyone’s bitcoin, so you withdraw everything, grab the hardware wallet and flee to Southeast Asia.

I was partly testing that idea by keeping a smaller portion of my stack on the COLDCARD.

What happened forced me to confront two different risks. The first was vendor risk. The part of the product I had trusted most, secure seed generation, had failed in a basic way. The second was operational risk, meaning me. I had created an emergency backup and never properly tested it. One missing word turned that backup into several days of panic.

Self-custody eliminates one kind of counterparty risk, but it replaces it with a collection of very human risks. You can lose something. Forget something. Record something incorrectly. Misunderstand a passphrase. Restore the wrong wallet. Send to the wrong address. Or buy a highly regarded security product that contains a flaw nobody discovers for years.

If you make a serious mistake, there is no password-reset email.

Having worked on Bitcoin’s institutionalization, I understand why many people choose regulated custodians, centralized exchanges or Bitcoin ETFs. For many holders, especially those who secure their accounts properly, those options may be more appropriate than pretending everyone has a moral obligation to become an expert in key management.

My view is simpler. People should use the custody arrangement that fits their abilities and risk tolerance. What matters is that self-custody remains available and that custodial platforms continue allowing people to withdraw when they choose.

That does not mean I have turned against self-custody. I still want the ability to move bitcoin into cold storage if circumstances change. But I no longer think buying the most hardcore-looking hardware wallet automatically solves the problem.

Security is a process, not a product.

Backups need to be tested. Recovery procedures need to be rehearsed. Public wallet metadata such as the master fingerprint, derivation path and xpub should be preserved securely because it can help verify a recovery. An xpub cannot spend bitcoin, but it should still be protected because it can expose the wallet’s activity.

Travel scenarios need to be considered before the emergency happens. Custody risk should probably be diversified rather than treated as a religious question with one correct answer.

Every custody arrangement has a failure mode. The important thing is knowing what yours is before you are thirty hours away from the device and watching rumors of wallet drains roll across your screen.

The COLDCARD was supposed to be my escape hatch. What I learned is that an escape hatch is useless if you have never tested whether it opens.

There is one final irony.

We are entering a period when advanced AI systems are making it cheaper to inspect code and find vulnerabilities that might have remained hidden for years. That makes the security of software-based financial systems feel less certain.

But when I made my own mistake, an AI system also helped me understand the problem, construct a recovery tool and verify the result without ever seeing the secret itself.

It did not recover my bitcoin for me.

It showed me why the problem was recoverable, then gave me a way to recover it myself.