A menu bar app that fixes your writing in place. Select any text, in any app, press one shortcut, and it comes back with grammar, spelling and tone cleaned up. It runs on your own API key and takes about two seconds.
Homebrew is the recommended path. It installs the signed app to /Applications and clears the quarantine flag, so macOS won't stop it on first launch. If you don't have Homebrew yet, install it first from brew.sh (one command, takes a couple of minutes).
brew install --cask Triple-Whale/tap/polisher
Then open Polisher from Applications. A small wand icon appears in your menu bar. That's the whole app; there is no main window.
Later, upgrade the same way:
brew upgrade --cask polisher
Download Polisher.dmg from the latest GitHub release and drag the app to Applications. If macOS says the app can't be opened, right-click it and choose Open, or clear the flag yourself:
xattr -cr /Applications/Polisher.app
git clone https://github.com/Triple-Whale/Polisher.git
cd Polisher
bash build.sh
cp -r build/Polisher.app /Applications/
Polisher reads the text you selected and types the polished version back over it. macOS only allows that through the Accessibility permission. The first time you press the shortcut, Polisher asks for it.
If you reinstall or rebuild the app, macOS may treat it as a new binary and drop the permission. Toggle Polisher off and on in the Accessibility list to fix it.
Click the wand icon, choose Settings, and open the API Keys tab. Paste your key in the OpenAI field and click Save. A green Key configured appears once it's stored.
You don't need to create your own key. Reach out to Chezi Hoyzer on Slack and he'll set you up with one for Polisher. The Get API Key links in the app are there for people outside the company.
Open the Provider tab. Set Provider to OpenAI and Model to gpt-5.4. The Status line should read API key configured.
The best fast model is still gpt-5.4. Polishing is a short, well-defined task, and you're waiting on the result with your cursor in a text field. 5.4 returns in about a second; newer models think longer and give you the same sentence back two to three seconds later.
Real numbers from one machine, six months of daily use:
| Model | Polishes | Avg time | Cost |
|---|---|---|---|
| gpt-5.4 | 3,808 | 1.8s | $3.09 |
| gpt-5.5 | 51 | 4.3s | $0.23 |
Roughly a tenth of a cent per polish. The cost is not the reason to pick 5.4; the wait is.
It keeps your meaning, tone and line breaks. It fixes spelling, grammar and punctuation and tightens the phrasing. It never adds explanations or quotes around the result, so what lands is ready to send.
The system prompt is editable, and one addition earns its place for anyone who switches between Hebrew and English. Add this to the end of the prompt in the General tab:
If it's gibberish Hebrew which can't be translated to English it's probably
meant to be an English text and I forgot to switch keyboard language, in this
case replace to English. If it's gibberish in English letters it may be that I
meant to type Hebrew letters and forgot to replace keyboard language, in this
case replace to Hebrew and don't translate.
Now typing a whole sentence in the wrong layout is a one-shortcut fix instead of a retype.
Everything lives in one window with seven tabs. Open it from the wand icon › Settings.
The shortcut, launch at login, and the system prompt that tells the model how to polish. The shortcut is fully editable: click the shortcut box, press a new combination, and it takes effect immediately. Reset restores the default prompt.
How many polishes you've run, characters in and out, average response time and what it has cost you, broken down per model. Useful for comparing models honestly before switching.
Your last 20 polishes, searchable. Click an entry to see the original next to the improved text, or use the copy icon to grab the result again. Clear All wipes the list.
A live trace of every step: hotkey received, text captured, request sent, response time and token count, text replaced. Filter by Info, Success, Error or Debug. This is the first place to look when something doesn't work.
Almost always Accessibility. Check System Settings › Privacy & Security › Accessibility and make sure Polisher is on. Then open the Logs tab and press the shortcut: if you see a HotKey line but no Capture line, it's the permission.
macOS uses ⌘ ` to cycle between windows of the front app. Polisher takes over that combination while it runs. If you rely on window cycling, change Polisher's shortcut in the General tab to something else, for example ⌃ ⌥ P.
The key is saved per provider. If you set a key for Claude but the Provider tab points at OpenAI, it counts as missing. Either switch the provider or add the matching key.
A few apps don't expose selected text through Accessibility, mostly Electron apps in odd states and some browser-based editors. Copy the text, paste it into any plain text field, polish it there and paste it back. Check the Logs tab: a Capture line reading 0 chars confirms the app didn't hand over the selection.
Copy the Logs tab (the copy icon at the bottom right) and send it to Chezi Hoyzer on Slack.