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:
- User message boxes in the transcript.
- The Plugin / Skill / MCP badges.
- Selectable/hovered rows in list views — including the conversation/session selector (the component toggles
userMessageBackgroundHover↔userMessageBackground).
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:
- Split these into separate tokens (e.g. keep
userMessageBackgroundonly for the message box; add a dedicated token likeselectedRowBackgroundfor list selection/hover, and one for the badges), so they can be themed independently. - Related: there's no user-message text color token — message text uses the global
texttoken. AuserMessageTexttoken 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.