Repeated OS notification with raw SessionStart hook JSON (sender "Terminal") for sessions with no transcript file
Environment
- macOS 15.7.9 (24G830), Intel (x86_64)
- Claude Desktop app version: 1.37937.0
- Embedded claude-code CLI version: 2.1.241 (also reproduced on 2.1.237, see timeline below)
Symptom
On (seemingly) every SessionStart hook invocation (matcher: "startup"), a native macOS notification appears with sender displayed as "Terminal", whose body is the raw hook input JSON, e.g.:
{"session_id":"...","transcript_path":"/Users/.../.claude/projects/-Users-.../<id>.jsonl","cwd":"/Users/...","hook_event_name":"SessionStart","source":"startup"}
This is clearly internal hook-invocation metadata, not something my own SessionStart hook script prints (I write a properly-titled terminal-notifier notification myself; this raw-JSON notification is separate and unrelated to that).
Key observation: these sessions have no transcript file. For every session_id shown in one of these notifications, ~/.claude/projects/-Users-.../<session_id>.jsonl does not exist. This strongly suggests the notification fires for lightweight/ephemeral session contexts that trigger the SessionStart hook but never become a real interactive session.
Multiplicity: when several Claude Code sessions/windows restore simultaneously (e.g. after a Mac reboot brings back multiple previously-open windows), one such notification appears per session_id — 2, 3, sometimes 4 stacked in Notification Center from a single reboot.
Onset timing — ruled out local software update as the cause. I initially suspected an app/CLI auto-update, but checked Claude Desktop's own ~/Library/Logs/Claude/main.log:
- The embedded claude-code CLI was on version
2.1.237continuously from2026-08-21 14:42through2026-08-25 23:22(i.e. it was already on this version, unchanged, when the notification first appeared on the evening of 2026-08-25) — it only updated to2.1.241the next morning (2026-08-26 07:53), well after the symptom started. - No Claude Desktop (Electron shell) update is logged in
main.logbetween 2026-08-21 and 2026-08-26 07:41 either. - So the notification onset does not correlate with any locally-installed-version change I could find.
Settings tried (none suppressed it):
agentPushNotifEnabled: falsepreferredNotifChannel: "notifications_disabled"remoteControlAtStartup: falseenv.CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS: "1"(found viastringson the CLI binary; name suggests it's scoped to permission-prompt notify hooks specifically, so may simply not be the right lever)
Request
Either suppress this notification for these ephemeral/no-transcript session contexts, or expose a documented settings.json key to disable it. Right now there's no way for a user to turn it off, and it fires on every session start (sometimes multiple times per restart).
Happy to provide more diagnostics if useful.