Custom themes: userMessageBackground is a shared token (also paints the conversation selector and Plugin/Skill/MCP badges) — please add dedicated tokens

Open 💬 0 comments Opened Jul 13, 2026 by ocelotl

Version: 2.1.187

What I'm trying to do: Use a custom theme (~/.claude/themes/*.json) to give my own messages a distinct background color so they're easy to find while scrolling.

Problem: The userMessageBackground token isn't specific to user messages. Tracing the rendering, the same token is used for at least three things:

  1. User message boxes in the transcript.
  2. The Plugin / Skill / MCP badges.
  3. Selectable/hovered rows in list views — including the conversation/session selector (the component toggles userMessageBackgroundHoveruserMessageBackground).

So overriding userMessageBackground to make my messages stand out unavoidably recolors the conversation selector and those badges too. There's no way to decouple them from a theme file.

Requests:

  1. Split these into separate tokens (e.g. keep userMessageBackground only for the message box; add a dedicated token like selectedRowBackground for list selection/hover, and one for the badges), so they can be themed independently.
  2. Related: there's no user-message text color token — message text uses the global text token. A userMessageText token would allow readable contrast against custom backgrounds (e.g. black text on a light/yellow message background), which currently isn't possible without recoloring all UI text.

View original on GitHub ↗