Feature Request: User-configurable color themes and conversation input highlighting

Resolved 💬 18 comments Opened Feb 12, 2026 by Juliehaus Closed Apr 27, 2026
💡 Likely answer: A maintainer (claude[bot], contributor) responded on this thread — see the highlighted reply below.

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

  1. Improved UX: Easier navigation through long conversations
  2. Time Savings: Faster to locate specific questions without reading entire transcript
  3. Accessibility: Visual markers help users with different cognitive processing styles
  4. Consistency: Matches user expectations from other CLI tools (colored prompts, themes)
  5. 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.

View original on GitHub ↗

18 Comments

KrzysztofMadejski · 5 months ago

Totally run into the same issue. ➕

Is it possible to change the colors of your output? I’d like to see clearly your thinking and planning - make it orange. Any errors you found make them red. Answers could be green. Text typed by me, let it be white. Anything else I     

 can specify?

Unfortunately, I don’t have the ability to control the colors of my output text in Claude Code. Here’s what I can tell you about color customization:                                             
 What I Cannot Control:                                                                                                            
  • The color of my responses (thinking, answers, errors, etc.) - these are rendered by Claude Code using your terminal’s theme
  • Syntax highlighting in code blocks follows standard markdown rendering                                                                                   
  • My thinking blocks (like this response is using) aren’t typically visible to you by default
Dimentar · 4 months ago

Totally run into the same issue. ➕

GregStef · 4 months ago

Same issue here (Linux - Konsole, Terminator).

mkaschenko · 4 months ago

Please provide options to disable colours

gaojianzhuang · 4 months ago

Totally run into the same issue. ➕

huxiaohuan · 3 months ago

+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.

yurukusa · 3 months ago

A Notification start hook can set custom colors:

printf '\033]10;#c9d1d9\007' >&2  # Light gray text
printf '\033]11;#0d1117\007' >&2  # Dark background
printf '\033]12;#58a6ff\007' >&2  # Blue cursor
printf '\033]6;1;bg;red;brightness;30\a' >&2
printf '\033]6;1;bg;green;brightness;40\a' >&2  
printf '\033]6;1;bg;blue;brightness;80\a' >&2
exit 0
DIR=$(basename "$(pwd)")
case "$DIR" in
    frontend*) printf '\033]6;1;bg;green;brightness;100\a' >&2 ;;  # Green
    backend*)  printf '\033]6;1;bg;blue;brightness;100\a' >&2 ;;   # Blue
    infra*)    printf '\033]6;1;bg;red;brightness;80\a' >&2 ;;     # Red
    *)         printf '\033]6;1;bg;blue;brightness;50\a' >&2 ;;    # Default
esac
exit 0
{
  "hooks": {
    "Notification": [{
      "matcher": "start",
      "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/custom-theme.sh" }]
    }]
  }
}

Terminal colors are set via ANSI escape sequences at session start. Different projects can have different color themes.

GregStef · 3 months ago

@yurukusa: Could you explain how this code of yours could help? Claude Code runs in its own TUI in a terminal.

markuspeloquin · 3 months ago

I don't think an application should go changing terminal colors on its own. I should be able to switch themes while claude is 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.

ordinalser · 3 months ago

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.

ordinalser · 3 months ago

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:

  • Plain text → still dimmed (no visual change from today)
  • ANSI-colored text → colors pass through as intended

This would cover the "statusline color" subset of this request with zero config needed, and is orthogonal to the broader theme system discussed here.

stevland · 3 months ago

It's maddening. Fix please!

DmitriyKuladmed · 3 months ago

+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-text on :root in 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-party claude_desktop_config.json key for CSS overrides (even just a userCSS string field) would solve this completely without any integrity concerns.

JoeNance-RGA · 2 months ago

+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.

CodeOfficer · 2 months ago

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.

lucien-UD · 2 months ago

+1

claude[bot] contributor · 2 months ago

This is a duplicate of #50950, which was fixed as of version 2.1.118.

github-actions[bot] · 2 months ago

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.