> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kvelden.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Key Recovery

> Recover access to a Zero-Knowledge or ZK Strict room after a forgotten passphrase — or when the person who holds the key is unavailable. Both paths are customer-controlled; neither gives Kvelden the ability to read your rooms.

In [Zero-Knowledge and ZK Strict rooms](/security/zero-knowledge), the key that
decrypts room content is protected by a passphrase that Kvelden never receives. That
guarantee has a natural consequence: a forgotten passphrase, or an unavailable
key-holder, would otherwise mean permanently lost access.

Enclave closes that gap with two recovery mechanisms — **without weakening the
zero-knowledge property**. In both, the server only ever stores ciphertext, and every
decryption happens in a browser using material you control.

<CardGroup cols={2}>
  <Card title="Recovery code" icon="key">
    Self-service. You saved a one-time recovery code; use it to restore your own
    access after forgetting your passphrase.
  </Card>

  <Card title="Organization recovery" icon="users">
    Quorum-based. A group of custodians you choose can jointly recover a room when
    the key-holder is gone — no single person, and never Kvelden, can do it alone.
  </Card>
</CardGroup>

***

## Recovery code (self-service)

A recovery code is a long, random, one-time code you save somewhere safe (a password
manager, a printed sheet in a safe). It is an independent way to unlock **your own**
key — think of it as a spare key, not a backdoor. Entering it restores the *same*
identity, so all of your existing room access stays intact.

<Info>
  Treat your recovery code like a master password. Anyone who has both your recovery
  code **and** an authenticated session to your account can unlock your vault. Store
  it offline; Kvelden never sees it and cannot show it to you again.
</Info>

### Save your recovery code

<Steps>
  <Step title="Set up your vault">
    The first time you open a Zero-Knowledge or ZK Strict room, you choose a
    passphrase and Enclave sets up your personal key.
  </Step>

  <Step title="Copy the recovery code">
    Immediately after, Enclave shows you a one-time recovery code (formatted like
    `ENC1-XXXXX-XXXXX-…`). Copy or download it and store it somewhere safe.
  </Step>

  <Step title="Confirm you've saved it">
    Tick the acknowledgement and continue. The code is shown **once** and cannot be
    displayed again — if you lose it, generate a new one from your account settings.
  </Step>
</Steps>

### Recover a forgotten passphrase

<Steps>
  <Step title="Choose “Forgot your passphrase?”">
    On the vault unlock screen (when you open a Zero-Knowledge room), select
    **Forgot your passphrase?**
  </Step>

  <Step title="Enter your recovery code and a new passphrase">
    Paste your recovery code and choose a new passphrase. Everything is processed in
    your browser.
  </Step>

  <Step title="You're back in">
    Your key is restored and re-protected with the new passphrase. Because your
    identity is unchanged, every room you already had access to remains available — no
    re-invitation or admin action needed.
  </Step>
</Steps>

### Regenerate a recovery code

You can issue a fresh recovery code at any time from **Account → Security** — for
example if you think your old code may have been exposed, or you never saved it. You'll
be asked for your current passphrase, and the new code replaces any previous one.

### External guests

Invited guests use the same mechanism inside their **vault**. A guest saves a recovery
code when they first set up their vault, and can use **Forgot your passphrase?** in the
guest portal to restore it — keeping access to every room you've shared with them.

***

## Organization recovery (custodian escrow)

A recovery code only helps the person who saved it. Organization recovery covers the
other case: the colleague who set up a room has left, is unreachable, or is
incapacitated — and the room still needs to be recovered.

It works by distributing trust across a group of **custodians** you nominate. Recovery
requires a **quorum** of them to cooperate (for example, any 3 of 5). No single
custodian — and no one at Kvelden — can recover a room alone.

<Info>
  Organization recovery is **opt-in** and set up by an **Owner** or **Security
  Officer**. It is off until you enable it. When you do, an organization recovery key
  is generated in the admin's browser and split into shares — each share encrypted so
  that only its assigned custodian can use it. The whole key never exists on Kvelden's
  servers in a usable form.
</Info>

### Set up organization recovery

<Steps>
  <Step title="Open Security → Organization Recovery">
    Available to Owners and Security Officers.
  </Step>

  <Step title="Choose custodians and a quorum">
    Pick the people who will hold recovery shares (they must be enrolled in
    zero-knowledge), and set how many of them are required to approve a recovery — the
    default is **3 of 5**.
  </Step>

  <Step title="Finish setup">
    Enclave generates the recovery key in your browser, splits it, encrypts each share
    to its custodian, and stores only the encrypted shares. You're done.
  </Step>
</Steps>

### Enable recovery for a room

Organization recovery protects a room only after that room's key has been escrowed.

<Steps>
  <Step title="Open the room's Members tab">
    A room admin opens the room and goes to **Members**.
  </Step>

  <Step title="Enable recovery">
    Select **Enable recovery** (or **Re-escrow**). The room's current key is encrypted
    to the organization recovery key and stored. This runs in the admin's browser.
  </Step>
</Steps>

<Warning>
  If you rotate a room's key (for example, after removing a member), **re-enable
  recovery** for that room afterwards so the escrowed copy matches the current key.
  The Members tab offers a **Re-escrow** action for this.
</Warning>

### Run a recovery

When a room needs to be recovered for a specific user, an **operator** (an Owner or
Security Officer) leads the ceremony:

<Steps>
  <Step title="Start a recovery request">
    In **Security → Organization Recovery**, the operator selects the escrowed room and
    the user who should regain access, and starts a request.
  </Step>

  <Step title="Custodians approve">
    Each custodian sees the pending request in their account and approves it. A quorum
    (e.g. 3 of 5) must approve. Everything each custodian does happens in their own
    browser.
  </Step>

  <Step title="Operator completes the recovery">
    Once enough custodians have approved, the operator completes the request. Their
    browser reconstructs the room key from the approvals, re-grants access to the target
    user, and finishes — all client-side.
  </Step>
</Steps>

### If you're a custodian

When someone starts a recovery you're part of, you'll find a request waiting in your
account. Make sure your vault is unlocked, review the request, and approve it. Your
browser releases your share **only to that specific recovery operator** — never to
Kvelden, and never in a form the server can read. You never handle raw key material.

***

## How recovery preserves zero-knowledge

Neither mechanism gives Kvelden a way in:

* **Recovery codes** are never sent to Kvelden. The server stores only a second
  encrypted copy of your key that *your code* unlocks — useless to anyone without it.
* **Organization recovery** distributes shares so that only a quorum of your chosen
  custodians, cooperating in their own browsers, can reconstruct a room key. Kvelden
  holds only encrypted shares it cannot combine.
* In both cases the passphrase, the recovery code, and every reconstructed key exist
  only in a browser and are never stored by Kvelden.

The zero-knowledge boundary described in
[Zero-Knowledge Design](/security/zero-knowledge) is unchanged: Enclave still cannot
read your rooms, and still cannot recover a key on its own.
