clipd
Local-first clipboard history manager for Windows 11.
clipd is a single-binary clipboard manager that captures everything you copy,
indexes it for fuzzy search, and pastes any past entry back with full format
preservation — without ever leaving your machine.
Why clipd
Win+V has a 25-item cap, no real search, no filtering, and cloud-syncs by default with no clear opt-out. ClipboardFusion / ArsClip / Ditto are aging Win32/.NET UIs without fuzzy search or developer affordances.
clipd:
- Fast fuzzy search — nucleo-ranked fuzzy matching over your whole history, filtered live as you type. The picker window cold-spawns in a few hundred milliseconds; once open, search is effectively instant.
- Local-only by default — no cloud sync, ever.
- Encrypted at rest — DPAPI-wrapped AES-GCM, per-user keying.
- Password-manager-aware — respects
ExcludeClipboardContentFromMonitoring, detects high-entropy secrets, refuses to store sensitive content. - Dev-friendly — auto-classifies entries (URL / JSON / hash / base64 / code), preserves all formats on paste-back, search syntax for date filters.
- Single static binary — no runtime, no installer required.
Install
-
Download the latest
clipd-vX.Y.Z-x86_64-pc-windows-msvc.zipfrom Releases. -
Unzip anywhere —
%LOCALAPPDATA%\Programs\clipd\is a sensible choice but anywhere works; the autostart entry records whatever path you unzip to. -
Open a terminal in the unzipped folder and run:
.\clipd.exe install --autostartThis writes
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\clipdpointing atclipd.exe --daemon. -
Reboot (or start the daemon manually with
.\clipd.exe --daemon). -
Press Win+Alt+C — the picker opens.
To remove autostart: .\clipd.exe uninstall.
Building from source
Requirements: Rust 1.78+ (rustup default stable), Windows 10+ with the
x86_64-pc-windows-msvc target.
The binary lands at target/release/clipd.exe. cargo test runs the unit
suite — the DPAPI paths in store::crypto only execute on Windows, but the
rest of the tree builds and tests on Linux dev hosts via the identity-wrap
stub in src/platform/keyring.rs.
The release flow (signing, zipping, uploading) is documented in RELEASING.md.
First-run SmartScreen warning
clipd.exe is signed via Microsoft Trusted Signing.
SmartScreen also weighs application reputation, which builds with download
volume; until reputation accumulates, the first time you run the binary
you may still see "Windows protected your PC."
If that happens:
- Click More info.
- Click Run anyway.
Once SmartScreen has seen the signature on enough machines, the warning goes away on its own — you do not need to take any action to make that happen.
Usage
Picker (default)
Press Win+Alt+C to open the picker.
| Key | Action |
|---|---|
| Type | Live fuzzy filter |
| ↑ / ↓ | Navigate results (list follows the selection) |
| Enter | Restore selection to clipboard, close picker |
| Esc | Close picker |
| Ctrl+P | Pin / unpin selected entry |
| Delete | Delete selected entry |
| Click | Select row |
| Double-click | Restore row to clipboard, close picker |
Search syntax
Prefixed tokens filter the results (in the picker query or clipd search):
:pinned— pinned entries only:today,:yesterday:Nd— last N days, e.g.:7d>YYYY-MM-DD— entries after that date<YYYY-MM-DD— entries before that dateYYYY-MM-DD..YYYY-MM-DD— range
Combine with text: :7d kubectl matches "kubectl" entries from the last week.
Text matching in the picker is fuzzy (kgp finds kubectl get pods); the
CLI matches substrings.
CLI
| Command | Effect |
|---|---|
clipd pick |
Open picker (default if no subcommand) |
clipd list [--limit N] |
Print recent entries |
clipd search <query> [--limit N] |
Substring search; accepts filter tokens: clipd search :7d kubectl |
clipd delete <id> |
Delete entry by id |
clipd pin <id> [--unpin] |
Pin / unpin entry |
clipd pause / clipd resume |
Pause / resume capture (daemon stays up) |
clipd doctor |
Diagnostics: config, key file, DB integrity, pipe, hotkey (works even when config.toml is malformed) |
clipd config [--path] |
Print effective config as TOML (default, aka --show), or the file path with --path |
clipd install --autostart |
Add HKCU Run entry |
clipd uninstall |
Remove HKCU Run entry |
clipd --daemon |
Run the daemon directly (autostart calls this) |
clipd --config <path> <cmd> |
Use an alternate config file (global flag, works with every command) |
Configuration
Config lives at %APPDATA%\clipd\config.toml. The file is created on demand —
defaults apply if it's absent. See config.example.toml
for every section, with defaults and one-line descriptions:
[hotkey]— chord (defaultwin+alt+c)[retention]— days + max entries (default 30 days, 5000 entries)[picker]— result limit[secrets]— entropy heuristics tuning[capture]— exe-name exclusions, sensitive-content policy (skip|mark)[paths]— override data dir (default%APPDATA%\clipd\)
Run clipd config --show to print the effective merged config, or
clipd config --path for the resolved file path.
Security
What clipd defends against
- Encryption at rest — every clipboard payload is encrypted with AES-GCM
using a per-install 32-byte key. The key is wrapped with Windows DPAPI
(
CryptProtectData), tied to your user account, and stored at%APPDATA%\clipd\key.dpapi. Another Windows user on the same machine cannot decrypt your clipboard history. A stolen disk image without your Windows credentials is unreadable. - Password-manager exclusion — clipd refuses to store payloads tagged
with the
ExcludeClipboardContentFromMonitoringclipboard format (Bitwarden, 1Password, KeePass, modern browsers all set this). It also detects browser-extension password-manager copies that don't surface the format flag. - Secret-pattern heuristics — OpenAI / GitHub / Slack / AWS keys, JWTs, PEM blocks, and high-entropy short tokens are recognized and dropped (or marked sensitive, see config).
- No cloud sync, ever — clipd is a local-only tool. There is no opt-in sync, no telemetry, no network code.
What clipd does NOT defend against
- Malware running as the same Windows user. DPAPI cannot defend against
this — the malware can call
CryptUnprotectDataitself. This is a fundamental limit of any user-mode clipboard tool. - Cold-boot / disk-image attacks where the attacker has your Windows password. BitLocker is the answer here, not clipd.
For full triage info while running, clipd doctor prints config paths, key
file status, DB integrity (PRAGMA integrity_check), pipe reachability,
hotkey registration, and autostart status.
Logs
clipd writes a daily-rotated log at
%APPDATA%\clipd\logs\clipd.<YYYY-MM-DD>.log. Last 14 days kept. Panics are
captured with location, thread, and a forced backtrace.
Screenshot
License
Licensed under the Apache License, Version 2.0.