Feature Request: User-configurable color themes and conversation input highlighting
Summary
Add user-configurable color themes to the Claude Code CLI interface, with specific focus on highlighting user input lines to improve conversation navigation and readability.
Problem Statement
When working through long technical conversations with multi-paragraph responses, it becomes difficult to quickly locate specific questions or inputs when scrolling through conversation history. All text (user input and AI responses) appears in the same visual style, making it challenging to:
- Quickly scan and find where I asked specific questions
- Identify conversation boundaries when reviewing work
- Navigate back to context from earlier in the session
- Distinguish between my input and Claude's responses at a glance
This is particularly problematic for:
- Infrastructure/DevOps work with lengthy explanations and code blocks
- Debugging sessions with multiple rounds of questions
- Planning sessions where reviewing earlier decisions is important
- Any workflow involving frequent scrolling through conversation history
Proposed Solution
1. User-Configurable Color Themes
Add a \theme\ section to \~/.claude/settings.json\ or \~/.claude/settings.local.json\:
\\\json\
{
"theme": {
"userInputColor": "#ff9500",
"userInputBackground": null,
"promptSymbol": "❯❯",
"promptColor": "#ff9500",
"aiResponseColor": "#ffffff",
"highlightUserMessages": true,
"conversationSeparator": {
"enabled": true,
"color": "#444444",
"style": "line"
}
}
}
\\
2. Specific Highlighting Options
User Input Line Highlighting (Highest Priority)
- Color the line where user types their question/command
- Apply color to prompt symbol (e.g., \
❯❯\, \>\, \$\) - Optional: Background color for user input lines
- Should be clearly visible when scrolling
Example Visual:
\\\`
[Normal conversation text in default color]
[Normal conversation text in default color]
❯❯ How do I configure secrets? ← THIS LINE IN ORANGE/YELLOW
[Claude's response in default color]
[Claude's response in default color]
❯❯ What about monitoring? ← THIS LINE IN ORANGE/YELLOW
[Claude's response in default color]
\\\`
3. Additional Theme Options
Message Background Colors:
- Optional alternating backgrounds for user vs AI messages
- Subtle shading to distinguish conversation turns
Conversation Separators:
- Visual divider lines between conversation turns
- Configurable color and style (line, dots, custom character)
Syntax Highlighting:
- Allow customization of code block colors
- Tool result output styling
Use Cases
Use Case 1: Infrastructure Engineer
Working on complex Terraform configurations with multiple rounds of questions about module patterns, security reviews, and deployment workflows. Need to quickly reference earlier questions about specific architectural decisions.
Use Case 2: Debugging Session
Long back-and-forth debugging conversation with logs, error messages, and diagnostic commands. Need to find the exact question that led to a breakthrough solution.
Use Case 3: Learning/Research
Asking multiple questions about a codebase or technology. Want to review the questions I asked to ensure I covered all topics.
Benefits
- Improved UX: Easier navigation through long conversations
- Time Savings: Faster to locate specific questions without reading entire transcript
- Accessibility: Visual markers help users with different cognitive processing styles
- Consistency: Matches user expectations from other CLI tools (colored prompts, themes)
- Customization: Users can adapt interface to their preferences and terminal color schemes
Alternatives Considered
Workaround 1: Shell Prompt Customization
- ✅ Works in regular terminal
- ❌ Doesn't affect Claude Code interactive interface
- ❌ Only colors the prompt, not the input line in conversation view
Workaround 2: Manual Visual Markers
- ✅ Can add \
>>>\or \===\markers manually - ❌ Requires extra typing
- ❌ Inconsistent across sessions
- ❌ Doesn't help when reviewing others' sessions
Workaround 3: Terminal Color Schemes
- ✅ Can adjust terminal colors globally
- ❌ Affects all terminal output, not just Claude input
- ❌ No fine-grained control over conversation elements
Implementation Notes
Minimal Viable Feature
At minimum, just adding user input line color would solve 80% of the use case:
\\\json\
{
"theme": {
"userInputColor": "#ff9500"
}
}
\\
This single setting would make user questions highly visible when scrolling.
Progressive Enhancement
- Phase 1: User input color only
- Phase 2: Prompt symbol customization
- Phase 3: Full theme system (backgrounds, separators, etc.)
- Phase 4: Pre-built theme presets (dark, light, high-contrast)
Backward Compatibility
- If no \
theme\config exists, use current default behavior - Invalid color values fall back to defaults
- Per-setting fallbacks ensure graceful degradation
Example Configuration Scenarios
Scenario 1: Minimal (Orange Input)
\\\json\
{
"theme": {
"userInputColor": "#ff9500"
}
}
\\
Scenario 2: High Contrast
\\\json\
{
"theme": {
"userInputColor": "#ffff00",
"promptSymbol": ">>>",
"promptColor": "#ffff00",
"highlightUserMessages": true,
"conversationSeparator": {
"enabled": true,
"color": "#666666",
"style": "line"
}
}
}
\\
Scenario 3: Subtle (Gray Separators)
\\\json\
{
"theme": {
"userInputColor": "#88ccff",
"conversationSeparator": {
"enabled": true,
"color": "#333333",
"style": "dots"
}
}
}
\\
Related Features
This could integrate well with:
- Session export/sharing (preserve theme in exports)
- Multi-agent conversations (different colors per agent)
- Conversation history search (highlight matches in user input)
- Context window indicators (color-code based on token usage)
Community Interest
This feature would benefit:
- Power users with long sessions
- Teams sharing conversation transcripts
- Users with accessibility needs
- Anyone working in complex technical domains
References
Similar features in other CLI tools:
- Zsh/Bash: Custom prompt colors via \
PS1\/\PROMPT\ - Git: Color output configuration via \
git config color.*\ - Vim: Full theme customization via \
colorscheme\ - tmux: Status line and pane border colors
- VSCode: Comprehensive theme system
Additional Context
- Platform: macOS
- Terminal: iTerm2/Terminal.app
- Shell: zsh
Thank you for considering this feature request! Happy to provide additional details or mockups if helpful.
18 Comments
Totally run into the same issue. ➕
can specify?
Totally run into the same issue. ➕
Same issue here (Linux - Konsole, Terminator).
Please provide options to disable colours
Totally run into the same issue. ➕
+1 for this feature. My primary use case: I work in Chinese (and other non-Latin languages), and when Claude Code responds with a mix of natural language text and technical output (code blocks, tool calls, file paths, shell commands), the natural language parts are nearly impossible to pick out from the wall of text.
The core pain point: The "human-readable" portions of the response (the parts I actually need to read and respond to) blend in completely with surrounding technical noise. A subtle background highlight (e.g., light blue or lavender) on the assistant's natural language text would make a massive difference in readability.
Even the simplest version of this — just being able to configure a distinct background or text color for the assistant's prose vs. code/tool output — would solve 80% of the problem.
This is especially impactful for non-English users where the visual distinction between natural language and code is even harder to parse at a glance.
A Notification start hook can set custom colors:
Terminal colors are set via ANSI escape sequences at session start. Different projects can have different color themes.
@yurukusa: Could you explain how this code of yours could help? Claude Code runs in its own TUI in a terminal.
I don't think an application should go changing terminal colors on its own. I should be able to switch themes while
claudeis open, I don't want claude taking over my terminal. This would be a hack that no other terminal application uses. A theme should just map to foreground/background colors (16, 256, or 24-bit palette) with bold/italic/underline.For anyone interested in status bar color customization specifically: #42382 proposes a minimal (~3 line) fix to let user status line scripts output ANSI colors that actually render, instead of being forced to dim gray. It's a narrow, backward-compatible change that could be a first step toward broader color control.
For anyone landing here looking for statusline color support specifically — there's a targeted fix proposed in #42382 that would let ANSI-colored statusline scripts render faithfully without any user configuration.
The root cause is that
<Text dimColor>wraps the entire<Ansi>output, blanket-dimming all parsed colors. The proposed change (~3 lines) applies dim only to spans without an explicit foreground color, so:This would cover the "statusline color" subset of this request with zero config needed, and is orthogonal to the broader theme system discussed here.
It's maddening. Fix please!
+1 strongly. The specific pain point: user message text in the Desktop app renders in
#0192F4(bright blue) which is high-contrast and distracting during long coding sessions. The CSS variable is--ui-user-message-primary-texton:rootin the claude.ai webview.The only current workaround is patching
app.asar+ updating the hardcoded integrity hash in the binary — which breaks on every update and risks account action. A first-partyclaude_desktop_config.jsonkey for CSS overrides (even just auserCSSstring field) would solve this completely without any integrity concerns.+1 on this. The recent UI revamp changed the code tab color scheme and it's pretty distracting compared to the chat view. The chat side has a nice dark brown/gray backdrop with subtle syntax highlighting that's easy on the eyes. I wish the code tab matched that. Right now switching between the two is jarring. Even just an option to unify the color schemes across tabs would go a long way.
If I could just bold my conversation messages in the history so i could find them I'd be happy. It's so frustrating to be running 3 different agent convos on different projects and not remember my part of the conversation. This is a common frustration across a lot of AI Tools and Agent IDEs. Or maybe bold AND right align it ... you know, standard conversation UX patterns.
+1
This is a duplicate of #50950, which was fixed as of version 2.1.118.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.