Claude Code notifications not working on Mac: how to fix them
Most missing Claude Code notifications come from one of three causes: you were still typing, your terminal doesn't show them (only Ghostty, Kitty and iTerm2 get desktop notifications), or macOS is blocking the app that posts them. Start with the table below.
Get Ambient Free for macOS 14 and later.
Find your symptom
| What you see | Likely cause | Fix |
|---|---|---|
| Nothing in VS Code, Cursor, Warp or other terminals | No built-in desktop notification there | Use a hook or the terminal bell |
| Nothing in Apple Terminal | No desktop notification, and at most a silent bell | Use a hook, or the bell with Audible bell on |
| Nothing in iTerm2 | Alerts are off by default | Turn them on in iTerm2 |
| Nothing in Ghostty or Kitty | macOS is blocking the app | Allow notifications for it |
| Nothing inside tmux | tmux swallows the alert | Add allow-passthrough |
An osascript hook does nothing | Script Editor has no permission | Allow notifications for Script Editor |
| Alerts arrive late, or not while you type | The alert waits until you look away | Use Stop and PermissionRequest hooks |
Check the timing first
Claude Code only alerts you when you appear to be away, and that's based on typing. A permission alert waits until you haven't typed for about six seconds, and each keystroke pushes it back. An idle alert comes about 60 seconds after Claude finishes, if you haven't typed since. For an alert the moment something happens, use a PermissionRequest or Stop hook. The permission guide shows how.
Use a terminal that shows them
Ghostty, Kitty and iTerm2 get a desktop notification. Other terminals get nothing by default, or in Apple Terminal, at most a silent bell. To send the bell in any terminal, add this to ~/.claude/settings.json:
{
"preferredNotifChannel": "terminal_bell"
}
In Apple Terminal, also turn on Audible bell under Settings → Profiles → Advanced. If this setting is notifications_disabled, change it back: that turns off the alert, though hooks still run.
Turn on alerts in iTerm2
Go to Settings → Profiles → Terminal and check Notification Center Alerts. Then click Filter Alerts and enable Send escape sequence-generated alerts.
Allow notifications in macOS
Open System Settings → Notifications, find your terminal app and turn on Allow Notifications. Also check that Focus or Do Not Disturb isn't hiding them.
Let them through tmux
Add set -g allow-passthrough on to ~/.tmux.conf and run tmux source-file ~/.tmux.conf. The tmux setup guide has the full config.
Fix a silent osascript hook
osascript posts notifications through Script Editor. Without permission it fails silently, and macOS doesn't ask. Run this once so Script Editor appears in your settings:
osascript -e 'display notification "test"'
Nothing shows yet. Open System Settings → Notifications, find Script Editor and turn on Allow Notifications, then run the command again.
Check that the hook loaded
Type /hooks at the Claude Code prompt and look for your hook under its event. If it's missing, check that ~/.claude/settings.json is valid JSON, and that the new event sits beside your existing events inside the single hooks object.
Or skip the setup
Ambient installs its own hooks and shows every session at the notch, in any terminal or editor, with no notification settings to line up. Click the island to go back to the exact tab or pane.
Stop babysitting terminals.
Free for macOS 14 and later. Works with Claude Code, Codex and Gemini CLI.
Get AmbientCommon questions
Why do Claude Code notifications not show up on my Mac?
Usually because you were still typing, your terminal doesn't show desktop notifications, or macOS is blocking the app. Only Ghostty, Kitty and iTerm2 get desktop notifications by default.
Why don't I get notifications in the VS Code terminal?
Claude Code doesn't send a desktop notification there. Use a Notification hook, or set preferredNotifChannel to terminal_bell.
Why does my osascript notification hook do nothing?
osascript posts through Script Editor, and it fails silently without permission. Run it once, then allow Script Editor in System Settings → Notifications.
Sources
- Get a terminal bell or notification, Claude Code docs
- Notification hook, Claude Code docs
- Automate actions with hooks, Claude Code docs
- Debug your configuration, Claude Code docs
More guides: Claude Code notifications on Mac · Claude Code permission notifications