Make Claude Code Make Noise
The tiny hook that stops Claude Code from waiting silently while your attention is in another tab eating paste.
Claude Code is very good at many things. Reading your codebase. Planning a change. Editing files without needing a motivational quote about craftsmanship. But one thing it is absolutely world-class at is sitting there, patiently, silently, waiting for you to answer a question while you are somewhere else living an entire parallel life.
You think it is still working. It is not still working.
It is looking at you.
Not with eyes, obviously. With a terminal prompt. Which is worse, because a terminal prompt has the emotional range of a tax form and the urgency of a microwave that refuses to beep.
This is how you lose minutes. Then hours. Then, if you are truly committed to the bit, a full afternoon to the sacred ritual of tab archaeology:
"Wait, why has nothing changed?"
"Oh."
"It asked me whether to install a package forty-three minutes ago."
"Excellent. Great. Love that for me."
Silence is elegant in a meditation app. Silence is not elegant when your coding agent has stopped mid-flight and is waiting for you to press the big human button. At that point silence is not minimalism. Silence is sabotage with good typography.
So make it ding.
Claude Code supports hooks, and hooks let you run commands when certain events happen. On macOS, the laziest possible useful version is to play one system sound when Claude stops, and another when it sends a notification. No dashboard. No ceremony. No productivity framework named after a weather pattern. Just a tiny audible poke in the ribs from your computer.
The file you want is your personal Claude Code settings file:
~/.claude/settings.json
That applies to all Claude Code projects on your Mac, which is what you want for this. You do not want to remember to set up the beep separately in every folder like some kind of notification accountant.
If you have not edited a terminal config file before, here is the low-drama version.
Open Terminal and run:
mkdir -p ~/.claude
That makes sure the Claude settings folder exists. Then open the settings file in nano, a beginner-friendly terminal text editor:
nano ~/.claude/settings.json
If the file is empty, paste this whole thing in. If it already has settings in it, you need to merge the "hooks" section into the existing JSON instead of pasting a second separate object underneath it. JSON is fussy. It wants one top-level object, no trailing commas, and absolutely no sympathy.
{
"hooks": {
"Stop": [{ "matcher": "", "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }] }],
"Notification": [{ "matcher": "", "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Ping.aiff" }] }]
}
}
In nano, press Control + O to save, then press Enter to confirm the filename. Press Control + X to exit.
Restart Claude Code after that if the sound does not start working immediately. Sometimes config watchers are awake and noble. Sometimes they are taking a small spiritual lunch break.
That's it. You have now upgraded from "my agent may or may not be blocked in a terminal I have emotionally abandoned" to "my agent makes a little noise when it needs me."
This is not deep. This is not profound. This will not appear in a keynote under the phrase "agentic workflow orchestration." But it does something many grand systems fail to do: it returns your attention at the exact moment your attention is required.
The real productivity gain is not that the sound itself saves time. It is that you stop paying the anxiety tax. You no longer need to keep checking whether Claude Code is done, stuck, confused, lonely, or contemplating a dependency upgrade with the seriousness of a constitutional crisis. You can go read something, answer a message, make coffee, stare into the middle distance, or open the wrong app and forget why.
Then: ping.
Your code assistant requires tribute.
Fine. That is a dramatic way to describe answering "yes" to a terminal prompt, but the point stands.
Pick whatever sound you want. Glass. Ping. Funk. Submarine. That weird macOS one that sounds like a robot swallowing a coin. The point is not the specific noise. The point is that waiting silently is a bad default for a tool that alternates between doing useful work and needing human steering.
If Claude Code is part of your daily workflow, give it a voice. Not a charming voice. Not a voice with lore. Just a small, stupid sound that says: come back, the machine needs an adult.
You will feel ridiculous for about four seconds.
Then it will save you time.
Then you will become unbearable and tell everyone else to set it up too.
Welcome.
Enjoyed this post?
Get future posts by email. No spam, unsubscribe any time.