[FEATURE] Custom theming + syntax highlighting plugin API

Resolved 💬 3 comments Opened Apr 1, 2026 by mock1ngbb Closed Apr 5, 2026

Summary

Claude Code currently offers a small set of built-in themes with no mechanism to customize token colors or ship alternative grammars/themes via the plugin system. This issue proposes two complementary additions:

  1. User-configurable token colors — a syntaxHighlighting block in settings.json that maps semantic token types to ANSI or hex colors
  2. A syntax highlighting plugin extension point — so the community can publish grammar/theme packages (TextMate, tree-sitter, or a lightweight equivalent) through the existing plugin marketplace

---

Motivation

The current /theme picker offers ~5 presets. Power users who invest heavily in their terminal aesthetic (Catppuccin, Tokyo Night, Dracula, custom palettes, etc.) have no way to carry those colors into Claude Code's diff and response rendering. The dark-ansi theme defers to the terminal's ANSI palette, which helps slightly, but there's no per-token control.

The plugin system already supports slash commands, agents, MCP servers, and hooks. Extending it to include syntax highlighting themes would give the community a natural distribution channel — the same plugin install workflow users already know — and remove the burden of shipping every possible theme natively.

---

Proposed API

1. settings.json token color overrides

{
  "syntaxHighlighting": {
    "keyword":    "#c792ea",
    "string":     "#c3e88d",
    "comment":    "#546e7a",
    "number":     "#f78c6c",
    "type":       "#ffcb6b",
    "function":   "#82aaff",
    "variable":   "#eeffff",
    "operator":   "#89ddff",
    "punctuation":"#89ddff"
  }
}

Accepts hex colors or ANSI color names. Merges with the active theme as overrides.

2. Plugin manifest extension point

// plugin.json
{
  "syntaxTheme": {
    "name": "Tokyo Night",
    "description": "A dark theme inspired by Tokyo Night",
    "tokenColors": {
      "keyword":  "#bb9af7",
      "string":   "#9ece6a",
      "comment":  "#565f89",
      "number":   "#ff9e64",
      "type":     "#2ac3de",
      "function": "#7aa2f7"
    }
  }
}

When a plugin declares a syntaxTheme, it becomes selectable via /theme (e.g., /theme tokyo-night).

---

Related issues

  • #1302 — custom terminal themes beyond built-in options
  • #22367 — theme color customization for diff highlighting
  • #25366 — user-configurable color themes and conversation input highlighting
  • #29166 — customizable UI colors/themes
  • #8504 — disable or customize user input background highlighting

---

Why a plugin API vs. just more built-in themes

Bundling every community theme natively doesn't scale. A plugin extension point lets the community own distribution and iteration speed without gating on Anthropic releases. The token-color override in settings.json covers the "I just want to tweak a few colors" case; the plugin API covers the "I want to publish and share a full theme" case.

---

Acceptance criteria

  • [ ] settings.json accepts a syntaxHighlighting map of token type → color
  • [ ] Plugin manifests can declare a syntaxTheme block
  • [ ] Themes installed via plugins appear in the /theme picker
  • [ ] Documentation updated with token type reference and plugin theme authoring guide

View original on GitHub ↗

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