github / github/copilot-cli

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

Ouverte
#4,294 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

area:sessions area:terminal-rendering area:theming-accessibility
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Description

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:

    printenv COLORTERM
    
  3. Launch Copilot directly:

    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:

    copilot --allow-all --remote --resume
    
  6. Select a session, submit a prompt, and observe that the highlight color differs.

  7. Inspect the processes:

    ps -eo pid,ppid,args | grep '[c]opilot'
    tr '\0' '\n' </proc/<copilot-pid>/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.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez les lancements directs et repris dans WSL2 Bash, puis inspectez le processus enfant repris avec ps et /proc//environ comme indiqué. Suivez la manière dont le processus enfant avec --session-id est lancé et assurez-vous qu’il conserve l’état de COLORTERM du shell qui le lance ; le travail est terminé lorsque les sessions directes, reprises et redémarrées affichent le même surlignage de l’invite avec les mêmes paramètres du terminal.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
bash, linux, shell
Domaine
cli, operating-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.