Describe the bug
Description:
After copilot.exe exits (normally or abnormally), the Windows console is sometimes left in virtual terminal input mode instead of being restored to the default cooked mode.
Symptoms:
- Pressing Up arrow shows ^[[A instead of navigating command history
- Pressing Down arrow shows ^[[B
- Backspace behaves like Ctrl+Backspace (deletes whole words)
- Other arrow keys show their escape sequences (^[[C, ^[[D)
Workaround:
Running any external executable (e.g., xcopy a a ) restores normal console behavior.
Root Cause (as analyzed by Copilot):
The application enables ENABLE_VIRTUAL_TERMINAL_INPUT via SetConsoleMode() but fails to restore the original console mode on exit. This can happen if:
- The process is terminated unexpectedly
- Signal handlers don't properly clean up
- There's a race condition in the cleanup code
Expected Behaviour:
Console input mode should be saved on startup and restored on exit (including via atexit handlers and signal handlers for SIGINT/SIGTERM).
Environment:
- OS: Windows
- Shell: cmd
Affected version
GitHub Copilot CLI 0.0.407-1.
Steps to reproduce the behavior
- Leave Copilot running for a while (e.g. overnight)
- Have it abruptly exit (timeout?)
- Console is left in a state where cursor keys output Escape sequences (e.g.
^[[A), backspace acts as ctrl+backpace.
Expected behavior
Console should behave normally.
Additional context
- OS: Windows
- Shell: cmd
- Chip: `x86-64`
- Console: Classing windows console (NOT windows terminal)
Describe the bug
Description:
After copilot.exe exits (normally or abnormally), the Windows console is sometimes left in virtual terminal input mode instead of being restored to the default cooked mode.
Symptoms:
Workaround:
Running any external executable (e.g.,
xcopy a a) restores normal console behavior.Root Cause (as analyzed by Copilot):
The application enables
ENABLE_VIRTUAL_TERMINAL_INPUTviaSetConsoleMode()but fails to restore the original console mode on exit. This can happen if:Expected Behaviour:
Console input mode should be saved on startup and restored on exit (including via atexit handlers and signal handlers for SIGINT/SIGTERM).
Environment:
Affected version
GitHub Copilot CLI 0.0.407-1.
Steps to reproduce the behavior
^[[A), backspace acts as ctrl+backpace.Expected behavior
Console should behave normally.
Additional context