Custom theme diffAdded/diffRemoved/diffAddedDimmed/diffRemovedDimmed overrides ignored in diff renderer (still present in 2.1.227)

Status Open
Reported on v2.1.227
Maintainer reply None cached
Activity 2 comments · opened Aug 11, 2026

Description

Custom theme color overrides for diff line backgrounds (diffAdded, diffRemoved, diffAddedDimmed, diffRemovedDimmed) have no effect on the rendered diff. The diff view always falls back to the base theme's default colors, while other overrides in the same theme file (e.g. claude) resolve and render correctly.

This appears to be the same underlying bug reported in #66937 and #69445, both closed without a fix (one as duplicate, one as stale/"not planned"). Filing fresh since it reproduces on a current version.

Environment

  • Claude Code version: 2.1.227
  • OS: macOS (Darwin), Apple Terminal.app
  • "tui": "fullscreen" in settings.json

Repro steps

  1. Create ~/.claude/themes/custom.json:
{
  "name": "custom",
  "base": "dark",
  "overrides": {
    "claude": "ansi:magenta",
    "diffAdded": "#354F0C",
    "diffRemoved": "#550021",
    "diffAddedDimmed": "#1E2D07",
    "diffRemovedDimmed": "#310013"
  }
}
  1. Set "theme": "custom:custom" in ~/.claude/settings.json
  2. Select the theme via /theme and confirm it's active
  3. Trigger any file edit/diff

Expected: diff line backgrounds use #354F0C (added) / #550021 (removed)
Actual: diff line backgrounds use the dark base theme's default diff colors; the claude override in the same file applies correctly

Notes

Per the analysis in #66937, the diff-rendering path appears to resolve colors through a different code path (currentTheme, which collapses a custom theme down to just its base name) than the rest of the UI (resolvedTheme, which correctly merges overrides). If that's still accurate, the fix is likely to make the diff renderer consult the same resolved/merged theme object used elsewhere.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗