The problem: Ctrl+V doesn’t paste images in terminals

If you’ve tried pasting a screenshot into Claude Code running in a terminal emulator, you know the pain. You hit Win+Shift+S, snip something, switch to your terminal, press Ctrl+V, and… nothing. Or you get “no image found in clipboard.”

This isn’t a Claude Code bug. It’s a terminal limitation.

Terminals like Hyper, Wezterm, and even Windows Terminal handle Ctrl+V as a text paste operation. When the clipboard contains an image (not text), the terminal either ignores it or passes nothing through. Claude Code never sees the image data.

On WSL2, it’s even worse. The Wayland clipboard bridge (WSLg) is unreliable, and tools like xclip and wl-paste often can’t connect to the Wayland socket. Even if your terminal wanted to forward the image, the plumbing between Windows and WSL2 isn’t there.

Why this matters for developers

Claude Code accepts images as visual input. You can paste screenshots of error messages, UI mockups, terminal output, or architecture diagrams and Claude will analyze them. It’s one of the most useful features for debugging and code review.

But if you can’t paste images, you’re stuck with workarounds:

That’s four steps for something that should be one.

The fix: screenshot-to-path

Invoke has a dedicated hotkey for this. Here’s the workflow:

  1. Win+Shift+S — snip whatever you want (error message, UI, diagram)
  2. Press your image hotkey (default: middle click, configurable)
  3. Done — Invoke saves the image as a PNG and pastes the file path into your terminal

Claude Code receives something like /home/you/.screenshots/clip_20260313_143022.png and renders the image inline.

How it works under the hood

When you press the image hotkey, Invoke:

  1. Grabs the image from the Windows clipboard via PowerShell (bypasses the broken WSLg/Wayland path entirely)
  2. Saves it as a timestamped PNG to ~/.screenshots/
  3. Puts the file path string on your clipboard
  4. Auto-pastes it into your terminal (if auto-paste is enabled)

On Windows, Invoke uses PowerShell to grab the clipboard image directly — bypasses the broken WSLg/Wayland clipboard path entirely and works every time. The subprocess call adds about 500ms, which is fine for a non-realtime operation.

It works in every terminal

Since Invoke pastes a text string (the file path), it works in any terminal emulator:

No special terminal configuration. No image protocol support. It’s just text on a clipboard.

Setup

Download Invoke for Windows and the image hotkey works out of the box. Default is middle click (scroll wheel button). You can change it in Settings or via the setup wizard.

Images save to ~/.screenshots/ and auto-clean after 30 days.

Beyond screenshots

This pairs well with Invoke’s voice dictation. A typical workflow:

  1. See a bug in the UI
  2. Win+Shift+S to snip it
  3. middle click to paste the image path into Claude Code
  4. Mouse5 (hold and speak): “This button should be aligned with the header. Fix the CSS in the navbar component.”

Voice plus a screenshot in two hotkey presses. I use this workflow constantly now.

> Sounds interesting?

Invoke is $49 once. Free 7-day trial, all features, no credit card.

Try it free →

Not just dictation anymore

Invoke started as a voice-to-text tool. Screenshot-to-path was the second thing I added because I kept hitting the same wall — I’d snip a bug, then waste 30 seconds saving and typing a file path. Now it’s one button.

$49 once. Free 7-day trial.