If you have your prerequisites lined up, the entire rescue is one command.

Run

kintsugi rescue

The CLI walks you through five phases.

1. Network

Pick the chain the compromised wallet lives on:

? Network: › 
❯ Sepolia (testnet)
  Mainnet

Sepolia is for testing. Mainnet is the real thing.

2. Deployment addresses

The Rescue and NonceTracker contract addresses on the chain you picked. Defaults are pre-filled for Sepolia. For mainnet, paste the addresses from the security page.

3. Wallets

Three wallets, in order:

  • Victim private key. Paste it. Input is masked. Kintsugi shows you the derived address to confirm before continuing.
  • Safe address. Paste the destination address. Kintsugi never asks for its private key.
  • Rescuer. Choose: paste an existing rescuer key, or generate one. If you generate one, the CLI prints the address and pauses while you fund it. Send about 0.005 ETH and press Enter.

4. Discover and select

Kintsugi scans the victim address for ERC-20 tokens, ERC-721 NFTs, ERC-1155 balances, and ENS names. You then pick which to rescue using arrow keys and space:

ERC-20 tokens
  ◉ MOCK   100   0x36d4...ef63
  ◉ USDC    42   0xa0b8...eb48

ERC-721 NFTs
  ◉ MyArt #12   0xd9f1...c8c4
  ◯ MyArt #13   0xd9f1...c8c4

By default everything is selected. Toggle off anything you don't want to rescue.

5. Plan and submit

The CLI prints the full batch in execution order, then asks for confirmation:

Batch (4 ops)
  1. transfer MOCK 100 → safe
  2. transfer MyArt #12 → safe
  3. transfer ETH 0.0042 → safe
  4. ...

Estimated gas: 412 000
Estimated cost: 0.000402 ETH
Rescuer balance: 0.005 ETH (sufficient)

Sign and submit? (y/N)

Type y and press Enter. The CLI signs the EIP-7702 authorization, signs the EIP-712 batch, and the rescuer submits one Type-4 transaction.

You'll see the tx hash, then a wait, then a block number when it lands. Most rescues are mined in the next block.

Done

All selected assets are now in your safe wallet. The compromised wallet is empty.

If you want to clear the EIP-7702 delegation from the victim address (so it returns to a plain EOA), run kintsugi revoke. Optional.

Common flags

# route through Flashbots Protect (private mempool)
kintsugi rescue --private-mempool

# pre-fill the Etherscan API key
kintsugi rescue --etherscan-api-key YOURKEY

# override deployed contract addresses
kintsugi rescue --rescue-address 0x... --tracker-address 0x...

Full reference: CLI Reference / rescue.

Next

Prefer a browser? Run with the UI.