Preferences
General Settings
Everything in Preferences that is about the app rather than about a rule or the history — launching, updating, the overlay, the chords, the sounds it makes, and moving your setup somewhere else.
Preferences opens with ⌘, — from the overlay, or from the menu bar icon's menu. Its panes are General, Copy/Paste, Search, Appearance, Actions, Triggers, Abbreviations, Shortcuts, Variables, Sounds, Sync, Advanced and Licence: Copy/Paste straight after General, being what a clipboard history is for, and Search after it, being how that history is found again, Shortcuts after the panes that define what a chord can be pointed at, Sounds after those again, and Advanced near the end, being the one that lets something outside the app in. Each has an icon in the toolbar across the top of the window, and the pane you are in is the window's title.
This page is General, Shortcuts and Sounds. The rest have pages of their own: Copy/Paste — what is kept, for how long, which copies are left out, and what a paste does — Search, Actions, Triggers, Abbreviations, Variables, Advanced — with the Shortcuts app on a page of its own, and Advanced's Statistics below — and Licence.
Launching and updating
Launch PasteDaemon at login is off until you switch it on. A clipboard history keeps nothing while it is not running, so it is worth having — but it is yours to ask for, and nothing turns it on for you.
macOS holds this rather than the app, so the same switch is in System Settings → General → Login Items and the pane reads the system each time it appears. Switching it on is a request macOS can refuse; if it does, you are shown the refusal as it was given. If macOS is holding the registration for approval — which is what happens when you have switched the app off under Login Items — the pane says so and links to that list.
Check for updates asks the moment you press it. Check for updates automatically does it at most once a day. The feed is fixed at https://pastedaemon.app/appcast.json and is not configurable: pointing a build at another feed is a way to be handed another app.
An update is offered in a window of its own — the app's icon, what is on offer against what you have, the release notes, and three answers: Install and Relaunch, Download… and Later. Closing the window is Later. Install does the whole thing in place, and is offered only when it would actually work: a feed with no checksum, a download pointing off-site, an app running from the read-only copy macOS makes of a quarantined bundle, or a copy in a folder this account cannot write, all leave the two-button dialog instead of a button that fails when pressed. Nothing is ever replaced without somebody clicking Install.
The notes cover every release between the one you are running and the one on offer, so an update that skips two of them explains both. They are shown the way they were written, bullets and all, and scroll in their box when there are more of them than it holds. The same check for updates automatically switch as the one in this pane is in the window, since that is the moment you would want to stop being asked — or start.
The menu bar icon and the overlay chord
Show menu bar icon can be switched off. If you do, a dialog explains how to get it back: open the .app again. Opening PasteDaemon while it is already running re-enables the icon rather than starting a second copy.
Overlay shortcut defaults to ⌘⌥C and can be anything carrying at least one of ⌘, ⌥ or ⌃. It is a system-wide hot key, so it works whatever app is in front — and no other app can have it while PasteDaemon is running.
Keep the overlay up until it is closed is off by default: normally the overlay closes the moment you click another window. With it on, the overlay stays where it is while you work beside it, and only ⎋, using a row or a drag that was taken puts it away — and a paste goes into whatever app you were last in. See Keeping it up.
Position says whether the overlay opens in the middle of the screen or where you last put it on each display. To move it, hold ⌘ and drag the overlay itself; Centre Again forgets where you put it, on every display. See Where the overlay sits.
Hide from screen sharing and recordings is off by default. With it on, the overlay, the HUD and the fill-in form are left out of screenshots, screen recordings and screen sharing — you still see them on your own screen, but the people watching a Zoom or Meet share don't see your clipboard history. It applies the next time each window appears.
Show shortcut hints is the row of keys along the bottom of the overlay, on by default. Switching it off hides it everywhere the overlay draws it — the list, the tag menu, the editor, a value's past versions — and gives that line back to the list. Under the list it names only the keys you'll use most — ⌘1–9, ⇥, ⌘⇧V, ↑, ⌘↩ and ⌘F — and ⌘/, which shows every one. The keys go on working; the Shortcuts pane is where to look them up once the footer is gone.
Show a tip of the day puts a line under the overlay's list once a day, the first time you open it, with something PasteDaemon can do — see Tip of the day. On by default, and the same on every Mac you sync. Tip of the Day in the menu bar brings back the last tip whether this is on or off.
Preview a row when the pointer rests on it brings up a card beside the overlay with more of a row — its text, picture or files — after the pointer has rested on it for a moment — see A look with the pointer. On by default, and the same on every Mac you sync.
Shortcuts for gathering and reading the screen
Two more system-wide chords sit in a Shortcuts section of General, below the overlay's. Each works whatever app is in front.
Gather copies starts gathering copies into one list and, pressed again, puts them back one per paste. It defaults to ⌘⌥A. Clear gives ⌘⌥A back to every app; you can still gather from the menu bar menu's Gather Copies.
These shortcuts, and the overlay's, belong to this Mac: they don't sync, so each Mac can use whatever suits its keyboard.
Copy text from the screen has no shortcut until you set one. Pressing it lets you draw a box over the screen and copies the text inside it. It's in the menu bar menu as Copy Text from Screen whether or not you set a chord, and Clear gives the chord back. It belongs to this Mac and doesn't sync.
Pick a colour from the screen has no shortcut until you set one either. Pressing it puts up an eyedropper, and the colour you click is copied as #rrggbb. It's in the menu bar menu as Pick Colour from Screen, and like the other two it belongs to this Mac.
The Shortcuts pane lists all three, with the overlay's chord, and links back here.
Saving files
Save folder is where ⌘⇧S in the overlay saves a row as a file, and what a path starting ./ after > in a command is written into — $1 > ./notes.txt. It is your Desktop until you Choose… another; Use Desktop goes back. Clicking the path opens the folder in Finder.
It belongs to this Mac and does not sync: a folder on one Mac need not be there on another. Writing a result to a file has the rest.
Running in the background
Some runs happen with nobody watching them: a long-running action or pipeline once the overlay has closed, anything a shortcut runs, and each trigger on a copy. Stop a run after puts a limit on all of them — 5 seconds, 10, 30, a minute, two or five. There is none to begin with.
A run still going at the limit is stopped where it stands: a script is killed, Apple Intelligence is left unanswered, and nothing it made is put on the clipboard or pasted. The HUD says which one it was — Pipeline failed because of timeout, Fix typos failed because of timeout, ⌥⌘T failed because of timeout.
- Each trigger has the whole limit for its conditions and its pipelines. One that runs past it leaves the copy exactly as you copied it, and nothing a trigger before it did is kept either.
- The clock starts when the run does, and starts again after any form the run asks you to fill in.
- A command you run from the search bar while the overlay stays open has no limit — you are there to see it.
The setting travels to your other Macs with the rest of your preferences.
Taking your rules to another Mac
A history is one thing; the work is another — the actions you wrote, the triggers that run them, the variables you named, the abbreviations you type. The Import/Export Data section exports those to a file and reads one back.
The file is JSON marked "format": "pastedaemon.items". Three things are deliberately not in it: the clipboard history, which has a window of its own; the settings, which are about this Mac; and the standard library, which ships with the app — a file carrying a copy of it would be a file able to hold a release back.
Secrets never travel. A secret's value is sealed with a key that lives in this Mac's keychain, so the ciphertext could not be read anywhere else, and the plain text is exactly the thing that must not be written into a file you are about to email yourself. The export window lists them as left out and says how many.
Nor do pictures. The file is text, so a variable holding a picture or an app's object is listed as left out too, and a list's pictures travel as the text they read as — a copied file as its path. Formatted text does travel: a variable written in the formatted editor or kept from a formatted copy arrives formatted, pictures in it and all.
Export Items lists everything of your own with a tick beside each row and All / None on each category, everything ticked to start with. Ticking a trigger ticks the actions it runs, and unticking an action unticks the triggers that would be left naming nothing — so a file this app writes always reads back somewhere else.
The list is the shape your library is: type, then collection, then folder. Actions and triggers sit in the folders you filed them in, a folder inside a folder sits inside it here too, and every heading folds away — click it, or its triangle. A folded heading still says how much of it is ticked, 3 of 8, and its own All / None tick that folder alone, however deep. So exporting one folder out of forty actions is None on the category and All on the folder, rather than thirty-nine clicks. Everything starts open: this is a list of what you have.
There is a search field at the top, ready to type in when the window opens, with its own All / None beside it for everything below. Those act on what is showing, so the short way to say "this and nothing else" is: type the word, None at the top, All on what is left. A row is found by its name the way the overlay finds a keyword — rut reaches remove-url-tracking — and by any word that literally appears in its description or in the folder it is filed in, so Work finds everything in Work ▸ Email. While you are searching the list goes flat and each row says where it lives; the counts read 2 of 5 found. Empty the field and the list comes back exactly as you had it folded.
Import Items reads and checks the file before the window appears: one that is not this app's, one from a later version, or one whose triggers name actions nothing defines is a sentence in an alert rather than a window full of rows you would then be told you cannot have. What is in the file is listed the same four ways, with each row marked if something of that name is already here. One switch decides what happens to those, for the whole import: it is off — skip them, leave what is here as it is — because an import is a thing you do to gain rules, not to lose the ones you have written since.
A few rows can never come in, and are shown greyed with the reason: a variable named with a number, a secret, an action with no keyword, an abbreviation with nothing to type. Dropping a file onto the app's icon opens the same window.
Import… also accepts snippets from other apps and brings them in as abbreviations: a collection exported from Alfred (an .alfredsnippets file), or a group exported from TextExpander as CSV, or Raycast's Export Snippets file. See Bringing snippets over from Alfred, from TextExpander and from Raycast.
A Raycast Export Settings & Data file (.rayconfig) holds your clipboard history as well as your snippets, so choosing one here asks for its password and opens the Import Clipboard History window with the export in it. Its row offers the history and, with a tick of its own, the snippets. See Bringing over a Raycast history.
Secrets
How long one unlock lasts — 5 minutes, 1 hour or 24 hours, defaulting to 5 minutes. One unlock covers every secret until the window closes, and sleeping or locking the screen closes it early. While they are unlocked the section says so and offers Lock Now.
How long a sealed copy stays in the history is Keep sealed copies for, with the other keeping periods in Copy/Paste.
Sounds
PasteDaemon has no Dock icon and no window of its own, so most of what it does happens while you are looking at something else. The Sounds pane gives five of those things a sound to make — the HUD at the bottom of the screen says what happened and has to be looked at; a sound says that it happened and does not.
Play sounds is off until you switch it on, and it is the one switch over all of them: with it off the app makes no sound at all, whatever the rows below say. Underneath it every row is already on with a sound of its own chosen, so switching it on is the whole of the setting up — the rows are there for narrowing it down afterwards.
The five, and when each one sounds:
- Something is copied — every copy kept in the history, whether it is text, files or an image. Copies made while recording is paused, or in an excluded app, are not kept and make no sound.
- PasteDaemon pastes — whenever the app presses
⌘Vfor you: using a row, running an action, dealing out a list. It follows Automatically paste selection in Copy/Paste; with that off the app never pastes, so this never sounds. - An action runs from a shortcut — one of your own shortcuts running an action. A chord bound to a command opens the overlay for you to finish, and sounds when the action it starts actually runs.
- A trigger fires — a trigger matching something you copied. You hear both when a copy has one: the copy was kept, and then something was done to it.
- An abbreviation is recognised — the moment the keyword is recognised, before the expansion is worked out, so you hear it even when the expansion fails. That is when it is worth most: a rule that fails leaves the keyword sitting on screen, and the sound tells you the app was listening.
The sounds on offer are the alert sounds macOS ships — the same ones System Settings uses for its own — plus anything you have put in ~/Library/Sounds, which is the folder System Settings takes your own alert sounds from too. Drop an AIFF in there and it is in the menu the next time you open this pane. Choosing one plays it, and Play hears it again; both work whether or not that row is switched on, since what you are asking is what it sounds like.
Shortcuts
The Shortcuts pane holds two lists: your own shortcuts first, then the overlay's commands.
Your own shortcuts
At the top are the chords you write. There are none to begin with — the chord that opens the overlay is the only key the app claims without being asked. Each row reads as a sentence — ⌘⌥T everywhere runs trim — and is a chord, a scope, and one of three things to do with it.
The scope is where the chord is answered, and what it costs:
- everywhere registers it with the system. It works whatever app is in front, and no other app can have it while PasteDaemon is running.
- in the overlay reads it from the keyboard the overlay already has. The key goes on meaning whatever it means everywhere else, so
⌘Tcan runtrimin the overlay and still be New Tab in your browser.
What you bind is either:
- run an action on whatever is on the clipboard, exactly as the menu bar's Apply Action does. The result goes on the clipboard and to the top of the history, and is pasted back if Automatically paste selection is on; nothing appears but the HUD saying what ran. A pipeline action is how a whole chain of filters gets one of these.
- run a pipeline —
$1 | trim | upper, or| summarize— on whatever is on the clipboard, straight away and without the overlay, the way an action runs: the result goes on the clipboard and is pasted back. A pipeline that runs a long-running action puts its result on the clipboard without pasting it, and the HUD says when it is there. The row checks the pipeline as you write it, and says so if it names a filter that does not exist; until it reads, the chord does nothing. Withselectorcopyandpasteit works on the text selected in the app in front instead:| select | upper | pastebound to a chord upper-cases whatever you have selected, in place.
Whatever a shortcut runs, the HUD names it by the keys you pressed — ⌘⌃⌥M pasted, Running ⌘⌃⌥M…, ⌘⌃⌥M: copy found no selected text — so a message that arrives a few seconds later says which chord it is about. The history still records the action that ran.
- open a command, which puts that text in the overlay's search bar — the half of a pipeline that never changes, typed once here instead of every time. It previews as though you had typed it,
↩runs it, and the caret sits at the end ready for whatever the command was left waiting for ($1 | strftime).
⌘I in a pipeline's or a command's field opens the overlay inside it, to find a copy, a variable or an action and write it in where the caret was — as in the Actions pane. ↩ there adds no line break: a shortcut's command is one line.
What a shortcut runs is held to the time limit for runs in the background, if you have set one.
The action is chosen from the same tree the Actions pane shows, and is named by its keyword: renaming an action's description leaves the shortcut alone, and rewriting what the action does changes what the chord does. A keyword that names nothing — renamed, deleted — is not repaired quietly; the pane marks the row and pressing the chord says so. A disabled action still runs from its chord.
Because the rules for the two scopes differ, moving a row from in the overlay to everywhere can leave it holding a chord that will no longer do. The chord is kept and the row says why, and until it is settled the row is answered nowhere.
The overlay's own commands
Below your own shortcuts is every chord the overlay answers to, each with what it does and where it applies, and a recorder beside it: click, press the keys, and ⎋ leaves it as it was. A command you have moved offers Revert, which puts it back on the chord the app ships — only a change is saved, so a release that moves a default moves it for everybody who never rebound it.
The commands are pause or resume recording (⌘T), show one kind of thing, a tag, a date, an app or a state (⌘F), tag the row (⌘⇧T), tag several rows (⌘⌥T), paste as plain text (⌘⇧V), copy without pasting (⌘C), paste and delete (⌘⇧↩), paste as a file (⌘⌥V), save as a file (⌘⇧S), pin (⌘P), delete (⌘⌫), delete similar copies (⌘⌥⌫), undo the last delete (⌘Z), show the trash (⌘⇧⌫), edit (⌘E), look at one in full (⌘L), open the row where it belongs (⌘O) or show its file in Finder (⌘R, which also shows a row of files from Finder), show past values (⌃↩), show what changed (⌘D), store in a variable (⇧↩), gather into a list (⌘↩), insert a reference (⌥↩), open the overlay inside a command (⌘I), open preferences (⌘,), show every key (⌘/) and save the search (⌘S).
A chord is refused, with the reason under the recorder, when it has no ⌘, ⌥ or ⌃ and is not ⇧ on a key that types nothing; when it is one the overlay walks its list with; when it already opens the overlay; or when it is already another command's or one of your own shortcuts, which the message names. Two commands on one chord would leave no way to tell which one a keystroke was about to run.
Copying to the history
Copy to the history is a chord of your own — none until you set one, since it is taken from every app while PasteDaemon runs. Pressing it presses ⌘C in the app in front and keeps what that copies, triggers and all, even while recording is paused. Clear gives the chord back. It needs Accessibility permission, as automatic pasting does, and an excluded app still keeps nothing. If nothing is selected, the HUD says so.
On its own it's a ⌘C that keeps through a pause. With Keep only copies made with the shortcut on in Copy/Paste, it is the only way a copy is kept. The chord belongs to this Mac and doesn't sync.
The keys that cannot be rebound
Listed below to be read rather than changed: ↩, ↑/↓, ⇥, ⇧⇥, ⎋ and the ⌘/⌃/⌥/⌃⇧ 1–9 families. Those walk the list rather than act on it, and the digits are a family of nine rather than a chord. Chords are matched by key code, so a binding stays on the same physical keys across layouts.
AI filters on a model you choose
The AI filters — summarize, proofread, rewrite, ask, extract and the rest — ask Apple Intelligence, on your Mac. Advanced → Integrations → AI Filters lets them ask a model you choose instead: Anthropic's, or any server that speaks OpenAI's chat completions — OpenAI itself, or one on your own Mac such as Ollama (http://localhost:11434/v1) or LM Studio (http://localhost:1234/v1). It works on a Mac without Apple Intelligence, and takes far longer texts: up to 100,000 characters rather than a few thousand.
- Choose the Provider, and for an OpenAI-compatible one the Server — empty is OpenAI's own.
- Name the Model — for Anthropic, Choose offers
claude-opus-5-5,claude-sonnet-5-5andclaude-haiku-5-5. - Paste your API key and press Save. It goes into your login keychain, never into
config.json, and is not shown again. A local server usually needs none. - Test sends one short question, none of your text, to check the key and the model.
- Switch it on.
Your text leaves your Mac while it is on. Switching it on asks first, and says where the text will go. Whatever a filter runs on is sent to that server — including filters a trigger runs on a copy by itself, and runs from the local API, assistants and the Shortcuts app — under the provider's terms, and every run is billed to your key. translate and ? questions stay on your Mac either way, and, as with Apple Intelligence, a filter waits for ↩ rather than running as you type. The provider and the server can't be changed while it is on; switch it off first.
It can read pictures. describe-image says what a picture shows, or answers a question about it — $1 | describe-image "what does this chart say?" — and runs only on a chosen model, since Apple Intelligence reads only text. The picture is sent to the server too, scaled to at most 1,568 pixels on its longest side; a screenshot can show more than you meant to share. The model has to be one that sees pictures — Claude and GPT do, and so do vision models in Ollama and LM Studio such as llava or gemma3 — and one that doesn't says so when it is asked.
It is set per Mac and does not sync: the key is in this Mac's keychain.
Statistics
Advanced has two halves, chosen at the top of the pane: Integrations — the API, assistants and the Shortcuts app — and Statistics, which counts what PasteDaemon holds:
- History — how many copies are kept, and of what kind; how many are pinned; how many are new in the last 7 and 30 days (copying the same text again is not a new copy); when the oldest was first copied; and how much space everything PasteDaemon keeps takes on this Mac.
- Copied In — the eight apps the most was copied in, with their share of the history.
-app:leaves one of them out of a search. - Tags — the eight tags the most copies carry, automatic and guessed tags included.
- Asking with ? — how many copies have been read for what they mean, of those that can be. A long history takes a while the first time; until a copy is read, a question finds it by its words alone.
- Pasting — how many pastes PasteDaemon remembers, from when, how they were made (⌘V by hand, from the overlay, the menu bar or Spotlight) and the apps the most was pasted into. Nothing is counted while Remember what you paste is off in Search.
Where you paste stays on this Mac: it is never synced, and neither the API nor assistants can read it. The rest of Statistics is in GET /v1/status?statistics=true.
When something could not be read
If part of the saved configuration could not be read at the last launch, a warning at the top of the General pane says what was lost and offers to reveal the copy kept of the file as it was found. It can be dismissed.
Nothing is ever all-or-nothing: a section that cannot be read costs only that section, a row only that row, and a field that is missing takes its default. That matters because whatever was loaded is written back over the file within the second — anything dropped on the way in would be lost for good a moment later.