Desktop Pricing Docs Blog About GitHub View as Markdown (Agent) Get started
Human Agent
← Back to blog

Getting images into remote & cloud coding agents

You're pair-programming with Claude Code or Codex, you've got a screenshot of the bug, and… you can't paste it. The agent runs on a remote box, in the cloud, or takes a text-only prompt. SSH clipboard bridges like cc-clip solve part of this. Here's the honest comparison — and why handing the agent a URL reaches the cloud and sandbox agents a tunnel can't.

Local coding agents can read a pasted image just fine. The moment the agent moves off your machine, that breaks. Claude Code over SSH, Codex cloud, Claude Code on the web, Cursor's background agents, a Daytona or e2b sandbox — the input is text, and the clipboard bytes never make it across. So you've got a screenshot in front of you and no way to hand it over.

Two families of solutions have grown up around this. They solve genuinely different halves of the problem.

Option 1: SSH clipboard bridges (cc-clip)

Tools like cc-clip (and skills like claude-ssh-image-skill) bridge your local clipboard into a remote session over the SSH connection. A small daemon on your machine serves the clipboard image; a shim on the remote fetches it through an SSH reverse tunnel and feeds it to the agent. The image travels over your own tunnel — it's never uploaded to a third-party host.

That's the real strength: no third-party upload. If you're privacy-sensitive or air-gapped, that matters a lot. The cost is that it's tied to the one thing making it work — an SSH tunnel:

  • It needs one-time setup on the remote: an SSH RemoteForward, the local daemon, and a remote xclip/wl-paste shim (the Codex path also wants a headless X server). Automated, but with real moving parts tied to the tunnel.
  • It only works where you have SSH into the box. A browser-based agent, a managed cloud runner, or a sandbox you don't shell into has no tunnel to bridge.

Option 2: A hosted URL

The other approach sidesteps the tunnel entirely: turn the image into a hosted URL and paste that. As long as the agent accepts image URLs — which the text-based ones above do — it can read the image even when it can't take pasted bytes. That's exactly what PixelVault Desktop does — a small macOS/Linux menu-bar app. Copy any image (or press ⇧⌘2 for a region capture), it uploads, and a URL lands on your clipboard. Paste it into the agent.

The key property: nothing is installed on the remote side. The app runs locally; the agent — wherever it lives — only ever receives a URL. So one workflow covers SSH boxes, cloud agents, and sandboxes alike, with no per-environment configuration.

Side by side

SSH clipboard bridge (cc-clip)
PixelVault Desktop
Agent over SSH
Yes
Yes
Cloud agents (Codex cloud, Claude Code web)
No — no tunnel to bridge
Yes
Managed sandboxes without SSH access
No — unless you can SSH in
Yes
Setup on the remote
SSH RemoteForward + daemon + shim (+ Xvfb for Codex)
None
Uploaded to a third-party host?
No — sent over your SSH tunnel
Yes — an ephemeral (~30-day) URL
Capture built in
No (bring your own screenshot)
Yes (⇧⌘2 region capture)

"Yes" for cloud agents and sandboxes means your local screenshot reaches the agent as a URL it can read — the app runs on your machine, not inside the remote. And note the row that goes the other way: cc-clip never uploads to a third-party host; the image only travels over your own SSH tunnel. If "no third-party upload" is a hard requirement, an SSH bridge is the honest answer.

When an SSH bridge is the right call

  • You're privacy-sensitive or air-gapped and the image genuinely can't leave your infrastructure.
  • You already SSH into everything and are happy configuring the remote once.
  • You only ever work with agents you shell into — never cloud or browser-based ones.

When a hosted URL wins

  • Your agent runs somewhere you can't (or don't want to) SSH into — Codex cloud, Claude Code on the web, Cursor background agents, a fresh sandbox.
  • You want one workflow for all of them, not a different bridge per environment.
  • You'd rather install nothing on the remote — just paste a link.
  • You want the URL to expire on its own (anonymous uploads expire in ~30 days), or to keep a history you can re-copy from after signing in.
  • You want capture built in — press one shortcut, get a URL, no separate screenshot step.

Try it

PixelVault Desktop is free and open source (macOS + Linux). Copy an image, paste a URL — into any agent that reads an image URL, wherever it runs. There's also a /pixelvault-desktop Claude Code skill so the workflow is discoverable right inside the editor.

Download the desktop app →