Why does Ctrl+V do nothing when I paste a screenshot into Claude Code?
A macOS screenshot puts only raw image data on the clipboard — TIFF or PNG bytes. Terminals such as Ghostty and Alacritty can paste text and file paths, but they have no way to hand raw image bytes to the program running inside them, so the keystroke reaches the AI tool carrying nothing. clipaste writes the screenshot to a temporary PNG and puts that file's path on the clipboard alongside the image data, which is something a terminal can pass through.
Can I paste screenshots into Claude Code running on a remote server over SSH?
Yes. Run clipaste ssh-setup user@host from the machine holding the clipboard. It installs an xclip shim on the remote and adds an SSH RemoteForward to your ~/.ssh/config, so the remote fetches the image back through the tunnel. Open a new SSH session afterwards, then press Ctrl+V. Never press Cmd+V in an SSH session: that sends your local file path as text, and the remote agent cannot open a path that does not exist there.
Why can't Codex CLI paste images over SSH the way Claude Code can?
Codex CLI reads the clipboard in-process through the arboard crate, which talks to X11 or Wayland directly and never runs the xclip binary. It therefore bypasses the shim clipaste installs, and there is no environment variable to redirect it. clipaste ships clipaste-paste instead: run it on the remote, and it writes the current clipboard image to a real file there and prints the path. Hand that path to Codex and it attaches the image.
Does clipaste work in WSL2?
Yes. Run clipaste wsl-setup inside the distro while clipaste.exe runs on Windows. Setup probes several candidate addresses for the Windows host and keeps the first that answers, so networkingMode=mirrored (host reachable at 127.0.0.1) and the default NAT mode both work. Under mirrored networking with DNS tunnelling the /etc/resolv.conf nameserver is a virtual DNS endpoint rather than the host — which is exactly why probing beats reading DNS config.
How does a coding agent install and verify clipaste without guessing?
Run clipaste doctor --json. It classifies the machine as clipboard-host, ssh-remote or wsl2, runs only the checks meaningful for that role, and returns each check as name, status, detail and fix — where fix is a literal command. Exit code is 0 when usable, 1 when broken, 2 on bad arguments.
How much memory and CPU does clipaste use?
About 9 MB resident, and no measurable CPU when idle. It is Rust with no runtime dependencies beyond the OS clipboard APIs. On macOS it watches the pasteboard change counter on a timer; on Windows it is fully event-driven through AddClipboardFormatListener, so it does not poll at all.
Does clipaste send my screenshots anywhere?
No. The HTTP server binds to 127.0.0.1 only and is never exposed to the network. Reaching it from an SSH remote requires a tunnel you set up yourself; reaching it from WSL2 requires mirrored networking, where loopback is shared with the Windows host. Screenshots are written to a local cache directory and cleaned up after an hour.
Is clipaste free and open source?
Yes — MIT licensed, source at github.com/hqhq1025/clipaste. It is a single Rust binary of roughly 1,600 lines: the macOS pasteboard watcher, the Windows clipboard listener, the loopback HTTP server, and the SSH and WSL setup commands.