[BUG] Claude Desktop (Code tab, macOS 27.0): turn-complete notifications fire only intermittently
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [ ] I am using the latest version of Claude Code (Claude Desktop 2.9939.2 is auto-updated and bundles Claude Code 2.1.281; the latest on npm is 2.1.283)
What's Wrong?
In the Claude Desktop app (Code tab), the macOS notification for a finished turn appears only some of the time.
When a Code-tab turn finishes while another app is frontmost, sometimes a notification appears and sometimes nothing happens at all (no banner, no sound). In one session I checked 8 turns: 5 produced a notification, 3 produced nothing. This has been happening for a while; I'm not sure exactly when it started (macOS 27.0 was installed on 2026-09-15).
Environment
- Claude Desktop 2.9939.2 (bundled Claude Code 2.1.281)
- macOS 27.0 (26A428), Mac Studio (Mac14,14, M2 Ultra)
- 3 displays. Every app, including Claude, is used in macOS full-screen mode, so the Claude window is completely hidden while another app is in front.
- Code tab local session, connected to Remote Control (default)
Notification settings
- Code tab: Task complete notifications = Banners, Permission request / Question = Banners, Draw attention = On, Notification sound = System
- macOS System Settings > Notifications > Claude: allowed, alert style Persistent
- No Focus / Do Not Disturb active
What does not seem to matter
- Time between switching away from Claude and the turn finishing (misses at ~10 s and ~70 s, hits at ~23 s and ~100 s)
- Interrupting with Esc and rewinding/editing the message before resending (one such turn notified, another did not)
- Sending an extra message mid-turn (both outcomes observed)
- Turn length / whether tools were used (both outcomes observed)
- Restarting (still intermittent afterwards)
What Should Happen?
Every turn that finishes while Claude is in the background should post a notification.
Error Messages/Logs
# ~/Library/Logs/Claude/main.log - logged for every turn, both the ones that notified and the ones that did not:
[info] [Stop hook] Query completed for session local_...
[info] [CCD CycleHealth] healthy cycle for local_... (93s, hadFirstResponse=true)
# ~/Library/Logs/Claude/swift.log - the only notification-related line, once per launch:
[Notifications] ... [info] Authorization granted: true
So the app does detect that the turn finished. Neither main.log nor swift.log records individual notification emissions, so I can't tell whether the missing notifications were never emitted or were dropped by macOS.
Steps to Reproduce
- Use every app, including Claude Desktop, in macOS full-screen mode.
- In the Code tab, send a message to a local session and switch to another full-screen app.
- Wait for the turn to finish.
- Repeat several times: a notification appears for some turns but not for others.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.281 (bundled with Claude Desktop 2.9939.2)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
- This is the Claude Desktop app (Code tab), not a terminal.
- Tried: restarting (no change); turning Claude's notification permission off and on again in System Settings (too early to tell; the first turn afterwards did notify).
- Possibly related: #50480, #87100, #73370 (those describe notifications never firing; here they fire only intermittently).
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗