Files
claudemesh/.artifacts/specs/2026-04-15-claude-code-rich-channel-ui-request.md
Alejandro Gutiérrez 45d85f5eaa
Some checks failed
CI / Lint (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled
chore: wrap up the gap-closing session
- info/inbox commands → unified render.ts
- install route: drop in-memory counter, rely on PostHog + structured logs
- docs: roadmap, CLAUDE.md reflect alpha.31 state
- tests workflow now also builds + smoke-tests the CLI bundle
- homebrew tap bootstrap kit in packaging/homebrew-tap-bootstrap/
  (README + copy of the formula template for dropping into the tap repo)
- upstream Claude Code issue draft for rich <channel> UI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 08:53:59 +01:00

2.2 KiB

Feature request draft: rich <channel> notification UI

Target: anthropics/claude-code GitHub issues / feedback channel. Drafted: 2026-04-15.

Paste the section below once the issue template is ready. Adjust tone to match Claude Code's issue style.


Title

Rich UI for notifications/claude/channel messages (first-class chat, not just reminders)

Body

Summary

MCP servers can emit notifications/claude/channel notifications which Claude Code renders inside the current turn as a <channel> reminder. For MCP servers that are conversational in nature (peer messaging, collaborative sessions, delegated agents), rendering these inline as plain-text reminders misses the UX affordances users expect from chat:

  • sender avatar / identity
  • timestamp
  • priority badge (urgent / normal / low)
  • expandable quote from the original thread
  • optional inline reply action that calls a specific MCP tool

Concrete use case

claudemesh is a peer mesh for Claude Code sessions. When a peer sends a message it arrives as notifications/claude/channel with structured metadata in meta:

{
  "method": "notifications/claude/channel",
  "params": {
    "content": "alice: can you rebase main before deploy?",
    "meta": {
      "from_id": "<ed25519 hex>",
      "from_name": "alice",
      "priority": "now",
      "sent_at": "2026-04-15T00:00:00Z",
      "mesh_slug": "team-platform",
      "kind": "direct"
    }
  }
}

Today this renders as a <channel> text block — useful, but the user can't tell at a glance that it's from another human.

What we'd like

A hint on the notification (e.g. meta.display: "chat") that lets Claude Code render it as a chat bubble with the from_name as the speaker, priority visualised, and an optional "Reply" action bound to a declared MCP tool (reply_tool_name).

Why users would benefit beyond claudemesh

  • Delegated agent frameworks can render sub-agent responses as chat
  • Live-pairing MCP servers get a proper UI without inventing their own
  • The existing <channel> fallback means older clients still see the same text — additive, not breaking

Willing to contribute a PR if the feature is on-roadmap.