claude-code - 💡(How to fix) Fix PushNotification tool reports success but no banner is delivered (macOS desktop nor iOS push)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

PushNotification tool calls return Terminal notification sent. Mobile push requested. but no notification is actually delivered — neither as a macOS banner on the laptop nor as an iOS push on the paired phone. The desktop banner path has never worked in this session; the mobile path was tested ~10 times after running /remote-control and pairing succeeded.

Remote Control message-routing does work (typing in the Claude mobile app lands in the CLI session). Only the push-notification leg is broken.

Error Message

  1. Confirm whether PushNotification on macOS 26.x is going through the legacy NSUserNotificationCenter API (deprecated on 26.0+) vs UNUserNotificationCenter. The deprecation may be silently no-op'ing the call without surfacing an error.

Root Cause

PushNotification tool calls return Terminal notification sent. Mobile push requested. but no notification is actually delivered — neither as a macOS banner on the laptop nor as an iOS push on the paired phone. The desktop banner path has never worked in this session; the mobile path was tested ~10 times after running /remote-control and pairing succeeded.

Remote Control message-routing does work (typing in the Claude mobile app lands in the CLI session). Only the push-notification leg is broken.

RAW_BUFFERClick to expand / collapse

Summary

PushNotification tool calls return Terminal notification sent. Mobile push requested. but no notification is actually delivered — neither as a macOS banner on the laptop nor as an iOS push on the paired phone. The desktop banner path has never worked in this session; the mobile path was tested ~10 times after running /remote-control and pairing succeeded.

Remote Control message-routing does work (typing in the Claude mobile app lands in the CLI session). Only the push-notification leg is broken.

Environment

  • Claude Code: 2.1.143
  • macOS: 26.5 (build 25F71)
  • Terminal: Apple Terminal.app 470.2
  • Install: standalone .app dragged to /Applications; running via claude CLI in Terminal
  • Mobile: iOS Claude app, signed in with same account, push permission ON, no Focus mode active

Reproduction

  1. claude in Terminal.app
  2. /remote-control — pairing reports Connecting… then succeeds (phone shows the session)
  3. Trigger any PushNotification tool call from the model, with status: "proactive" and a short message
  4. Tool returns one of:
    • Terminal notification sent. Mobile push requested. (when terminal is unfocused)
    • Not sent — terminal has focus. Terminal + mobile suppressed. (when terminal is focused — expected)

Expected

When the tool returns Terminal notification sent. Mobile push requested., a macOS banner appears on the laptop and an APNS push appears on the paired phone (banner / lockscreen / Notification Center).

Actual

  • macOS laptop: no banner appears, ever. "Claude Code" does NOT appear in System Settings → Notifications app list (so the OS-level permission prompt was never triggered, suggesting the notification request never actually reaches NSUserNotificationCenter / UNUserNotificationCenter).
  • iOS phone: no banner, no lock-screen, no Notification Center entry. Confirmed by locking the phone before the test (so foreground-suppression isn't the cause), confirming notification permissions are ON for the Claude app, confirming no Focus mode is active, and confirming Show Previews is set to Always.

Sequence run (8 successful tool returns, 0 user-visible notifications)

Test pings #3 through #10 were fired. Pings that reported Mobile push requested (i.e. after /remote-control pairing): #7, #8, #9, #10. None delivered to either device. Test #9 was fired with phone locked to rule out foreground-suppression.

Likely impact

This blocks any workflow that uses cron jobs (CronCreate) or /loop to surface findings while the user is away from the terminal — the whole point of PushNotification is to alert the user when they're not looking, and that path is silently failing.

Suggested triage

  1. Confirm whether PushNotification on macOS 26.x is going through the legacy NSUserNotificationCenter API (deprecated on 26.0+) vs UNUserNotificationCenter. The deprecation may be silently no-op'ing the call without surfacing an error.
  2. For mobile, log whether the APNS push request actually reaches Anthropic's push relay after Remote Control pairs — there may be a session→device-token binding gap.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING