voicedbyme Download

VoicedByMe / Use cases / Agent notifications

Guide · Claude Code · Codex · Updated 23 October 2026

Know when your agent is done, without watching it.

To get notified when Claude Code is done, add a Stop hook, which runs the moment a reply ends; for Codex, turn on [tui] notifications or set a notify program. Either can ring a bell, show a desktop alert, play a sound, or say what happened out loud. This guide shows each, with settings you can paste.

Download for Windows Download for Mac Free for a day · then $30 once

Samples made offline with ready-made voices. All of them are AI-generated.

The short answer

Which setting does what.

Built-in alertWhen a reply is doneWhen it needs you
Claude CodeA desktop notification in Ghostty, Kitty and iTerm2; preferredNotifChannel for a bell elsewhereStop hookNotification hook (permission_prompt), PermissionRequest hook
Codex[tui] notifications: a desktop notification or bell, by default only when the terminal isn't in frontnotify program (agent-turn-complete), or a Stop hookPermissionRequest hook

As of October 2026: Claude Code 2.1 and Codex CLI, from each tool's documentation.

Claude Code

A bell, an alert or a sound.

The built-in alert

Claude Code sends a desktop notification when it finishes or waits for permission and you seem to be away, but only in Ghostty, Kitty and iTerm2. In Windows Terminal, VS Code, Warp and the rest, ask for the terminal bell instead:

// ~/.claude/settings.json
{
  "preferredNotifChannel": "terminal_bell"
}

Running inside tmux? Add set -g allow-passthrough on to ~/.tmux.conf, or the alert never reaches your terminal.

A sound the moment it's done

A Stop hook runs as soon as Claude finishes a reply. Pick the line for your system:

// ~/.claude/settings.json
{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }] }
    ]
  }
}

// Windows:
"command": "powershell -NoProfile -Command \"(New-Object Media.SoundPlayer 'C:/Windows/Media/chimes.wav').PlaySync()\""

// Linux:
"command": "paplay /usr/share/sounds/freedesktop/stereo/complete.oga"

Why the Notification hook feels late

The Notification hook's idle_prompt fires about a minute after Claude finished, if you haven't typed since. That's a reminder, not a "done" signal. Use Stop for done, and Notification with the permission_prompt matcher for "needs your OK", which fires after about six seconds of waiting.

Codex

Notifications, and the notify program.

The built-in alert

Codex can send a desktop notification (OSC 9, in terminals that support it) or ring the bell. By default it only does so when the terminal isn't in front:

# ~/.codex/config.toml
[tui]
notifications = true
notification_method = "bel"          # or "osc9" for a desktop notification
notification_condition = "always"    # default: "unfocused"

Run anything when a turn ends

notify runs a program of yours after every turn, with a JSON event as its last argument. A few lines of Python play a sound:

# ~/.codex/config.toml (at the very top, above every [table])
notify = ["python3", "/Users/you/.codex/notify.py"]

# ~/.codex/notify.py
import json, subprocess, sys
event = json.loads(sys.argv[-1])
if event.get("type") == "agent-turn-complete":
    subprocess.run(["afplay", "/System/Library/Sounds/Glass.aiff"])

Three things trip people up. notify must come before any [table] header, or TOML files it under that table. It only works in your user ~/.codex/config.toml, not a project's. And Codex runs one notify program, so a second one replaces the first.

Beyond the ding

Hear what happened.

A chime says something finished. With two or three agents running, it doesn't say which one, whether the tests passed, or what command is waiting for your OK, so you still walk back to the screen to find out.

You can script that yourself: have the hook pass the reply to the Mac's say command or Windows' speech engine. It works, in the system's voice, and you keep the scripts up to date as the hook formats change.

Or connect VoicedByMe once. It sets up the hooks for Claude Code, Codex, Cursor and Hermes Agent, and reads the reply, the permission request with its actual command, or the question, in a natural voice or your own, offline. Each agent can have its own voice, and it keeps quiet at night and while you're already looking at the agent.

Compared

The four options, side by side.

Says which agentSays what happenedWorks across the roomSetupCost
A spoken notification (VoicedByMe)Yes, by voiceYes: the reply, command or questionYesOne click$30 once
A sound from a hookIf each agent gets its own soundNoYesEdit settings by handFree
A desktop notificationYes, in the titleA short lineNo, you have to see itBuilt in, or a hookFree
The terminal bellNoNoBarelyOne settingFree

Away from your desk? A hook can also send a push to your phone through a service like ntfy, for example with curl -d "Claude Code is done" ntfy.sh/your-topic.

Questions

How do I get Claude Code to play a sound when it's done?

Add a Stop hook to ~/.claude/settings.json that plays a sound: afplay on a Mac, paplay on Linux, or PowerShell's Media.SoundPlayer on Windows. It runs the moment Claude finishes a reply.

Why does my Claude Code notification come a minute late?

The Notification hook's idle_prompt fires about 60 seconds after Claude finished, if you haven't typed. Use a Stop hook for an immediate "done".

How do I get notified when Codex is done?

Add [tui] with notifications = true to ~/.codex/config.toml. Set notification_condition = "always" to be notified even while the terminal is in front, or a notify program to run anything you like.

Why isn't Codex notify working?

Check that notify is above every [table] header, that it's in ~/.codex/config.toml rather than a project's config, and that nothing else replaced it. Then run the program by hand with a sample JSON argument.

Can I get notifications on my phone?

Yes, with a hook that sends a push through a service like ntfy or Pushover. Hooks run on the computer where the agent runs, so this works over SSH too.

Can the notification say what Claude Code did?

Yes. VoicedByMe connects Claude Code, Codex, Cursor and Hermes Agent with one click and reads the reply, the permission request or the question aloud, in a natural voice or your own, offline.

Do notifications use tokens?

No. Hooks and notify programs run on your computer with text the agent has already written, so a bell, an alert or a spoken reply doesn't cost tokens.

For Windows 10 and 11, and Macs with Apple silicon

Hear your agents, don't watch them.

$30once. Launch price for the first 50 customers, then $50.
One computer. No subscription.

Download for Windows Download for Mac Also for Windows 10 and 11 Also for Macs with Apple silicon

The full app, free for 24 hours. Purchases aren't refundable, so please try it first.