github / github/copilot-cli

[Bug] CLI downgrades TERM from xterm-256color to xterm-color — diff highlighting has no colors

Aperta
#2,902 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
area:terminal-rendering area:tools
Lingua principale
Shell
Stelle
11.2k
Fork
1.9k
Merge medio
14h 16m
PR unite (30g)
6

Descrizione

### Describe the bug

The Copilot CLI binary overrides `TERM=xterm-256color` to `TERM=xterm-color` (8 colors) when spawning its bash subshells. This causes diff highlighting to show **no colors at all** — only `+`/`-` markers are visible with no red/green background highlighting, making it impossible to review changes.

### Screenshot

Image

> The diff shows `+` and `-` markers but no red/green color highlighting. All text is the same color, making it very difficult to identify changes.

### Evidence

The parent copilot process inherits the correct TERM from the terminal:
```
Parent copilot process: TERM=xterm-256color, COLORTERM=truecolor
Child bash subprocess: TERM=xterm-color, COLORTERM=truecolor
```

Verified via `ps -p -E` — the parent has `xterm-256color`, but the spawned `bash --norc --noprofile` subprocess gets `xterm-color` (only 8 colors).

### Impact

- Diff output shows `+` and `-` markers but **zero color highlighting** (no red/green backgrounds)
- All CLI themes tested (`default`, `high-contrast`, `dim`, `colorblind`) show the same issue
- Development workflow is blocked — cannot visually review proposed changes
- This works correctly on Windows, where TERM is not overridden

### Environment

- **Copilot CLI version:** 1.0.34 (binary at `/opt/homebrew/Caskroom/copilot-cli/1.0.32/copilot`)
- **OS:** macOS (Darwin, Apple Silicon)
- **Terminals tested:** Ghostty 1.3.1, macOS Terminal.app — same result in both
- **Terminal multiplexer:** Zellij (but TERM is correct before CLI overrides it)
- **Shell:** zsh (CLI spawns `bash --norc --noprofile`)

### Steps to reproduce

1. On macOS, confirm terminal has `TERM=xterm-256color` (e.g. Ghostty, iTerm2, Terminal.app)
2. Launch `copilot`
3. Ask Copilot to edit any file
4. Observe the diff preview — no color highlighting on added/removed lines
5. Verify inside the CLI session: `echo $TERM` shows `xterm-color` instead of the terminal's `xterm-256color`

### Expected behavior

The CLI should preserve the terminal's TERM value (`xterm-256color`) or at minimum use `COLORTERM=truecolor` (which IS correctly inherited) for rendering decisions. Diff highlighting should show colored backgrounds for added/removed lines.

### Related issues

- #1813 — Diff highlights entire line (users there at least have colors)
- #1818 — Diff highlight colors broken (fixed, but those users had colors too)
- #1847 — Code diffs hard to see in dark mode (fixed)
- #2216 — Low contrast text selection

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riprodurre su macOS con TERM=xterm-256color e ispezionare l’ambiente passato al sottoprocesso bash --norc --noprofile avviato dal binario copilot. Tracciare il punto in cui TERM cambia da xterm-256color a xterm-color, quindi verificare che il processo figlio preservi il valore del terminale e che diff previews visualizzi nuovamente a colori le righe aggiunte e rimosse.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
bash, macos, shell
Ambito
cli, operating-systems
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
58/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.