github / github/copilot-cli

[Bug] Resumed session injects COLORTERM=truecolor and changes prompt highlight color

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

Descrizione

### Describe the bug

Resuming a Copilot CLI session can inject `COLORTERM=truecolor` into the spawned session process even though the launching shell and parent Copilot process have `COLORTERM` unset. This changes the submitted-user-prompt highlight from the terminal-palette green rendering to a gray truecolor background.

The result is inconsistent UI rendering between two Copilot sessions launched by the same WSL user, with the same global `theme: "github"` setting, the same Windows Terminal profile, and `TERM=xterm-256color`.

Process inspection showed:

- Direct launch from Bash:
- process is a direct child of the login shell;
- `COLORTERM` is unset;
- submitted user prompts have a green highlight.
- Resumed session:
- `copilot --allow-all --remote --resume` spawns a child Copilot process with `--session-id`;
- the shell and parent Copilot process have `COLORTERM` unset;
- the spawned child has `COLORTERM=truecolor`;
- submitted user prompts have a gray highlight.

There is no repository-local Copilot setting or Git color configuration explaining the difference. `copilot help config` exposes only whole-theme presets and no prompt-background setting.

### Affected version

GitHub Copilot CLI 1.0.76-3

The long-running resumed session was originally started on an earlier 1.0.76 build and survived CLI updates, but the current process/executable reports 1.0.76-3.

### Steps to reproduce the behavior

1. Open a fresh WSL2 Bash shell in Windows Terminal.
2. Confirm the variable is absent:

```bash
printenv COLORTERM
```

3. Launch Copilot directly:

```bash
copilot --allow-all --remote
```

4. Submit a prompt and observe the user-message highlight.
5. In another fresh shell with `COLORTERM` still unset, resume a saved session:

```bash
copilot --allow-all --remote --resume
```

6. Select a session, submit a prompt, and observe that the highlight color differs.
7. Inspect the processes:

```bash
ps -eo pid,ppid,args | grep '[c]opilot'
tr '\0' '\n' /environ | grep -E '^(TERM|COLORTERM|WT_SESSION)='
```

8. Observe that the resumed child has `COLORTERM=truecolor`, while its parent Copilot process and launching Bash shell do not.

### Expected behavior

Copilot CLI should preserve the launching terminal's color-capability environment consistently across direct, resumed, and restarted sessions.

A resumed child process should not inject or change `COLORTERM` relative to its launching shell/parent. With the same terminal and `theme` setting, submitted user prompts should render with the same highlight colors.

### Additional context

- OS: WSL2 Linux, x86_64
- Terminal: Windows Terminal
- Shell: Bash login shell
- `TERM=xterm-256color` in both sessions
- Same Windows Terminal profile ID in both sessions
- User setting: `"theme": "github"`
- No repository-local theme/config override found
- The only observed discriminator was `COLORTERM=truecolor` on the resumed child

Related open issues:

- #3591 — user prompt visual distinction/configuration
- #4292 — truecolor-related rendering differences
- #4212 — prompt/highlight rendering differs by terminal context

This report is narrower: it concerns Copilot CLI's resumed-session process launch changing `COLORTERM`, producing different rendering without any terminal, user, repository, or theme-setting change.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riproduci gli avvii diretti e ripresi in WSL2 Bash, quindi ispeziona il processo figlio ripreso con ps e /proc//environ come descritto. Traccia il modo in cui viene avviato il processo figlio con --session-id e assicurati che preservi lo stato di COLORTERM della shell di avvio; il lavoro è completato quando le sessioni dirette, riprese e riavviate mostrano lo stesso evidenziamento del prompt con le stesse impostazioni del terminale.

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

Valutazione

Stack tecnologico
bash, linux, 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
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.