Shift input is silently dropped in Codex CLI in VS Code integrated terminal over WSL
What version of Codex CLI is running?
codex-cli 0.114.0
What subscription do you have?
ChatGPT Plus
Which model were you using?
gpt-5.4 high
What platform is your computer?
Microsoft Windows NT 10.0.22631.0 x64
What terminal emulator and version are you using (if applicable)?
VS Code integrated terminal on Windows 11, launching PowerShell -> WSL (Ubuntu).
What issue are you seeing?
Inside Codex, all Shift key combinations are silently ignored in the VS Code integrated terminal when running through WSL.
This affects:
- uppercase letters
- all symbols that require Shift
- e.g.
Shift+7for/on DE-CH layout
Behavior:
- no character appears
- no error
- no beep
- input is just dropped
What steps can reproduce the bug?
- Open VS Code integrated terminal on Windows 11.
- Start PowerShell.
- Run
wsl. - Launch
codex. - Try typing any uppercase letter with Shift.
- Try typing any shifted symbol, e.g.
Shift+7for/on DE-CH layout.
What platform is your computer?
- Windows 11
- VS Code integrated terminal -> PowerShell ->
wsl-> Codex - WSL distro: Ubuntu
- Keyboard layout: DE-CH (Swiss German)
TERM=xterm-256colorLANG=C.UTF-8- Codex installed via
npm install -g @openai/codex
VS Code version
Version: 1.110.1 (user setup)
Commit: 61b3d0ab13be7dda2389f1d3e60a119c7f660cc3
Date: 2026-03-06T23:03:27.520Z
Electron: 39.6.0
ElectronBuildId: 13330601
Chromium: 142.0.7444.265
Node.js: 22.22.0
V8: 14.2.231.22-electron.0
OS: Windows_NT x64 10.0.22631
What is the expected behavior?
Codex should accept Shift-modified input normally, including uppercase letters and shifted symbols.
What do you see instead?
All Shift key combinations are ignored only in this environment.
Additional information
Control cases:
- Works: Windows Terminal -> WSL -> Codex
- Works: VS Code integrated terminal -> WSL -> Claude Code
- Broken: VS Code integrated terminal -> WSL -> Codex
What I verified:
cat -vraw byte output is identical between working and broken terminalsLANG=de_CH.UTF-8 codexdid not fix itTERM=xtermandTERM=linuxdid not fix it- exporting dummy
WT_SESSION/WT_PROFILE_IDdid not fix it - not a VS Code shell/chord interception issue, because Claude Code works in the same setup
- disabling
terminal.integrated.windowsEnableConptydid not fix it - not Windows Terminal-specific
infocmpoutput looks normal
Observed env diff:
Working terminal (Windows Terminal):
WSLENV=WT_SESSION:WT_PROFILE_ID:
WT_SESSION=<guid>
WT_PROFILE_ID=<guid>
Broken terminal (VS Code integrated terminal):
WSLENV=
However, manually exporting those variables did not fix the issue.
Conclusion:
This appears to be a Codex-specific terminal input handling bug in the VS Code -> WSL PTY path. Since the same raw bytes are received and Claude Code handles them correctly in the identical environment, Codex seems to be misinitializing or misinterpreting keyboard input in that terminal context.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗