Recovery
Get your coins back
Find your situation below and follow the steps. Take your time โ nothing bad is happening while you read.
๐จ A withdrawal has started
Cancel it with your alarm key
Got a "withdrawal started" alert and it wasn't you? You have the entire cancel window from the moment it started (you chose its length at creation; the timer is visible in "My vault"). And you don't need your own device: any computer or a borrowed phone works โ the alarm key is enough.
- Don't panic. The coins can't move until the cancel window ends.
- Open My vault โ from any device (check the address bar first โ see below).
- Find the active withdrawal and how much time is left.
- Enter your alarm key and press Cancel withdrawal. The funds return to the vault.
- Never enter the alarm key on any site other than safe.officeforge.co.
- After the cancel โ don't relax. If you didn't start that withdrawal, the thief has your hot key and will try again. Create a new vault right away and withdraw everything into it with a normal withdrawal: the thief can't cancel your withdrawal โ they don't have the alarm key. Keep the alarm key at hand until the window closes.
๐
You are on the real site only if the address bar shows exactly:
safe.officeforge.co
Don't enter keys on lookalike copies (e.g. safe-officeforge-co.help). In doubt โ use the offline vaultctl below, it doesn't need the site at all. And to just watch the vault, any Kaspa explorer works: paste the vault address from your recovery sheet into kaspa.stream โ balance and transactions are visible without us and without keys.
Reopen the vault in a new browser or device
Your vault isn't stored in a browser โ it lives on the blockchain. Reopen it from your recovery sheet. Just to look, no private keys are needed.
What you need (all printed on the recovery sheet)
- public hot key โ the "Hot pubkey" line
- public alarm key โ the "Alarm pubkey" line
- withdrawal delay โ the number from the "Withdrawal delay" line (DAA are Kaspa's time "ticks", ~10 per second; enter the number as printed)
- if inheritance was on: the heir's pubkey, the period (DAA number) and the mode โ the "mode: automatic / manual" part
- private keys โ only when you actually act (withdraw / cancel / check in)
Steps
- Open My vault.
- Enter the hot pubkey and the alarm pubkey.
- Enter the delay (DAA); if inheritance was on โ the heir's pubkey and the period.
- Set the "Automatic inheritance" checkbox exactly as the sheet says: mode "automatic" โ checked, "manual" โ unchecked.
- Press Open โ the panel recomputes the vault address.
- Compare the address with the sheet and check the balance. Match? You're in.
Address doesn't match the sheet, or balance shows 0? Almost always it's the inheritance-mode checkbox or a typo in the period. Nothing is broken or lost: fix it and press "Open" again. Still off with inheritance disabled? Type the sheet into a plain .txt file and use "Load recovery sheet" โ it matches the printed address automatically.
I'm the heir
Someone left you a Kaspa Safe vault. The owner set a period: as long as they kept checking in ("I'm alive"), the vault was theirs alone. If the check-ins stopped โ after the period, the vault opens to you. Before that you can't see or take anything; that's how the contract is designed.
"Automatic" modeNothing to do. After the period, the coins arrive at your Kaspa address on their own โ the one the owner entered at creation. Just watch your wallet.
"Manual" modeOpen the vault in "My vault" using the owner's recovery sheet (block above). Once the period expires, an "Inheritance" block appears: enter the private key of your own address (export it from your wallet โ Kaspium and kaspa-ng can) and press "Claim the inheritance". The funds go strictly to your address โ the contract allows nothing else.
How long is left โ visible in the panel (the "Timer" row) or via vaultctl status. No permission from us is needed: the blockchain enforces the rules. Site down โ vaultctl inherit does the same (block below).
If the site is unavailable โ offline recovery with vaultctl
Kaspa Safe doesn't depend on us: the vault is an on-chain contract, and it checks only your keys and time. The open-source vaultctl tool does everything the site does, from a terminal, against any Kaspa v2+ node (running with --utxoindex). The code is published: github.com/pcdoctormsk-ctrl/kaspa-safe โ keep a copy (Code โ Download ZIP) and you won't depend even on GitHub.
# once: build it (needs Rust from rustup.rs, protobuf-compiler, clang)
git clone https://github.com/pcdoctormsk-ctrl/kaspa-safe
cd kaspa-safe/vaultctl && cargo build --release
# the recovery sheet is fed AS IS โ the .txt from the wizard (EN or RU)
# vault state: balance, age, inheritance timer
vaultctl status --recovery kaspa-safe-recovery-XXXX.txt
# start a withdrawal to your address (needs the hot key โ it's on the sheet)
vaultctl initiate --recovery sheet.txt --to kaspa:q...
# cancel an in-flight withdrawal (alarm key; --dest = the address the
# withdrawal is going TO โ yours you know, a thief's is in the TG alert / panel)
vaultctl cancel --recovery sheet.txt --dest kaspa:q...
# deliver a matured withdrawal to its destination (no key needed)
vaultctl complete --recovery sheet.txt --dest kaspa:q...
# "I'm alive" check-in ยท deliver the inheritance after the period
vaultctl checkin --recovery sheet.txt
vaultctl inherit --recovery sheet.txt # "automatic": no key
vaultctl inherit --recovery sheet.txt --heir-sk KEY # "manual": heir's key
Useful flags: --node grpc://your-node:16110 โ any Kaspa v2+ node with --utxoindex (defaults to the OfficeForge node); --dry-run โ build and sign the transaction, print its txid, but do NOT broadcast (try this first). To verify the contract itself: vaultctl selftest โ 18 checks of every path and attack inside the node VM.
If a key is lost
Hot key lostThe coins are not stolen, but you can't start a normal withdrawal anymore. If inheritance is on โ simply stop checking in: after the period the coins go to the heir automatically ("automatic" mode) or the heir claims them with their key ("manual"). The heir can be you โ if you named your own second address. If inheritance is off โ honestly: the coins are frozen forever, nobody (including us) can reach them. That's why we recommend enabling inheritance even "to yourself". Don't delete the recovery sheet.
Alarm key lostWithdrawing with the hot key still works, but you can no longer cancel a theft. Don't wait: move the KAS with a normal withdrawal (sit out the window) into a new vault with a fresh alarm key.
Both keys lostAccess is gone forever (unless inheritance is on โ see "hot key lost"). OfficeForge cannot recover keys โ nobody can. That's why the recovery sheet gets printed.
What we will never ask for
If anyone asks you to send a private key, a seed phrase or your entire recovery sheet โ it's a scammer.
The recovery sheet does not give OfficeForge access to your coins. It exists for you โ to recompute the vault address and sign actions with your own keys. We don't store private keys and can't recover them for you. And we will never ask for them โ not in chat, not by email, not "for verification". Support (sales@officeforge.co) can explain the steps, but physically has no access to keys or coins.
While you don't need this page yet
Rehearse once with a small amount: reopen the vault in a fresh browser, start a test withdrawal, cancel it with the alarm key and make sure you understand the full cycle. A calm rehearsal is what saves you on a bad day.
Android app
The same Kaspa Safe as a native Android app โ all assets bundled, works offline, API calls go to safe.officeforge.co. Min Android 7.0.
Version: โฆ ยท verify: sha256sum -c KaspaSafe.apk.sha256 ยท mirror: GitHub Releases (same file, same checksum)