Custom theme set via project .claude/settings.local.json reverts to the default theme after /rename

Status Open
Maintainer reply ✓ Yes — bcherny
Activity 3 comments · opened Jul 23, 2026
💡 Likely answer: A maintainer (bcherny, collaborator) responded on this thread — see the highlighted reply below.

[BUG] Custom theme set via project .claude/settings.local.json reverts to the default theme after /rename

Environment

  • Claude Code v2.1.218 (also latest at time of writing)
  • Windows 11, Windows Terminal + Git Bash
  • Interactive TUI session

Description

A theme key in a project-scope .claude/settings.local.json pointing at a custom theme is honored at session start — the input border, session badge, and spinner render in the custom colors. But running /rename <name> mid-session makes those colors revert to the built-in default theme's accents for the remainder of the session. Starting a new session in the same directory restores the custom colors.

It looks like the title change triggers a theme re-resolution that only consults user-scope settings, dropping the project/local-scope theme layer that was applied at startup.

Steps to reproduce

  1. Create a custom theme ~/.claude/themes/demo-blue.json:
{
  "name": "Demo Blue",
  "base": "dark",
  "overrides": {
    "promptBorder": "#7aa2f7",
    "promptBorderShimmer": "#a8c3fa",
    "claude": "#7aa2f7",
    "claudeShimmer": "#a8c3fa"
  }
}
  1. Create C:\projects\demo-app\.claude\settings.local.json:
{
  "theme": "custom:demo-blue"
}

(user-scope ~/.claude/settings.json has "theme": "dark")

  1. Run claude in C:\projects\demo-app — the input border and spinner render in the custom blue. ✔
  2. Run /rename My Session.

Expected

The session is renamed; the active theme is unchanged.

Actual

The session is renamed, but the input border, badge, and spinner revert to the default dark theme's teal/orange. The custom theme stays inactive until the session ends; the next claude session in the directory is themed correctly again.

<img width="1095" height="501" alt="Image" src="https://github.com/user-attachments/assets/0d7ef754-5744-4436-b885-6820cf53580e" />

<img width="1093" height="498" alt="Image" src="https://github.com/user-attachments/assets/8b8a4f24-9235-472a-8c7c-cf07a22f3fc2" />

Notes

  • The theme key does not appear in the documented settings table, but it is clearly read from project scope at startup (and local scope correctly overrides user scope there). If per-project theme is intended to be supported, the /rename path should re-resolve it the same way startup does; if it is not intended, a docs note about its scope would help.

View original on GitHub ↗

3 Comments

josh-sachs · 2 months ago

Updated to include screenshots

bcherny collaborator · 1 month ago

Thanks for the detailed report — reproduced on the current release (v2.1.233), on Linux as well, so it's not Windows-specific.

With a custom theme (~/.claude/themes/demo-blue.json) selected via a project .claude/settings.local.json, the custom accent colors are applied correctly at startup, and after /rename the input border and session badge revert to the default theme's accents for the rest of the session. A new session restores the custom colors, exactly as you describe.

One extra data point from testing: the same revert happens when the custom theme is set in user-scope ~/.claude/settings.json, so the rename path is dropping the custom-theme resolution entirely rather than only skipping project scope.

Marking as a confirmed bug.

🤖 Generated with Claude Code

marcindulak · 18 days ago

For your information: the label reproduced on this issue does not prevent it from becoming stale and eventually auto-closed. See https://github.com/anthropics/claude-code/issues/87647 for details, and consider upvoting that for visibility.