<!-- Markdown twin of https://pixelvault.dev/blog/images-into-cloud-coding-agents -->

[← Back to blog](/blog) July 2026

# 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`](https://github.com/ShunmeiCho/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](/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](/desktop) is free and [open source](https://github.com/pixelvault-dev/desktop) (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](/for-ai-agents) so the workflow is discoverable right inside the editor.

[Download the desktop app →](/desktop)
