Claude Code's docs list three ways to add an image: drag it into the window, paste it from the clipboard, or give it the path to the image file. Paste is the one that breaks most. The key is different on each system, and some terminals keep the key for themselves. Below is the fix for each setup, checked against the official docs and real bug reports.
The fix that works everywhere: use a file
Start here if you just want it to work.
- Save the screenshot as a PNG. On a Mac, Cmd+Shift+4 saves a file. On Windows, take it with Win+Shift+S and save it from the Snipping Tool.
- Put it in your project folder, so the path is short.
- Type the path in your message:
Look at screenshots/save-button.png. The Save button is grey. It should be blue.
Claude Code reads the image from the file. No clipboard is involved, so none of the clipboard bugs below can stop it. In bug reports on GitHub and the Cursor forum, saving to a file is the workaround people fall back to again and again.
macOS: Terminal, iTerm2 and others
- Use Ctrl+V, not Cmd+V. Claude Code's shortcut list says image paste is Ctrl+V, and Cmd+V only in iTerm2. In the built-in Terminal app, Cmd+V is the normal text paste, so the image doesn't come through.
- Copy, don't save, if you want to paste. Cmd+Shift+4 saves a file to your desktop. Add Ctrl (Cmd+Ctrl+Shift+4) to copy it to the clipboard instead.
- Look for the chip. When paste works, Claude Code puts an
[Image #1]chip in your prompt. No chip means no image was sent. - Still "No image found in clipboard"? An open issue reports this on macOS with a real image on the clipboard. The reporter confirmed that dragging the file into Claude Code worked. Do that, or use the file path.
Windows (native)
- Use Alt+V. On Windows the image paste key is Alt+V, because Windows Terminal takes Ctrl+V for its own text paste.
- If Alt+V also fails, you are not alone. Open GitHub issues report "No image found in clipboard" on Windows even when the image is there. The suggested workaround in those reports is the file path.
- Drag and drop works in some terminal hosts and not others. Try it once. If it does nothing, use the path.
WSL
WSL is the setup with the most reports. Claude Code now binds both Ctrl+V and Alt+V on WSL. The docs say to use Alt+V if your terminal grabs Ctrl+V.
- Update Claude Code first. Older versions only bound Ctrl+V on WSL, which Windows Terminal intercepts.
- Bind the key yourself if needed. Run
/keybindingsand map a key tochat:imagePastein theChatcontext. - Know why it can still fail. Commenters on the WSL issues traced it to the image format: Windows hands the image to Linux as BMP, and Claude Code's check or conversion can drop it without a clear error.
- Use a Linux path. Your Windows files are under
/mnt/c/. A screenshot atC:\Users\sam\Pictures\shot.pngis/mnt/c/Users/sam/Pictures/shot.pnginside WSL. Easier still: save the screenshot into the project folder.
Over SSH, or on a remote server
This one isn't a wrong key. When you run Claude Code on another machine over SSH, Claude Code reads that machine's clipboard. A server with no screen has no clipboard at all, so Ctrl+V does nothing, while your screenshot sits on your own computer.
- Copy the file across, then give the path. From your own computer:
scp ~/Desktop/shot.png you@server:~/myapp/shot.png. Then in Claude Code: "look at shot.png". - VS Code Remote-SSH: drag the screenshot from your computer into the file explorer of the remote window. VS Code uploads it into the project, and you can mention it by name.
- Use an inbox the agent can fetch. Instead of moving pictures around, let the agent pull bugs over the internet. Darnly's cloud inbox does this: you capture on your computer, and Claude Code on the server fetches the screenshot and report through Darnly's MCP server (setup).
VS Code
- The Claude Code extension panel: paste the image into the prompt box. The docs say that's how you attach an image there. To attach files, hold Shift while you drag them in.
- The integrated terminal: an open issue reports that Ctrl+V only pastes text in the VS Code terminal on Windows with WSL. The reporter's workaround is saving to a file and using the path or drag and drop. If you have the choice, use the extension panel for images.
Cursor
Cursor's docs give two ways to add an image to the agent chat: drag the image file into the chat box, or paste it with Cmd+V (Ctrl+V on Windows). When paste fails:
- Drag the file in. Cursor staff called clipboard paste on Windows a known issue and named drag and drop as the workaround.
- Check for an extension that steals Ctrl+V. One user found that the Office Viewer extension had bound Ctrl+V to its own paste. Turning that shortcut off brought image paste back.
- Check the model. In another thread, the agent never saw images because the chosen model was text only. Staff suggested switching to a model that reads images, like Claude, GPT or Gemini.
- Use
@and a file. Save the screenshot into the project and mention it with@. This also works in the Cursor CLI, where people report that pasting on Windows does not work.
Skip the paste step with Darnly
Every fix above ends in the same place: a file in your project that the agent can read. Darnly does that part for you. It's a free Chrome extension, and a free Mac app for things outside the browser.
Press Option+Shift+B (Windows is coming soon), click the broken part, and type what you expected. Once you've linked your project folder, Darnly saves a PNG with the broken part boxed in red into .darnly/inbox/ in your project, next to a short report with the element, the page address and recent console errors. Then you type /darnly or just say "fix my Darnly bugs" to Claude Code, Codex or Cursor, and it reads the files from the folder. No clipboard, no key to remember, no path to type.
If you'd rather keep doing it by hand, how to show Claude Code a bug covers what to write next to the picture, and how to report a bug to Cursor does the same for Cursor. Using Codex? See screenshot won't paste into Codex CLI. Using the Claude chat app? See screenshot won't paste into the Claude desktop app.