github / github/copilot-cli

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

未關閉
#2,874 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area:platform-windows area:terminal-rendering
主要語言
Shell
星號
11.2k
分支
1.9k
平均合併
14 小時 16 分鐘
30 天內合併 PR
6

描述

### 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]

貢獻指南

開啟貢獻指南

研究方向

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.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
shell
領域
cli
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
冷清
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。