[BUG] Mobile push notifications buffered until Remote Control toggle is cycled (sessions started with remoteControlAtStartup)

Resolved 💬 1 comment Opened May 3, 2026 by cmthoman-dev Closed Jun 2, 2026

Summary

With Remote Control auto-starting via remoteControlAtStartup: true, mobile push notifications fire from the harness ("Mobile push requested") but never reach the phone. They sit buffered indefinitely. The moment I open /config and cycle the Enable Remote Control for all sessions toggle (e.g. on → off → on, or off → default → on), every queued push is delivered in a batch.

Environment

  • Claude Code v2.1.126
  • Linux (WSL2), Ubuntu
  • claude.ai login (full-scope, not API key)
  • Claude mobile app installed and signed into the same account
  • ~/.claude/settings.json includes:
  • "remoteControlAtStartup": true
  • "agentPushNotifEnabled": true
  • "preferredNotifChannel": "terminal_bell"

Repro

  1. Settings.json contains remoteControlAtStartup: true. Quit any prior claude processes. Phone has the Claude app installed and signed in.
  2. Start a fresh interactive claude session in a project directory.
  3. Trigger a PushNotification (e.g. ask Claude to send a test push, with terminal unfocused so the harness doesn't suppress).
  4. Harness reports Terminal notification sent. Mobile push requested.

Phone receives nothing.

  1. Run /config, toggle Enable Remote Control for all sessions off then back on (or any cycle that ends in "on").
  2. All previously-queued pushes arrive on the phone immediately.

Expected

Push delivered within seconds of step 4, without needing any toggle interaction.

Hypothesis

When Remote Control auto-starts via the settings flag, the mobile push-token registration step appears to be skipped (or runs before the app has a chance to register with the session). It only fires on a runtime toggle transition. The "No mobile registered" warning the docs reference is likely visible in step 4 but clears after step 5.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗