[WSL] Bind Alt+V to chat:imagePaste in addition to Ctrl+V for parity with Windows-native build

Resolved 💬 1 comment Opened Apr 20, 2026 by PowerUserZ Closed May 26, 2026

Summary

Two separate issues conspire to break image paste in Claude Code under WSL when it is launched from common Windows terminals. This report focuses on the first; the second is already tracked at #25935 and both must be fixed for a complete solution.

A) Platform-dependent defaults. Claude Code's default chat:imagePaste differs by build:

  • Windows native: Alt+V
  • Linux / WSL: Ctrl+V

When Claude Code runs inside WSL, several Windows terminals (Warp for Windows, PowerShell console host) capture Ctrl+V at the host level, so the TUI never receives it. Alt+V does reach the TUI under those terminals, but it is not bound to chat:imagePaste on Linux/WSL, so users cannot paste at all.

B) Related MIME handling (#25935). Even once the keybinding reaches the handler in WSL, the Linux-side clipboard check only accepts image/png, while Windows screenshot tools (Snipping Tool, Win+Shift+S) publish image/bmp via WSLg — causing "no image" errors even with the keybinding corrected. Fixing (A) alone is insufficient for WSL users on Windows.

Proposal (this issue)

Detect the WSL environment (e.g. WSL_DISTRO_NAME, /proc/sys/kernel/osrelease containing microsoft, or WSL_INTEROP) and add alt+v to the default chat:imagePaste bindings alongside ctrl+v. This provides parity with the Windows-native build and gives users a fallback key when the host terminal intercepts one of the two.

{ "ctrl+v": "chat:imagePaste", "alt+v": "chat:imagePaste" }

End-to-end workaround (validated)

Users today can fully restore WSL image paste with the following steps:

  1. Move Warp's "Alternate terminal paste" off Ctrl+V. See https://github.com/warpdotdev/Warp/issues/7069#issuecomment-4277676645 for details.
  2. Explicitly bind both ctrl+v and alt+v to chat:imagePaste in ~/.claude/keybindings.json under WSL — and, if a Windows-native build is also used, in C:\Users\<you>\.claude\keybindings.json as well. The proposal in this issue would make this step redundant.
  3. Install a BMP → PNG clipboard converter to work around #25935 until Claude Code accepts image/bmp on Linux. A validated watcher (ImageMagick + wl-clipboard + xclip, polling at 300 ms since WSLg's Weston compositor does not support wl-paste --watch) is included in the Warp comment linked above.
  4. Restart Claude Code on both sides.

Environment

  • Claude Code CLI v2.1.114
  • WSL2 Ubuntu 24.04 on Windows 11
  • Reproduced with Warp for Windows and PowerShell (Windows console host). Community reports indicate WezTerm and Windows Terminal deliver the keypress to the child TUI, though this was not personally verified.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗