Everything Crisply does

First run teaches you the two buttons and gets out of the way. This is the rest of it.

The two buttons

Crisp it

For a prompt you are about to send.

Press ⌃⌥C in whatever field you are typing in. Crisply reads that one field, works out what the model would otherwise have to guess at, and asks you two or three questions about it.

Answer the ones that matter and skip the rest. A skipped question stays unstated: it never invents an answer for you. What lands back in your field is one prompt, ready to send.

The two buttons

Polish

For everything else you write.

Press ⌃⌥P instead. Grammar, spelling, punctuation, and the sentences that got away from you. It asks nothing and it answers nothing: your email stays your email, minus the three typos.

It reads the tone set on your profile, so the same paragraph comes out differently in Slack than in a document, in the way you asked for once.

The two buttons

Not right yet? Crisp again

The second pass is not a fresh start.

Press Crisp it on a rewrite and it narrows from what you already told it rather than beginning again. It will not ask you anything you have already answered.

That is why the third attempt lands closer than the second instead of sideways from it.

Making it yours

Profiles

So it stops asking you the same things about yourself.

A profile holds what is always true about your work: that you are on Next.js and Postgres, that you want code rather than prose, that answers should name the files they would change. Every rewrite carries it, so you stop typing your own context at the top of every prompt.

Crisply picks one for you from the app you are in. Cursor and VS Code get your coding profile, Mail and Slack get your writing one, and anything else falls to General. Pin one from the menu bar and it wins everywhere until you unpin it.

Tone and directions are Polish only. Standing context and output preferences reach both buttons.

Crisply's Profiles screen. The Coding profile is selected, with a line under its name reading that it is chosen automatically in VS Code and Cursor. Below that, standing facts about the user's stack, then how answers should come back, then the tone used when Polish rewrites something.

Making it yours

Prompt library

Write it well once.

Save the prompts you keep retyping, give them tags, and drop one straight into the field you are working in from the bar or the menu bar. It counts which ones you actually reach for, so the good ones rise to the top.

Anything in your history can be saved into the library in one click, which is usually how a prompt gets there: you write a good one by accident and keep it.

Crisply's Library screen. A search box over a list of saved prompts, each with how many times it has been used, and the selected one open on the right with its title, tags and full text.

Making it yours

History

What you sent, and where it went.

Every refinement you accepted or copied, with the questions it asked, the profile that shaped it, the model that answered and the address it was sent to. Searchable, and reusable: open one and put it back in a field.

Only what you accepted. A refinement you cancelled is never recorded. Switch recording off entirely in Settings → Privacy, and clear what is there with one button.

Crisply's History screen. A list of past refinements on the left, each showing the mode, the app and the time. The selected one is open on the right: the model it was sent to, the three questions it asked with one marked skipped, the original line, and the rewrite that was applied.

Where it lives

The bar

A small bar over whatever you are doing.

Its buttons act on the field you are typing in, not on the bar. Grab the grip and drag it to any edge of any screen: targets appear as you drag and it snaps to the one you drop on. Left and right turn it vertical. Double-click the grip to put it back.

It can slide off after a few seconds, leaving a sliver at the edge that brings it back when you touch it. That is off by default, because something that disappears reads as something that broke. Turn it on in Settings → General.

Where it lives

Shortcuts

⌃⌥C and ⌃⌥P, and they are yours.

Both work whichever app is in front. Change either in Settings → General: click it and press the combination you want. Escape cancels, Delete puts the original back.

It refuses a combination with no ⌘, ⌥ or ⌃, because that would swallow the key in every app you type in, including the box you would use to change it back. If another app already owns your combination, the row says so rather than failing quietly.

Crisply's General settings. A switch for keeping the bar visible, then the two keyboard shortcuts shown as key caps with what each one does, then the sound switch, then a row linking to this guide.

Rules

Per-app rules

Crisply works everywhere by default. These are the exceptions.

An app can be marked as an AI app, which makes Crisply lead with Crisp it rather than Polish. Terminals are off until you allow them, because most terminal typing is shell rather than prompts. And any app can be denied outright, after which Crisply never reads it.

Password managers are denied permanently and cannot be switched back on.

Rules

Coding agents

Manage Crisply by asking Claude Code, Codex or Cursor.

One button installs a skill into whichever of them is on your Mac. After that you can say “add this to my prompt library and call it weekly update” or “make me a profile for messages I share with my team” and it happens, while Crisply is running.

It can read and change your prompts, history, profiles and model. It never sees your API keys: those are in the Keychain and only go in through the settings window.

Crisply's Skill screen. A sentence explaining what a coding agent can change, two example phrases to say to it, then a row for Claude Code and one for Codex with the path each file is written to, and a list of what the skill can do.

Rules

Your model

Your text goes to the model you choose, and only there.

Run it against a model on your own Mac and your text never leaves the machine. Or use a Claude Code or Codex subscription you already pay for, driven the way you drive it in a terminal, with no second bill. Or an API key, which stays in the Keychain.

Anything speaking the OpenAI chat format works: a local server, a company proxy, a gateway. Type the address and the model name. Crisply checks the endpoint as you type it and says in words what happened.

Crisply's Models and Keys screen. The answering service is set to Claude Code, with a green line reading connected, five models, and the round-trip time. Below it the chosen model and the list it can be picked from, then the optional key field.

Rules

What it never does

It reads one field, on the keypress, and nothing else.

There is no background watching. Crisply reads the focused field at the moment you press a button and at no other time.

No analytics and no usage stats. You do sign in, with Google, so a trial and a purchase belong to you rather than to one Mac. The app asks our server what your account can use when you sign in, after you buy, and otherwise about once a day. Those requests carry your account and a one-way hash of this Mac’s id, never your text or your keys. It also checks this site once a day for a new version, and that check sends no id at all.

Your library and history are plain files in your own Library folder, and Settings → Privacy exports them to one file you can carry to another Mac.

Crisply's Privacy screen: what is stored on this Mac, buttons to export and import it, a plain list of what leaves the machine, and the Accessibility state.

That is all of it.