block / block/buzz

Desktop identity can be overwritten after existing key becomes unreachable

Open
#5,959 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Summary

On Buzz Desktop for Windows, an ordinary restart after a storage-scheme change left an established account at the private-key import screen. Importing a key replaced the existing human `identity` slot in the single `secrets.buzz-desktop` credential blob without warning, backup, or undo.

This is a destructive identity operation presented as onboarding.

## Evidence

Measured on 2026-07-30:

- Windows Credential Manager contained one Buzz credential, `secrets.buzz-desktop`; there was no legacy Buzz/Nostr credential to recover.
- `%APPDATA%\\xyz.block.buzz.app\\identity.migrated` and the credential backing file had the same modification second.
- The established community owner key was no longer in the blob.
- The eight `agent:` entries in the same blob survived.
- The replacement `identity` derived to the existing Harold courier-agent pubkey, proving that the app did **not** generate the replacement. The earlier diagnosis that first-launch generation produced a fresh identity was wrong.
- No local recovery source existed (no shadow copy, File History, restore point, browser copy, or owner key among the key-bearing files on the paired Linux host).

The complete corrected incident record is public at https://github.com/Seven-Day-Inc/centrifuge/issues/301#issuecomment-5133776152.

## Expected behavior

Once Desktop has durable evidence that an identity existed, failure to resolve that identity must be a fail-closed recovery state, never first-run onboarding. Before replacing a non-empty or previously-present identity, Desktop should:

1. State explicitly that the operation replaces the account identity.
2. Show both old and proposed public keys where possible.
3. Require destructive confirmation.
4. Require or offer an encrypted export of the current secret blob before mutation.
5. Preserve a recoverable prior copy or provide an undo path.
6. Never modify unrelated `agent:` entries.

## Impact

The only surviving owner key remained on mobile. Desktop lost owner access to the hosted community, and relay-operator intervention or a full community rebuild became necessary.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.