How to Get a Desktop Notification When Claude Code Finishes
Engineering
How to Get a Desktop Notification When Claude Code Finishes
You send Claude Code off on a task, tab over to Slack, and… it finished ninety seconds ago and has been sitting there waiting for you. Or worse, it hit a permission prompt and stalled. The fix is a small hook that fires a native desktop notification the moment Claude finishes a turn — or needs your input.
The two events that matter
Claude Code fires a hook on:
Stop— it finished responding (your turn).Notification— it needs you: a permission prompt, or it's idle waiting for input. The payload carries amessageand anotification_typelikepermission_promptoridle_prompt.
Wire a notifier to both and you'll never stare at a finished-but-silent session again.
The fix: a free plugin (one command)
We built the notifier as a free, standalone, MIT plugin — Mwah Notify. No account, no network, no phone-home; it reads the event and pops a native notice that names the project. Install it from the marketplace:
/plugin marketplace add clearly-sh/mwah-notify
/plugin install mwah-notify@mwah
Restart your Claude Code sessions and you'll get "Claude Code — done ✅ · your-project: your turn" on finish, and the actual prompt text when it needs you. Silence the sound anytime with MWAH_NOTIFY_SOUND=off.
Prefer to wire it by hand?
Drop a small script somewhere stable and point two hooks at it in ~/.claude/settings.json:
{
"hooks": {
"Stop": [ { "hooks": [ { "type": "command", "command": "node ~/.claude/notify.mjs" } ] } ],
"Notification": [ { "matcher": "", "hooks": [ { "type": "command", "command": "node ~/.claude/notify.mjs" } ] } ]
}
}
The script reads the event JSON on stdin (it gets hook_event_name, cwd, and for notifications the message) and shells out to osascript on macOS or notify-send on Linux. Ours is ~50 lines and MIT — read or copy it from the repo. New to hooks? The complete guide explains the whole model.
One notification per session doesn't scale
A notification is perfect for one or two sessions. But if you're running five in parallel, a stream of identical "done" pings blurs together — which one finished? which one's stuck waiting? You're back to hunting terminals.
That's where Mwah takes over: instead of notifications, it floats every live Claude Code session on your desktop as a little robot flagged ALIVE or STUCK — so you see the whole board at a glance, feed the ones that nailed it, and retire the stuck ones with a click. The notification tells you something happened; Mwah shows you what.
Related: Claude Code hooks: the complete guide · Run multiple Claude Code sessions
Keep reading
View all dispatches →Shopify AI Agent Tools: What Your Agents Can Actually Do in Your Store
Clearly now ships Shopify store tools your AI agents can call — browse the catalog, read orders, roll up revenue, edit products, and attach generated images — over MCP and the beehaven CLI, with a dry-run preview on every write. Here are the tools, with example commands.
How to Manage Your Shopify Store with AI Agents
AI agents can now do the work of running a Shopify store — writing descriptions, generating product images, answering customers, updating the catalog. Here's how agent-run commerce works, and how to set it up.
Claude Code for Shopify: Run Your Store from Your Terminal
If you already run your codebase with Claude Code, the same agents can run your Shopify store — edit the catalog, generate product images, answer customers — with a connector and the right guardrails. Here's the setup.