Recovery
Recover your deal
Lost your browser, switched devices, or worried the site went down mid-deal? Find your situation below. Take your time — the money is locked in the covenant and isn't going anywhere while you read.
🔒
You are on the real site only if the address bar shows exactly:
kaspaforge.org
Never enter your keys on a lookalike. Just to watch the escrow, no keys are needed: copy its address from the Desk or decrypted profile and paste it into kaspa.stream — the balance and every transaction are public.
Recover from your master key file (the simple way)
Every deal you create or join is saved automatically into one encrypted master key file — your Desk profile, together with your vaults and listings. On any device, open your Desk, choose Import / restore and load the .age file with its password. The Desk restores the profile and re-discovers its public deal records.
Back up the current file now: Desk → Export key file. Forge Sync is useful for an encrypted mirror, but a fresh offline .age export remains the recovery copy you control.
Open the key file completely offline
Download the standalone key-file decryptor while the site is available, or keep the copy from the public repository (web/keyfile-decrypt.html). It is one self-contained HTML file with the decryption code embedded.
Steps
- Disconnect the computer from the internet.
- Open keyfile-decrypt.html from disk (file://), choose the Desk .age backup and enter its password.
- Find the required deal by its number and verify its escrow address in an explorer.
- If needed, download profile.json from the tool. Treat it as cash: it contains private keys and service tokens.
- Delete the plaintext JSON after recovery. Never send it, the .age file, or the Desk password to support.
The key file is standard passphrase-encrypted age. Technical fallback: age -d kaspa-office-profile.age > profile.json.
What the encrypted profile preserves
Each deal record in the decrypted profile contains:
- Deal # and your role (buyer / seller) — to open the right panel
- Your key — signs release / refund / dispute for your side
- Funding key (buyer only) — builds the on-chain escrow when you lock the funds
- Chat key — decrypts the deal chat; it can never move funds
- Service token — authorizes reading and acting on your side of the deal
- Escrow address and public parameters — to identify and inspect the on-chain deal
Keep the encrypted backup and password separately. Anyone who obtains the decrypted deal key and token can act as your side of the deal.
The deal can't hang — even if we vanish
Every deal has an on-chain safety net so funds never get stuck, with or without our site:
Nobody acts after fundingOnce the dispute window closes with no dispute, the escrow auto-releases to the seller — protection against a buyer who received the goods and went quiet.
A dispute stallsIf a dispute is open and the arbiter never rules by the contract deadline, an emergency timeout returns the funds to the default side (the buyer) on its own — no signature and no service fee. You can watch the countdown in the deal panel.
These paths are enforced by the covenant itself, not by us. Our disappearance can't freeze your money.
If the site is unavailable — the deal is still on-chain
The escrow is a public Kaspa covenant, and the contract plus the independent recovery CLI are open source: github.com/Kaspaforge/kaspaforge/recovery-kit (Code → Download ZIP to keep a copy). What you can do without our website today:
- Watch the escrow — paste the escrow address into kaspa.stream; balance and every move are public.
- Verify the contract — the escrow covenant escrow.sil is open source: its rules are enforced on-chain by Kaspa consensus, independent of us.
- Act independently — build dealctl from the published source to release, refund, dispute, mutually settle, auto-release or timeout through any Kaspa v2+ node with --utxoindex.
- Emergency timeout — if a dispute is open and the deadline passes, the covenant's timeout path returns funds to the default side on its own; it needs no key and no website.
Independent recovery is published: the hosted-free recovery-kit/ contains the shared Rust transaction core, dealctl, schemas, vectors, checksums and EN/RU guide. Its air-gapped flow keeps the private recovery record offline: only a public watch file, covenant-line package and signed transaction cross to the online machine. Build from source and verify recovery-kit/RECOVERY-SHA256SUMS; do not install an unofficial binary.
The covenant guarantees your funds can only ever reach the buyer, the seller or the fee address regardless — so a lost website never means lost money, only a wait for the timeout at worst.
If you lose your key or the master key file
Master key file lostYou lose the ability to act on your side (release / refund / dispute). The funds are not stolen — they still follow the deal's normal paths: the counterparty can still release or refund to you, and if it's disputed, the timeout returns them to the default side. We cannot recover your key — nobody can. Keep your master key file (and its Desk password) backed up.
Chat key lostOnly the past conversation becomes unreadable to you; the deal itself and all money actions keep working with your main key.
What we will never ask for
If anyone asks you to send a private key, your Desk password or your master key file — it's a scammer.
Your master key file does not give OfficeForge access to your money — it's encrypted with your password and exists for you alone, to reopen the deal and sign with your own keys. In a dispute you may deliberately reveal your chat key to the arbiter (it can't move funds), and never anything else. We don't store private keys or your password, can't recover them, and will never ask — not in chat, not by email, not "for verification". Support (kaspa@officeforge.co) can walk you through the steps but has no access to keys or coins.
Before you ever need this page
Rehearse once with a small deal: export the .age file, decrypt it offline, verify the escrow address, then import it into a fresh browser and walk through release. Delete the plaintext test export afterwards.