Skip to content

cinch copy

cinch copy reads from stdin and saves it to your local clip history. It is local-only: the relay is never contacted, and the clip is never encrypted or sent anywhere. To share a clip across machines, use cinch send.

Think of it as the pbcopy-shaped half of Cinch — capture terminal output, diffs, and snippets into a searchable local history, then read the latest back with cinch paste or browse it with cinch history.

Terminal window
<command> | cinch copy [flags]
Terminal window
# Save command output
cargo test 2>&1 | cinch copy
# Save a file's contents
cat report.csv | cinch copy
# Save a screenshot (classified as an image)
cat screenshot.png | cinch copy

On success it prints (to stderr):

✓ Saved 2.1 KB to local history (id=…) · 3 ms — not sent. Use `cinch send` to share.

The reminder is deliberate: copy keeps the clip on this machine. Nothing leaves until you cinch send.

FlagShortTypeDefaultDescription
--label-lstringLabel for this clip (shown in history).
--silent-sboolfalseSuppress the success line.
--typestringForce content type. Accepts image or any image/* MIME to override the image-vs-text decision. Text subtypes (text / url / code) are derived automatically and cannot be forced.
--textboolfalseForce text mode, skip image auto-detection.
--tokenstringOverride auth token. Ignored in local-only mode — present so the same flags work across copy and send.
--relaystringOverride relay URL. Ignored in local-only mode.

Same canonical 4-string vocabulary as cinch send: image, url, code, text. Images (PNG / JPEG / GIF / WebP) are detected by magic bytes; everything else is classified by client_core::classify::detect. Video files are rejected.

CodeMeaning
0Success.
1Generic error — empty stdin, oversize (> 20 MB), unsupported video, or a local store failure.
2Authentication failure in the stateless path (CI / no ~/.cinch) when every credential source is empty — run cinch auth login.