Notification hook (and native "Code permission requests" push) never fires in Desktop app's "Code" button sessions

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 5, 2026

Environment: Claude Code v2.1.215, Windows 11, Claude Desktop app, WSL2 available.

Summary: A Notification hook configured in ~/.claude/settings.json, and separately Anthropic's own native "Code permission requests" push notification (enabled in Desktop Settings + Claude iOS app + iOS-level notification permissions), both fail to fire for permission-approval prompts when a Code session is run via the Claude Desktop app's "Code" button. The identical Notification hook config fires correctly and delivers when the same prompt occurs in a terminal-launched claude CLI session instead.

Steps to reproduce:

  1. Add a Notification hook to ~/.claude/settings.json:

``json
"Notification": [
{ "hooks": [ { "type": "command", "command": "<any command that logs to a file>", "shell": "bash" } ] }
]
``

  1. Also enable Settings -> Notifications -> "Code permission requests" in Claude Desktop, and enable the same in the Claude iOS app's Notifications screen.
  2. Open a Code session via the Desktop app's "Code" button (not a terminal).
  3. Ask Claude to perform an action requiring tool-permission approval (e.g. write a file).
  4. While the approval dialog is showing (tested both focused and backgrounded), observe: no hook fires (no statusMessage, no side effect from the hook command), and no native push notification arrives on the phone (the pending approval is only visible by manually opening the Claude iOS app to the Code tab).
  5. Repeat the same prompt in a terminal-launched claude session in the same project folder -- the same hook fires correctly and the side effect (e.g. a logged/sent message) happens as expected.

Expected: The Notification hook (and/or the native push feature) should fire consistently regardless of whether the Code session is hosted in the Desktop app or a terminal.

Actual: Neither fires in the Desktop-app-hosted session; both fire/work as expected in a terminal session.

View original on GitHub ↗