github / github/copilot-cli

1.0.34: mintty terminal stays in button-event mode after copilot exits

Open
#2,874 0 comments 0 reactions 0 assignees View on GitHub
area:platform-windows area:terminal-rendering
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

### Describe the bug

Using a MinTTY terminal on Windows, user starts Copilot CLI then exits, the terminal is left with button-event mouse tracking mode still enabled.
This means any clicks in the terminal no longer do the usual copy/paste/menu actions but instead cause escape sequences to be input to the terminal.

There are several mouse tracking modes, documented:
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
```
┌──────────────────────────┬─────────────┬─────────────┐
│ Mode │ Enable │ Disable │
├──────────────────────────┼─────────────┼─────────────┤
│ Normal click tracking │ \e[?1000h │ \e[?1000l │
├──────────────────────────┼─────────────┼─────────────┤
│ Button-event tracking │ \e[?1002h │ \e[?1002l │
├──────────────────────────┼─────────────┼─────────────┤
│ Any-event tracking │ \e[?1003h │ \e[?1003l │
├──────────────────────────┼─────────────┼─────────────┤
│ SGR extended coordinates │ \e[?1006h │ \e[?1006l │
└──────────────────────────┴─────────────┴─────────────┘
```

The mode which is being left enabled is 1002: Button-event tracking, and 1006: SGR extended coordinates.

The current setting can be queried with `\e[?$p` which gives a response ` \e[?;$y`
Where `` is:

```
┌───────┬───────────────────┐
│ Value │ Meaning │
├───────┼───────────────────┤
│ 1 │ Set (enabled) │
├───────┼───────────────────┤
│ 2 │ Reset (disabled) │
├───────┼───────────────────┤
│ 0 │ Not recognized │
├───────┼───────────────────┤
│ 3 │ Permanently set │
├───────┼───────────────────┤
│ 4 │ Permanently reset │
└───────┴───────────────────┘
```

Example — query normal click tracking (mode 1000):
`bash$ echo -e '\e[?1002$p'`
Terminal replies e.g. `\e[?1002;2$y` → mode 1000 is disabled.

In a fresh terminal, all four modes report `2`: Reset (disabled).
After copilot has run and exited the terminal reports mode 1002 and 1006 are still enabled (`1`). Disabling mode 1002 fixed the terminal behaviour.

### Affected version

GitHub Copilot CLI 1.0.34.

### Steps to reproduce the behavior

1. `echo -e '\e[?1002$p`. Response is `\e[?1002;1$y` - disabled: good.
2. `copilot`
3. `/exit` (or Ctrl-C Ctrl-C)
4. `echo -e '\e[?1002$p`. Response is `\e[?1002;2$y` - enabled: BUG
5. Left-click and drag in the terminal produces a stream of escape sequences: BUG

### Expected behavior

1. `echo -e '\e[?1002$p`. Response is `\e[?1002;1$y` - disabled: good.
2. `copilot`
3. `/exit` (or Ctrl-C Ctrl-C)
4. `echo -e '\e[?1002$p`. Response is `\e[?1002;1$y` - still disabled: good
5. Left-click and drag in the terminal produces a selection. Right-click produces the menu.

### Additional context

Affected terminals:
Cygwin mintty v 3.7.8 (x86_64-pc-cygwin) [Windows 26220]
Git Bash mintty v 3.8.2 (Msys-x86_64) [Windows 26220]

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue in Cygwin or Git Bash mintty by querying modes 1002 and 1006, running copilot, and exiting with /exit or Ctrl-C twice. Trace the CLI's terminal setup and cleanup paths, which are not identified in the report. Done means both modes are reset after exit and mouse selection and the context menu work normally.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.