macOS Desktop App: permission requests trigger OS notifications but task completion does not
Resolved 💬 3 comments Opened Apr 18, 2026 by RemingtonWilcox Closed Apr 18, 2026
Summary
Claude Desktop app on macOS: permission-prompt events fire a native OS notification reliably. Task completion (Stop event) never does — even with the in-app Response notifications toggle enabled.
Environment: Claude Desktop 1.3109.0, macOS 15.7.5 (24G624).
Repro
- Notifications allowed for
Claude.appin System Settings → Notifications. - Claude Desktop → Settings → Notifications → Response notifications = on.
- Prompt that triggers a permission prompt, window unfocused → banner ✅
- Prompt that runs to completion (no permission needed), window unfocused → no banner ❌
Same window state, same app, same user. Only the event type differs.
Ruled out before filing
- macOS permission. Banners fire fine for permission prompts — the OS-level permission path works.
- Window-visibility suppression. Same reason; permission prompts punch through in the exact same window state.
- Local hook interference. Disabled, one at a time with a full quit+reopen of Claude.app between each:
Stop/Notificationhooks in~/.claude/settings.json- Codex CLI
notifyin~/.codex/config.toml - Ghostty
notify-on-command-finish - zsh command-finish hook
ralph-looppluginStophook
Symptom persists unchanged with everything disabled.
- Workaround attempt. Wired a
Notificationhook matchingidle_prompttoterminal-notifier -sender com.anthropic.claudefordesktop. The hook fires — confirmed via logfile written from the helper script — but the banner never lands in Notification Center (confirmed viaterminal-notifier -list ALL, where Claude-sender entries are absent while unsigned control entries are present). Unsigned fallbacks (osascript, plain terminal-notifier) do deliver, but branded as "Script Editor" / "terminal-notifier," which isn't usable.
Possibly-relevant clue
The help text under the in-app Response notifications toggle references "Claude Code on the web" — not local desktop Code sessions. May suggest the desktop completion path isn't wired to that toggle at all, which would explain why flipping it has no observable effect.
Related (distinct)
- #9878 — broader ask, not desktop-specific
- #20525 — scoped to
run_in_backgroundtasks - #42336 —
PostToolUsehooks not firing in desktop app (may share root cause with the workaround attempt above)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗