🤖
## Summary
In Buzz Desktop, clicking a message from stopped agent A could open
running agent B—and B's controls—because both shared a persona (an agent
definition). This now opens the author you clicked and only that agent's
own controls, so you can inspect an old message without being redirected
to a different running agent.
An explicit public key—the identifier for one agent—now stays exact
across message authors, members, DMs, deep links and Instances rows,
including stopped, archived and relay-only agents. Local controls come
only from a matching local record for that key. A relay-only A cannot
borrow B's Start/Stop/Edit controls or configuration.
Deliberately opening a **persona** is different: it can still select a
representative that respects archived instances or offer Start when none
remains. The change removes competing historical-persona redirects
rather than adding another identity exception.
### Related issue
Independent base: `main`; no stack parent or child among the
replacements. Extracted from
[#7114](https://github.com/block/buzz/pull/7114), retained as historical
source (`98fe33ec`).
[Behavior
contract](9c4b6523ce/docs/agent-profile-identity.md).
Originating [Buzz
discussion](buzz://message?channel=f7a9536a-1738-4bad-a888-b3ea25010ef1&id=7aa1f0ab23dce514bd8a0221441cf005bf428914621171472b79747c50820848)
· channel `f7a9536a-1738-4bad-a888-b3ea25010ef1`.
### Testing
Synthetic Playwright mock-bridge state. After screenshots exercise this
independent profile extraction (`df6612b1`); no availability or
cloud-marker implementation is included.
#### Before: historical A redirects to running B
Unchanged main product code (`bc006f67`) with the same updated
historical-message fixture fails: clicking Earlier Parity Agent opens
Current Parity Agent and its Stop control.

#### After: historical A opens A
The clicked author remains Earlier Parity Agent, with A's public key and
its own Start control. The current sibling is not substituted.

#### Exact relay-only A while local sibling B exists
A's public key and owner-scoped profile are visible; no local
Start/Stop/Edit/Add control or sibling definition is borrowed.

#### Explicit persona navigation may select local B
Deliberately opening the persona selects its local representative, with
B's key and legitimate Stop/Restart/Edit controls.

#### Explicit persona without an instance may offer Start
This is a deliberately opened persona, not a relay-only key turned into
a persona surface.

[Original screenshot
publication](https://github.com/block/buzz/pull/7131#issuecomment-5482310890);
all five immutable image URLs and captions retained here. The final
documentation-only commit does not change this UI. These are synthetic
browser fixtures, not live runtime health evidence.
To check manually, open an old message from stopped A while same-persona
B is running; compare the displayed key and controls. Then open the
persona itself and verify that representative selection still works.
#### Evidence and limitations
**5,793 desktop tests**, **56 profile/archive browser cases**,
type/static/size checks and repository-wide `just ci` passed. The
historical-message regression fails on unchanged main by opening B
instead of A. [Published-head CI
passed](https://github.com/block/buzz/actions/runs/33422207592).
The [advisory security
check](https://github.com/block/buzz/actions/runs/33422240973) timed out
without a result; it is not a passing check. No availability,
cloud-marker, discovery or mention-routing change is included. These
screenshots do not establish remote delivery, agent execution or
termination.
#### Security authorization history (audit, not clearance)
The [security
gate](https://github.com/block/buzz/pull/7131#issuecomment-5482300054)
remains visible and unresolved. Existing authorization-request comments
were posted by `loganj`: [old-head
request](https://github.com/block/buzz/pull/7131#issuecomment-5482311163)
for `df6612b1db5a6f8d128cef955fd66a80b6828cb8` at 2026-08-31 17:55:11
UTC, then [current-head
request](https://github.com/block/buzz/pull/7131#issuecomment-5482320424)
for `9c4b6523ceaef0f3d92906fcdb5d9a3b9ede7e17` at 17:55:57 UTC. The
existing [issue-comment workflow
run](https://github.com/block/buzz/actions/runs/33422240973) ended
cancelled after the previously reported timeout; it did not produce a
completed security review. Latest exact-head Run/Post Codex jobs are
skipped, not security approval. Historical comments remain available at
their original links; consolidating their audit here does not withdraw
authorization or clear the gate. An authorized security workflow owner
must arrange the missing exact-range result.
---------
Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
2.3 KiB
Agent profile identity
An explicit key is exact
Opening a public key from a message, member, DM, deep link, or Instances row
always opens that identity. Active, stopped, archived, and relay-only keys obey
the same rule. A local managed record may supply controls only for that exact
key. An owner-signed kind 30177 persona_id (or an archive request's historical
persona link) is not an identity alias and does not grant access to a local
sibling's controls, definition, configuration, or Start action.
Only explicit persona navigation (for example, the persona card in My Agents)
selects an archive-aware representative using pickProfileAgent. With no live
representative, it remains a persona-only surface and may offer Start. An
explicit relay-only key must not turn into that persona-only surface, even if a
matching definition exists locally. There is no synthetic/secretless
ManagedAgent record.
This intentionally supersedes the old historical-message redirect: a message from stopped A no longer opens running B merely because they share persona P. The requested key takes precedence even if the caller also supplies persona context. Local instance profiles may still show their own linked definition and an explicitly navigable Instances list. Ownership alone permits owner-scoped relay reads, not local management.
Implementation: useCanonicalManagedAgentProfile and UserProfilePanel.
The obsolete historical-persona relay lookup and inactive-instance redirect
helper have been removed instead of adding another exception flag.
Regression gates
profile/lib/resolveCanonicalManagedAgent.test.mjs: exact identity across active/stopped/archived/relay-only keys, and persona representative selection.profile/lib/useCanonicalManagedAgentProfile.test.mjs: remote A cannot borrow persona P/local B, including persona-only navigation and returning to A.tests/e2e/exact-key-profile.spec.ts: relay-only profile controls versus explicit persona navigation, with and without a local sibling; exact archived keys with a live sibling and persona-only navigation when all are archived.tests/e2e/profile.spec.ts: historical messages match the exact Instances selection rather than the current persona card; profile ingress parity.tests/e2e/identity-archive.spec.ts: archive/unarchive authority and flair.