Use scp when you want the smallest trustworthy solution for one screenshot; use a path uploader when you repeat that task, or a batch tool when several files belong together. Clipboard shims feel closer to native paste, but they add a tunnel, remote helper or display dependency that must be maintained.
The control case used for this comparison is a real OpenSSH transfer: the remote path is absent before upload and readable afterward.
Start with the manual scp baseline
Before installing a clipboard tool, verify the workflow with scp:
scp bug.png user@server:/tmp/bug.png
Expected result: /tmp/bug.png exists on the host where Claude Code runs.
Inspect /tmp/bug.png.
Expected result: Claude Code receives a server-side path and does not need access to the laptop clipboard.
If that is enough, stop here. If the repetition is the problem, install vmup and complete the first SSH upload before comparing it with a shim or path uploader.
Tool comparison
| Tool | Design | Remote changes | Best fit | Main trade-off |
|---|---|---|---|---|
scp | Manual file copy | None beyond the uploaded file | One named file | You type every source and remote path |
| clipaste | Local clipboard daemon, SSH forwarding and remote helper | Installs helpers and SSH configuration | Frequent Claude Code screenshot paste | More moving parts; Codex uses a printed-path helper |
| cssh | Clipboard sync plus remote xclip shim | Installs a shim; optional Xvfb for Codex | Native-feeling Claude Code paste | Modifies remote PATH and may run a daemon |
| clipssh | Reads local clipboard, uploads a PNG, copies the remote path | Uploaded file only | One screenshot with no remote daemon | Screenshot-focused; /tmp cleanup is your job |
| PasteHop | Uploads a clipboard image or file and inserts/copies its remote path | Uploaded file; optional terminal integration | WezTerm or Kitty users who want a paste hook | Requires host trust and terminal integration for native paste |
| imgssh | Wraps the SSH process and uploads on a trigger | Uploaded file only | Ghostty users who accept an SSH wrapper | You must connect through the wrapper; PNG-focused |
| vmup | Batches paths, clipboard items or watched files into one remote folder | Uploaded batch plus TTL cleanup | Several images or mixed file types | Produces a folder prompt, not a native image pill |
Every tool row links to its current project documentation. Check the project again before installation because flags, supported terminals and cleanup behavior can change.
Shims versus path uploaders
Clipboard shims try to preserve Ctrl+V by making the remote clipboard look populated. clipaste and cssh fit this category. They are closest to local Claude Code, but they may alter SSH configuration, install a remote command or keep a background process alive.
Path uploaders accept that the agent needs a file. clipssh, PasteHop and imgssh transfer an image and provide the resulting remote path. They are easier to reason about because the success condition is visible with ls or file.
Expected result: after either design succeeds, Claude Code receives a readable remote file. The difference is whether the tool simulates paste or exposes the path.
Where vmup differs
vmup bug.png console.png notes.pdf
Expected result: one Agent folder: path contains the whole set, and the generated prompt asks the agent to inspect that folder.
vmup does not aim to recreate [Image #1] inside Claude Code. It is for the adjacent problem: several files, mixed formats, one remote directory and automatic expiry.
How to choose
- One saved PNG and no new dependency:
scp. - One clipboard screenshot and a remote path is acceptable: clipssh or PasteHop.
- Native-feeling Claude Code paste is worth a daemon or remote shim: clipaste or cssh.
- Ghostty-specific wrapper flow: imgssh.
- Several files or mixed formats: vmup.
For the complete manual workflow, read paste an image into Claude Code over SSH. If the TUI prints an error, read fix “No image found in clipboard”.
Last tested with
- Control transfer: macOS 26.6, OpenSSH 10.3p1, localhost SSH target, September 16, 2026
- Linux control transfer: Ubuntu 26.04, OpenSSH 10.2p1, Lima VM to localhost SSH target
- Batch workflow: vmup 0.4.0
- Comparison claims: checked against each linked project README on September 16, 2026; third-party tools were not installed for this article
Quick answers
What is the simplest way to give Claude Code a screenshot over SSH?
Save the PNG, copy it with scp, and paste the remote path into Claude Code.
Which tools avoid a remote clipboard daemon?
scp, clipssh, PasteHop, imgssh and vmup upload files without requiring a persistent remote clipboard daemon.
Which options handle files beyond screenshots?
scp, PasteHop and vmup accept explicit files. Confirm each tool’s current type restrictions before depending on it.
When should I use a clipboard shim? Use one when preserving the paste gesture matters more than minimizing remote setup and background processes.
When should I use a batch folder? Use a batch when several screenshots, documents or recordings belong to one agent request and one directory prompt is easier than listing every path.
Disclosure: vmup is maintained by the author of this article. The comparison keeps scp first so you can solve the problem without installing vmup or another helper.