Skip to content
vmup
DocsLearn

September 12, 2026

How to paste an image into Claude Code over SSH

Paste an image into Claude Code over SSH by saving it, copying it to the remote host with scp, and referencing the remote path. Includes vmup alternatives.

  • #claude-code-image-input
  • #paste-screenshot-claude-code
  • #claude-code-paste-image-ssh

The easiest way to send screenshots and files to your remote machine

Collect copied screenshots, upload one SSH batch, and paste the remote folder prompt into your agent.

Install

npm install -g @nyxsky404/vmup

Capture screenshots

vmup --clip
See the complete vmup workflow

You cannot rely on a laptop clipboard image appearing inside Claude Code on a remote server. Save the image, upload it with scp, and give Claude Code the resulting remote path.

A visual summary of the tested SSH workflow: the image is missing on the remote host before scp and recognized as a PNG afterward.

Visual summary of a real OpenSSH test: the remote path does not exist before upload; after scp, the host identifies a 1024×1024 PNG.

Why image paste fails over SSH

Claude Code runs where you launched claude. In an SSH session, that is the remote host, while the screenshot and clipboard remain on your laptop.

Clipboard behavior also varies by Claude Code version and terminal. Anthropic’s issue tracker documents a Ctrl+V regression over SSH in Claude Code 2.1.181 and a separate request for image-capable clipboard protocols on headless Linux. A remote file path avoids both clipboard paths.

Upload one image with scp

scp is the OpenSSH secure file-copy command. Run it on the machine that currently holds the screenshot.

macOS or Linux

scp ~/Desktop/bug.png user@server:/tmp/bug.png

Expected result: scp exits without an error and /tmp/bug.png exists on the server.

Windows through WSL

Windows drives appear under /mnt, so a screenshot in C:\Users\you\Pictures is available to WSL at /mnt/c/Users/you/Pictures. Microsoft documents this Windows-to-WSL path mapping.

scp /mnt/c/Users/you/Pictures/bug.png user@server:/tmp/bug.png

Expected result: the command finishes without an error and the file exists at /tmp/bug.png on the remote host.

Confirm the remote file

ssh user@server 'file /tmp/bug.png && ls -lh /tmp/bug.png'

Expected result: file reports PNG image data and ls prints a non-zero file size.

Give Claude Code the remote path

Now tell Claude Code which remote file to inspect:

Look at /tmp/bug.png and tell me why the header is clipped.

Expected result: Claude Code reads the image from the server instead of trying to read your laptop clipboard.

Stop repeating scp for every screenshot

The manual transfer above is enough for one image. For several saved images, copy multiple files with one scp command. If you regularly send screenshots or mix images with PDFs and recordings, install vmup, then follow the first SSH upload to turn those files into one remote folder and one pasteable prompt.

vmup --clip

Copy each image, press Enter after each one, and type done when the batch is complete.

Expected result: vmup prints Agent folder: followed by one remote directory and copies a prompt containing that directory to the clipboard.

Remote-SSH drag and drop

If VS Code or Cursor is already connected to the remote workspace, drag the saved image into the remote Explorer. The editor uploads the file into the workspace; reference that remote file from Claude Code’s integrated terminal.

Expected result: the file appears in the remote Explorer and ls in the integrated terminal can see it.

Common failures

  • No such file or directory: the source path is wrong on the laptop, or the destination directory does not exist on the server.
  • Permission denied: verify the same SSH user, key, host and port you use for an ordinary login.
  • A local path appears in the prompt: /Users/… or C:\Users\… still points to the laptop. Use the remote /tmp/… or workspace path.
  • tmux changes the paste behavior: paste the remote path as text. Do not depend on tmux forwarding binary clipboard data.

For the exact clipboard error, see fix “No image found in clipboard” over SSH. For helper trade-offs, see Claude Code SSH screenshot tools compared.

Last tested with

  • Manual transfer: macOS 26.6, OpenSSH 10.3p1, localhost SSH target, September 16, 2026
  • Linux transfer: Ubuntu 26.04, OpenSSH 10.2p1, Lima VM to localhost SSH target
  • Batch workflow: vmup 0.4.0
  • WSL path form: /mnt/c/... transfer executed under Ubuntu 26.04 and checked against Microsoft’s WSL documentation; native WSL was not available

Quick answers

Can I paste a screenshot into Claude Code over SSH? Do not depend on direct clipboard paste over SSH. Copy the image onto the remote host and give Claude Code the remote path.

Does SSH forward the clipboard for images? Plain SSH does not upload a clipboard image as a file. Some terminals and helpers implement separate clipboard protocols, but support varies by terminal and Claude Code version.

What is the fastest manual method for one screenshot? Run scp bug.png user@server:/tmp/bug.png, then tell Claude Code to inspect /tmp/bug.png.

Can I drag an image into Claude Code over Remote-SSH? Drag the image into the remote Explorer first, then reference the uploaded remote path from Claude Code.

Does tmux make image paste less reliable? It adds another terminal and clipboard boundary. A remote file path is independent of tmux clipboard handling.

Disclosure: vmup is maintained by the author of this article. The manual scp method above is free, requires no vmup installation, and remains the recommended baseline for one file.

More guides

  • How to paste screenshots into a remote terminal over SSH
  • Claude Code: no image found in clipboard over SSH
  • Claude Code SSH screenshot uploaders compared

All guides

Maintained by nyxsky404 on GitHub.

GitHubnpmIssuesSecurityChangelog