A Claude Code Stop hook that uses macOS say with the Indian English voice Aman to deliver a slightly-rude sign-off after every response.
A few of the 28 phrases:
"All done. Now stop pestering me."
"Finished. I need a vacation. From you."
"Done. Did you even read the question before sending it?"
"Complete. Touch grass. Drink water. Leave me alone."
All sass, no malice.
- macOS (uses the built-in
saycommand) - Claude Code installed
jqinstalled (brew install jq)- The Aman voice. Most modern macOS already has it. If not: System Settings -> Accessibility -> Spoken Content -> System Voice -> Manage Voices -> English (India) -> Aman
Verify with:
say -v '?' | grep '^Aman 'curl -fsSL https://raw.githubusercontent.com/pramirez140/rude-claude/main/install.sh | bashThe installer:
- Copies
say-done.shto~/.claude/hooks/andchmod +x - Backs up
~/.claude/settings.jsonand merges in theStophook (idempotent — re-running is safe) - Plays one phrase to confirm it works
After install, restart Claude Code or open /hooks once so the watcher reloads the config. The hook is async: true, so it never delays your turns.
git clone https://github.com/pramirez140/rude-claude.git
cd rude-claude
./install.shEdit the phrase list in place:
$EDITOR ~/.claude/hooks/say-done.shChange the voice (full list: say -v '?'):
sed -i '' 's/-v Aman/-v Daniel/' ~/.claude/hooks/say-done.shrm ~/.claude/hooks/say-done.shThen remove the matching Stop block from ~/.claude/settings.json. To strip ALL Stop hooks (only do this if you have no others):
jq 'del(.hooks.Stop)' ~/.claude/settings.json > /tmp/s.json && mv /tmp/s.json ~/.claude/settings.jsonSometimes you want Claude to mock you a little. Now he does.