Skip to content

Group DMs can never be renamed — no principal ever holds owner/admin on a DM channel, and community owner has no bypass #4739

Description

@samuraizeke

Motivation

Renaming a group DM is impossible for anyone, by construction:

  • The relay creates DM channels under its own identity, and every participant is enrolled with the plain member role. No human ever gets owner or admin on a DM.
  • The kind-41 handler (crates/buzz-relay/src/handlers/side_effects.rs) requires channel owner/admin for name/about/archived/visibility/ttl changes. The only escape hatch is being the NIP-OA owner of an owner-role agent in the channel, which a DM never has either.
  • Community ownership doesn't help. There is no RELAY_OWNER_PUBKEY bypass in that code path, so even the community owner gets actor not authorized for name/about/archived/visibility/ttl changes.
  • Desktop is consistent with this: ChannelManagementSheet.tsx gates the name editor on channelType !== "dm", so the control never renders.

Net effect: a group DM is stuck displaying as "Group DM (N)" (or the participant list) forever. Ran into this on a self-hosted relay wanting to name a 3-person founders DM. The only working path I found was flipping my role to owner directly in Postgres, sending the kind-41 through the relay, then flipping it back. That obviously shouldn't be the supported path.

Proposed solution

Let DM participants rename their own DM. Slack's model here is the least surprising: any member of a group DM can set its name, and the name is scoped to that conversation. Concretely, in the kind-41 privileged-tag check, treat channelType == "dm" + actor is an active participant as sufficient for the name tag (the other privileged tags can stay locked down).

Alternatives considered

Additional context

Related but distinct: #2928 (recovering orphaned channel ownership) and #4225 (owner_only add policy has no admin override). This one differs in that there is no owner to recover — DMs never have one.

Duplicate search: none found for DM renaming specifically.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions