Skip to content

Repository files navigation

Clip for Mac

A clipboard history for macOS that refuses to capture secrets. Search everything you've copied, pin the things you paste every day, and, if you want, ask questions about it without anything leaving your Mac.

Free, MIT licensed, no account, no telemetry. Same family as Tidy for Mac.

Download

Download Clip for Mac 1.0.1 (DMG, 2.7 MB) · macOS 14 or later, Apple silicon and Intel

  1. Open the downloaded file and drag Clip for Mac into Applications.
  2. Open it from Applications. macOS will say it can't check the app for malicious software: click Done, then System Settings › Privacy & Security › Open Anyway. That happens once, because this is a free app without Apple's $99-a-year certificate.
  3. Press ⌥⌘V.

Or build it yourself in a minute, no Xcode needed: git clone https://github.com/keithadler/clipmac && cd clipmac && ./build-app.sh --install --run

The Clip for Mac panel: pinned snippet, history with ⌘-number badges, a flagged secret, preview pane

Searching for money owed finds the invoice and the bill by meaning
"money owed" finds the invoice and the bill without either word, on-device.

What it will never capture

These are hard rules, not settings:

  • Anything a password manager marks as concealed or transient (the org.nspasteboard.* convention that 1Password, Bitwarden, Keychain Access and others follow).
  • Anything copied while a password field has focus (macOS secure input).
  • Anything copied from an excluded app. The list ships pre-filled with the common password managers and Keychain Access, and you can add any app.
  • Anything over the size cap (50 MB by default).

Items that look like secrets anyway (API keys, JWTs, private keys, card numbers) are flagged in the panel and are masked before any optional cloud request. clipmac forget --sensitive deletes them all.

Using it

  • ⌥⌘V opens the panel over whatever you're doing. Type to search, ↑↓ to move, to paste, ⌘↩ to paste as plain text, ⌘C to copy without pasting, ⌘1–⌘9 for the top nine, ⌘P to pin, ⌘⌫ to delete, esc to close.
  • Pinned items sit at the top. Give a pin a keyword and clipmac snip <keyword> prints it; the menu bar can also export pins as a macOS Text Replacement list so the system expands them. Clip for Mac never watches what you type.
  • ⌥⇧⌘V pastes whatever is on the clipboard as plain text, from any app, without opening the panel. ⇧↩ in the panel queues an item on the paste stack; ⌃⌥⌘V pastes the next queued item, so you can collect five things and paste them into five fields in a row. All three shortcuts are configurable in Settings › General.
  • ⌥↩ pastes a cleaned copy: trimmed, with tracking parameters (utm_*, fbclid, gclid…) stripped from any link. Right-click › Paste As offers lowercase, UPPERCASE, Title Case, one line, Markdown link, pretty-printed JSON.
  • Copies you make twice (even with different whitespace) stay one item with a ×N count. When Accessibility is granted, items remember the window they came from: "Safari · GitHub issue #42", not just "Safari".
  • Screenshots are searchable. Text in captured images is read on-device with Vision and becomes the item's searchable text.
  • A one-line note under the menu bar says why something was not saved ("Not saved: a password field has focus"), so the rules never look like a lost copy.
  • Pause from the menu bar or clipmac pause 30m. The icon shows the state.
  • Updates are never installed by themselves. Once a day the app asks GitHub whether a newer release exists (one request, no identifiers) and, if so, fills in the menu bar icon and offers the download. Settings › General turns the daily check off. The app opens at login by default, since a clipboard history only helps while it is running; that is a toggle too.
  • Search matches words (full-text), fragments (substring) and, with the default on-device word embeddings, meaning: "unpaid bill" finds the invoice without the word.

Welcome tour Settings › General with the three shortcuts

Your other Macs

Two ways, neither with an account or a server:

  • Pins through a folder. Settings › History › Pins on other Macs: choose any folder that iCloud Drive, Dropbox or a USB stick already syncs, and every Mac keeps its pins (never history) in step through a small checksummed JSON file. clipmac pins export|import|sync.
  • Sharing on the local network. Settings › Sharing: Bonjour finds your other Mac, both screens show the same six-digit code once, you press Pair on both, and from then on pins and the last N text items travel end-to-end encrypted (Curve25519 + ChaChaPoly). Secrets, images, files and excluded-app items never leave the machine. Off by default.

Pasting: two honest modes

  1. Copy only needs no permission. Choose an item, the panel closes, you press ⌘V.
  2. Auto-paste needs the Accessibility permission, which is how macOS lets an app press ⌘V for you. Settings › Paste explains it in one sentence and lets you grant it. Your previous clipboard is put back afterwards (adjustable delay, or off).

Ask your clipboard (optional)

  • On-device model (macOS 26 with Apple Intelligence): "summarize what I copied today", "turn the last five items into a list". Nothing leaves the Mac. Hidden entirely when the Mac can't run it.
  • Bring your own key (Anthropic or OpenAI): off by default. You choose the items, the app shows you the exact redacted payload, and nothing is sent until you confirm. Every request is logged (clipmac assist log). No proxy, no account, no relay through anyone's server. The provider bills their metered API, separately from a Claude Pro or ChatGPT Plus subscription.

Where the data lives, and encryption

~/Library/Application Support/Clip for Mac/history.db (SQLite) plus a blobs/ folder for images and rich text. Defaults: 30 days, 2,000 items, 1 GB; pinned items are exempt. Deletion is real deletion. "Session only" in Settings › History keeps everything in memory and forgets it on quit.

Clip for Mac does not encrypt the database itself. Full-text search can't index ciphertext, and shipping half-encryption would imply more than it delivers. It relies on FileVault and says so: Settings › History and clipmac status warn when FileVault is off.

Command line

clipmac list --limit 20 --json
clipmac get 3                      # position 3, or #42 for a stable id
clipmac copy #42 --plain
clipmac search "invoice" --semantic
clipmac pin 3 --keyword sig
clipmac snip sig
clipmac pause 30m
clipmac forget --app com.example.thing
clipmac wipe --yes
clipmac assist "what did I work on today" --local
clipmac assist "group these by project" --cloud --last 20
clipmac assist log --json
clipmac status
clipmac update                     # exit 1 when a newer release exists

Exit codes: 0 fine, 1 warning, 2 problem, 64 usage error. man clipmac after --install.

Shortcuts and scripts

The Shortcuts app gets real actions when the app was built with Xcode available: Get Recent Clipboard Items, Search Clip for Mac, Copy Clipboard Item, Pause and Resume Capture, Open Clip for Mac. Items that look like secrets are left out unless the action asks for them. (make-appintents.sh writes the metadata Shortcuts needs; without Xcode the actions are simply absent and the URL scheme below still works.)

The clipmac:// URL scheme drives the running app, so a Shortcuts "Open URL" action or open from a script works without the CLI:

clipmac://open                    show the panel
clipmac://search?q=invoice        show the panel with a query
clipmac://paste/42                paste item #42 (add ?plain=1 for plain text)
clipmac://copy/42                 put item #42 on the clipboard
clipmac://pause?minutes=30        clipmac://resume
clipmac://settings                clipmac://welcome            clipmac://close

Privacy

See PRIVACY.md: what is stored, what is never stored, what leaves the Mac (nothing unless you add your own key), and the FileVault statement.

Building

Requires macOS 14 or later and the Command Line Tools (xcode-select --install). No Xcode, no dependencies beyond the system frameworks.

./build-app.sh --install --run

That builds a universal binary, wraps it in Clip for Mac.app, copies it to /Applications and symlinks clipmac onto your PATH. Run ./make-local-identity.sh once so macOS stops re-asking for Accessibility after every rebuild. ./make-dmg.sh makes the release disk image; ./notarize.sh documents the Developer ID path. See Testing below. Casks/clipmac.rb is the Homebrew cask for the first public release.

Testing

Three layers, one source of truth:

  • Unit suites live in Sources/ClipMac/Tests and run against an in-memory store and a throwaway defaults suite, so they never touch your history. Run them from the binary with nothing but the Command Line Tools:

    clipmac selftest              # or: clipmac selftest --filter Store --json
  • XCTest bridge (Tests/ClipMacTests) runs the same suites under swift test on any Mac with Xcode, which is what CI uses.

  • Screenshots: clipmac screenshots docs/screenshots renders every window with demo data, dark and light, without touching real history. That is where the images above come from.

  • Integration (tests/integration.sh) launches the real app with its own data directory (CLIPMAC_HOME), copies text, links, secrets, concealed items, RTF, images and files, and checks what the CLI reports: capture, refusal, dedup, pause, search, pins, forget, wipe.

Layout

Sources/ClipMac/
  ClipMacApp.swift      entry, accessory policy, hotkey registration, retention timer
  Monitor.swift         pasteboard polling and the capture-refusal rules
  Store.swift           SQLite + FTS5, retention, blobs, vectors, request log
  Item.swift            the model
  PanelController.swift non-activating floating panel and keyboard handling
  PanelView.swift       search, list, preview
  Paster.swift          copy-only and auto-paste, restore previous clipboard
  Snippets.swift        pins, keywords, Text Replacement export
  Redactor.swift        secret detection and masking
  Assist.swift          semantic search, on-device model, bring-your-own-key
  Capabilities.swift    what this Mac and this permission set allow
  Hotkey.swift          Carbon global hotkey with conflict detection
  CLI.swift, Dump.swift the clipmac command
  SettingsView.swift, MenuBar.swift

Contributing

See CONTRIBUTING.md: the seven ground rules that keep the app trustworthy, and how to add a capture rule, a CLI command, or a language.

License

MIT. See LICENSE.

Trademarks

Mac and macOS are trademarks of Apple Inc., registered in the U.S. and other countries. Clip for Mac is an independent open-source project and is not affiliated with, endorsed by, or sponsored by Apple. 1Password, Bitwarden, Raycast, Maccy, Paste and other names are trademarks of their respective owners and are used only to identify those products.

More from the same maker

Four more small apps built the same way: each does one thing, says exactly what it touches, and never phones home. Free, MIT licensed, no accounts. All five at keithadler.github.io.

  • Ask for Mac: ask your files a question in your own words and get the answer with the file it came from, all on the Mac.
  • Permissions for Mac: every permission on your Mac on one screen, in plain English, with what changed since last week.
  • Tidy for Mac: cleanup and speed for the whole family; nothing is deleted, only moved to the Trash with an undoable receipt.
  • Stash for Mac: encrypted backup into storage you already have; the provider only ever sees ciphertext.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages