Skip to content

Releases: jaycverg/clip2remote

v0.2.0 — Linux clients and password-only SSH hosts

Choose a tag to compare

@jaycverg jaycverg released this 05 Sep 03:02

Adds Linux clients and makes password-only SSH hosts work with no setup.

Added

  • Linux clients (beta). The clipboard is read through wl-paste on Wayland or xclip on X11, covering text/uri-list plus the GNOME and legacy Nautilus flavors, and PNG screenshots. Copy a file in Files or Dolphin and paste it into the terminal exactly as on macOS.
  • Password-only hosts work without configuration. When ssh rejects the upload for lack of credentials, clip2remote asks for the password once and opens a background master connection; ControlPersist keeps it warm so later pastes reuse it silently. The password is never written to disk and never placed in an environment variable — it travels through a 0600 FIFO in a 0700 directory, read once by a generated askpass helper, and the directory is removed immediately. Requires OpenSSH 8.4+ on the client (for SSH_ASKPASS_REQUIRE); tunable via clip2remote.masterPersistSeconds.
  • Ctrl+Shift+V also triggers the paste, the conventional terminal paste on Linux.
  • A missing wl-clipboard/xclip, or no graphical session, is reported once per session with the install command instead of failing silently on every paste.

Fixed

  • Uploads no longer demand a second authentication on a password-only host. reuseSshConnection used to impose its own ControlPath, overriding any multiplexing the user had configured — so an ssh master already authenticated for the window (the one Remote-SSH holds open) was ignored, and the upload tried to open a fresh connection that BatchMode=yes cannot authenticate. clip2remote now consults ssh -G <host> and inherits the user's master. Affects every client platform, not just Linux.
  • A remote window with no resolvable SSH target no longer inserts client-side paths. Connecting to a host without opening a folder leaves no authority to read, so the window looked local and (with enableInLocalWindows on) injected the client's own paths into a terminal on the remote, where they do not exist. Such a window now reports the problem instead.
  • Staged screenshots live under the OS temp dir rather than a hardcoded /tmp.

Verified

  • macOS client — macOS 26.5.2 (25F84), VS Code 1.131.0, Node 24.11.1. Unit suite 67/67. Live: a Finder-copied file pasted into a Remote-SSH terminal — uploaded, deduplicated on repeat, remote path inserted — against both a Linux and a macOS remote.
  • Linux client (beta) — Ubuntu 24.04.4 LTS, Node 24.11.1, wl-clipboard 2.2.1 and xclip 0.13 present. Unit suite 67/67. The clipboard backend has not been run against a live desktop session. That is what beta means here.
  • Windows client — not supported in this release; Ctrl+V falls through to VS Code's own paste.

Full notes: CHANGELOG.md

v0.1.1 — control socket path fix

Choose a tag to compare

@jaycverg jaycverg released this 05 Sep 03:00

Patch release: fixes multiplexing to hosts with a long user@host:port.

Fixed

  • unix_listener: path ... too long for Unix domain socket when reuseSshConnection was on and the target was long enough to overrun sockaddr_un.sun_path (104 bytes on macOS). The control socket is now a fixed-width hash of the target rather than ssh's unbounded %r@%h:%p, with a /tmp fallback for when the OS temp dir is itself long enough to blow the budget — which it is on macOS, where TMPDIR is a ~48-character /var/folders/… path.

Full notes: CHANGELOG.md

v0.1.0 — first release

Choose a tag to compare

@jaycverg jaycverg released this 02 Aug 06:48

First release, now on the VS Code Marketplace.

Paste any file — zip, video, PDF, anything — from your Mac clipboard into a VS Code terminal. In a Remote-SSH window the file is uploaded and the remote path is typed at your prompt, so a terminal agent like Claude Code can read it immediately.

Why it's different

Existing paste extensions are image-only and run on the remote host, reaching your Mac clipboard through a webview and shipping bytes back as base64 — hence their ~10 MB caps. navigator.clipboard.read() also cannot see Finder-copied files at all.

Clip2Remote declares "extensionKind": ["ui"] so the extension host runs on your Mac, reads the real pasteboard natively, and streams the file with scp. No base64, no webview, no size ceiling.

Included

  • Multi-file clipboard, filenames with spaces, and in-memory screenshots (TIFF → PNG conversion, since macOS often puts only TIFF on the pasteboard).
  • Unchanged files are never re-uploaded; optional SSH connection multiplexing (measured 397 ms → 38 ms per round trip).
  • Inert in local windows by default — Cmd+V returns to VS Code before the clipboard is even probed.
  • Non-file clipboard content always falls through to a normal paste.

Verified

macOS 26.5.2 client against both Linux and macOS remotes over Remote-SSH: extension host confirmed running locally, authority resolved from the real window, upload integrity MD5-matched, deduplication and terminal injection confirmed.

macOS clients only for now — see the README's Portability section for the seam another platform would need.

Install

From the marketplace, or download the .vsix below and run code --install-extension clip2remote-0.1.0.vsix.