[BUG] Delivered mobile push notifications are never revoked once the session has moved on (re: #76900)
Summary
Push notifications delivered to the iOS Claude app are never withdrawn. When a session pushes "Claude has a question" and the question is then answered on another device — or the session simply moves past that point — the notification stays in the iOS notification center indefinitely and has to be swiped away by hand.
This is a re-file of #76900, which had a confirmed repro and carried bug / has repro / platform:ios, but was closed not planned by the stale bot on 2026-09-03 with no human response. The bot's closing message invites a new issue if the problem is still relevant. It is: I hit it daily on 2.1.231.
Steps to reproduce
- Run one or more sessions with mobile push enabled (
inputNeededNotifEnabled: true,agentPushNotifEnabled: true). - Let a session reach a point where it needs input. A push arrives on the iPhone.
- Answer it on the desktop — the session continues and no longer needs anything.
- Look at the phone's lock screen.
Expected
The notification is withdrawn on the other devices once the session no longer needs input, the way multi-device messaging apps revoke a notification after it is acted on elsewhere. APNs supports both mechanisms: apns-collapse-id to coalesce per session, and a Notification Service Extension to remove already-delivered notifications.
Actual
Every notification ever pushed is still on the lock screen. Tapping one opens a session that is long past that question. Running several sessions a day, the lock screen becomes a wall of questions that were all resolved hours ago — and because none of them are actionable, the ones that are stop being noticed. That is the real cost: the notification channel loses its signal.
Two consequences worth separating:
- No revocation — an answered question's notification is never removed.
- No coalescing — a single session that asks several times leaves one notification per question, rather than one live notification per session.
Environment
- Claude Code 2.1.231
- macOS 26.6.2 (25G83), arm64
- iOS Claude app, current App Store build
~/.claude/settings.json:inputNeededNotifEnabled: true,agentPushNotifEnabled: true
Note
Distinct from the "push not delivered" reports (#60208, #50949, #30592) — delivery works fine here; revocation is what is missing.
Minor, and a change since #76900 was filed: neither inputNeededNotifEnabled nor agentPushNotifEnabled appears in the settings reference at https://code.claude.com/docs/en/settings.md any more. #76900 noted only the first as undocumented; both are now absent, while both still have an effect.