Skip to content

OSC 52 clipboard write stores raw UTF-8 bytes, causing CJK characters when pasted on Windows/WSL #3062

@cgmawi

Description

@cgmawi

Copilot CLI writes shell commands to the clipboard via OSC 52 when rendering responses. On Windows Terminal + WSL, the OSC 52 content is stored as raw UTF-8 bytes rather than UTF-16LE. When pasting, Windows interprets the bytes as UTF-16LE, producing CJK characters.

Steps to reproduce:

  1. Run Copilot CLI in WSL via Windows Terminal
  2. Ask for a command (e.g. sudo apt install libsecret-tools gnome-keyring)
  3. Select 30+ characters from the command and Ctrl+C
  4. Paste anywhere

Expected: sudo apt install libsecret-tools gnome-keyring
Actual: 畳潤愠瑰椠獮慴汬氠扩敳牣瑥琭潯獬朠潮敭欭祥楲杮

Evidence:

  • [System.Windows.Forms.Clipboard]::GetText() always returns the full 46-byte command as 23 UTF-16LE code points, regardless of actual selection length
  • No hidden/control characters present — pure ASCII bytes misread as UTF-16LE pairs
  • Selecting fewer than 30 characters works correctly (selection stays within OSC 52 boundary)
  • Copying the same string from Notepad works correctly

Environment:

  • Windows 11, Windows Terminal (latest), WSL Ubuntu
  • $LANG=C.UTF-8, system locale: German (Germany)

Workaround: Use /copy slash command instead of manual selection

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text inputarea:platform-windowsWindows-specific: PowerShell, cmd, Git Bash, WSL, Windows Terminalarea:terminal-renderingDisplay and rendering: flickering, scrolling, line wrapping, output formatting

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions