Repeated OS notification with raw SessionStart hook JSON (sender "Terminal") for sessions with no transcript file

Status Open
Reported on v2.1.241
Maintainer reply None cached
Activity 0 comments · opened Aug 26, 2026

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.237 continuously from 2026-08-21 14:42 through 2026-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 to 2.1.241 the next morning (2026-08-26 07:53), well after the symptom started.
  • No Claude Desktop (Electron shell) update is logged in main.log between 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: false
  • preferredNotifChannel: "notifications_disabled"
  • remoteControlAtStartup: false
  • env.CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS: "1" (found via strings on 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.

View original on GitHub ↗