claude-code - 💡(How to fix) Fix Add hook or theme primitive for decorating the transcript area (above input) [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#55536Fetched 2026-05-03 04:50:52
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
0
Timeline (top)
labeled ×4commented ×1

Root Cause

Power users invest heavily in custom statuslines, hook automation, and terminal theming. The transcript area is the single largest visual surface Claude Code shows them, and it's the only one they can't touch. A small extension point here would unlock significant UX work without changing CC's core rendering.

RAW_BUFFERClick to expand / collapse

Problem

Today, the only user-customizable visual surface in Claude Code is statusLine, which renders below the input box. The chat transcript area (above input) is rendered by the built-in TUI with no extension point — no hook stdout, no theme tokens, no plugin slot can inject visible content there.

This blocks several real accessibility and UX needs:

  1. Visual readability for low-vision users. The transcript renders in a single uniform foreground color/weight from the terminal's defaults. There's no way to bold assistant turns, color-tag user vs assistant, increase contrast on tool-call lines, or visually chunk turns.
  2. Turn-boundary decoration. Users want to draw attention to where a turn ends/begins (frames, separators, timestamps, mode badges).
  3. Per-turn ambient data. Cost of last turn, tools just used, context-window % consumed — currently must live in statusLine (always-on) rather than punctuating the conversation where it's relevant.

We attempted to solve this with UserPromptSubmit and Stop hooks emitting ANSI to stdout, but the docs (and behavior) confirm hook stdout goes to Claude's context, not the terminal — invisible to the user in normal chat view.

Proposed solutions (any one would unblock this)

  • A transcriptDecoration hook — fires on UserPromptSubmit / Stop / SessionStart, stdout renders inline in the transcript at that boundary. Mirrors statusLine semantics but for transcript-area rendering.
  • Per-role theme tokenstheme.transcript.user.fg, theme.transcript.assistant.fg, theme.transcript.assistant.weight, theme.transcript.toolCall.fg, etc. Solves the readability case without a new hook surface.
  • Optional turn separatorssettings.json flag to render a configurable separator line between turns (similar to how some IDEs draw cell separators in REPLs).

Why this matters

Power users invest heavily in custom statuslines, hook automation, and terminal theming. The transcript area is the single largest visual surface Claude Code shows them, and it's the only one they can't touch. A small extension point here would unlock significant UX work without changing CC's core rendering.

extent analysis

TL;DR

Implementing a transcriptDecoration hook or introducing per-role theme tokens could address the visual customization limitations in the chat transcript area.

Guidance

  • Introduce a transcriptDecoration hook that fires on specific events like UserPromptSubmit, Stop, or SessionStart, allowing stdout to render inline in the transcript.
  • Consider adding per-role theme tokens, such as theme.transcript.user.fg or theme.transcript.assistant.weight, to enhance visual readability.
  • Explore the option of adding an optional turn separator, configurable via a settings.json flag, to improve turn boundary visualization.
  • Evaluate the trade-offs between these proposed solutions, considering factors like complexity, flexibility, and user experience impact.

Example

No specific code example is provided due to the lack of technical implementation details in the issue.

Notes

The choice of solution depends on the specific requirements and constraints of the Claude Code project, including the desired level of customization, performance considerations, and user experience goals.

Recommendation

Apply a workaround by introducing per-role theme tokens, as this approach seems to offer a balance between simplicity and effectiveness in addressing the visual readability concerns.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Add hook or theme primitive for decorating the transcript area (above input) [1 comments, 2 participants]