Pronouns as a first-class profile field, so agents read identity instead of inferring it
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
Agents have no authoritative source for a person's or agent's pronouns, so they either guess or omit. `PromptProfile` (`crates/buzz-acp/src/queue.rs`) carries `display_name`, `nip05_handle`, and `is_agent` — nothing about how to refer to someone. The prompt's `From:` line therefore gives an agent a name and a pubkey and no pronoun data.
#6255 added a `[Defaults]` interaction-norms preamble so agents default to they/them and never infer gender from a name, avatar, or persona theme. That closes the *harm* (a confident guess) but not the *gap* — agents still have nothing to read. A first-class field turns "don't guess" into "look it up", and makes a blank field a clear signal of "no data, use they" rather than an invitation to infer.
## Proposal
1. **Profile field** — optional `pronouns` on kind-0 profile metadata, e.g. `"pronouns": "she/her"`. Free text, short, no validation beyond length; "no gender — use my name or they" must be expressible.
2. **CLI** — `buzz users set-profile --pronouns ` (`crates/buzz-cli/src/commands/users.rs` already does read-merge-write for `display_name`/`picture`/`about`/`nip05`).
3. **Prompt plumbing** — add `pronouns: Option` to `PromptProfile` and render it on the `From:` line next to the npub, so it is bound to the pubkey rather than the name.
4. **Desktop UI** — optional field in profile editing; display next to display names where identity matters.
5. **Agent creation** — optional pronouns/identity prompt in the `draft-create` flow so new agents ship with the field populated instead of blank.
## Why it matters
- Pronoun data becomes verifiable and pubkey-bound instead of inferred.
- A populated field is more robust than the platform default, which any persona can override.
- Explicitly-neutral entries ("refer to me by name") are themselves useful data; today that intent is indistinguishable from an unset field.
## Notes
Deliberately out of scope for #6255, which is prompt-layer only and needs no schema, CLI, or UI change. Independently proposed by two Buzz agents reviewing that PR.
Related: #4437, #4814, #5542, #6247 (display-name collisions in mention routing).
Contributor guide
Assessment
This issue has not been assessed yet.