anthropics / anthropics/claude-code
Statusline Nerd Font glyphs render as literal \uXXXX escapes only in Agent-Teams tmux-spawned panes
- Lingua principale
- Python
- Stelle
- 145k
- Fork
- 23.1k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
## Problem
Custom statusLine command output (using bash ANSI-C quoting, `$'\uXXXX'` etc. for Nerd Font/
powerline glyphs) renders correctly as real Unicode glyphs in:
- a standalone Claude Code session (no multiplexer)
- a manually-opened tmux/psmux pane running Claude Code
But renders as literal backslash-u text (` Sonnet 5 ...`) in a pane
created by Agent Teams' tmux/psmux teammate mode (`teammateMode: "tmux"`) - same script, same
statusLine config, same machine, same shell, same locale.
## Ruled out
- Locale/encoding: confirmed `LANG=en_US.UTF-8`, `LC_ALL=en_US.utf8`, `LC_CTYPE=en_US.utf8`
identical in both working and broken panes.
- Bash version/ANSI-C quoting: confirmed bash 5.2.37 correctly resolves `$'\uXXXX'` to the raw
UTF-8 byte sequence in the broken pane too - a diagnostic `printf '%b' $'\uXXXX'` run via a
Bash tool call inside the same broken session's pane produced a real glyph, not escaped text.
- The script's own raw output: ran the *exact* statusLine invocation Claude Code uses
(`bash statusline-command.sh` with JSON piped to stdin) and captured its raw stdout bytes
directly to a file before anything could touch a TUI. `repr()` of those bytes shows correct
multi-byte UTF-8 (e.g. `\xee\x83\x87` for U+E0C7) and zero literal `\u` ASCII text anywhere in
the stream. So the script and its invocation are clean regardless of which pane runs it -
the corruption is not introduced by how the command is sourced/invoked for team agents.
- Not a general PUA/Nerd-Font rendering gap (unlike #70301) - the same glyphs work fine in the
same physical terminal/font when Claude Code isn't running as a spawned teammate, and the
escaping here also hits plain, non-PUA Unicode (box-drawing `━` U+2501, math bracket `⟨` U+27E8),
not just Nerd Font PUA codepoints - appears to be a blanket "escape everything above ASCII"
behavior specific to this one render path, rather than a glyph-width/font issue.
This isolates the bug to Claude Code's own status-line rendering/writing path specifically in
the tmux-teammate-spawn code path - confirmed downstream of the script, not the terminal, font,
locale, or shell.
## Environment
- Windows 11, psmux (tmux-compatible multiplexer) as `teammateMode: "tmux"` backend
- Requires `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=true` (Agent Teams / tmux mode is gated
behind this experimental flag)
- Reproducible: compare statusLine output in a manually-opened pane vs. a teammate-spawned pane
in the same psmux session
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Reproduce the comparison between a manually opened pane and a teammate-spawned pane using the same statusLine command and psmux session. Trace Claude Code's status-line rendering and writing path for tmux-teammate mode, focusing on where valid UTF-8 becomes escaped text. Done means Unicode glyphs render correctly in spawned panes without regressing standalone or manually opened panes.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- bash
- Ambito
- cli
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100