iOS app (Chat): backgrounded turn hangs forever on a custom-connector tool permission prompt instead of pushing the approval request

Open 💬 2 comments Opened Jun 20, 2026 by nevyn

What's wrong

In the iOS Claude app, in Chat (not Cowork/Code), a turn that calls a custom connector (remote MCP) tool that hasn't been approved yet will hang forever if the app is backgrounded while the turn is processing.

The permission prompt for the tool is raised but never surfaced — the app isn't in the foreground to show it — and nothing notifies me. The turn just sits there indefinitely. The only recovery is to return to the app, stop the turn, and retry; on retry the approval prompt finally appears and the call works.

Steps to reproduce

  1. In the iOS app, add a custom connector (remote MCP) that exposes a tool you haven't approved yet.
  2. In Chat, send a message whose turn will call that tool.
  3. Background the app (switch away / lock the phone) while the turn is still processing.
  4. The turn calls the connector tool → a permission prompt is raised but not shown.
  5. The turn hangs forever — no timeout, no notification.
  6. Reopen the app, stop, retry → the approval prompt now appears and approving it succeeds.

Expected

A pending tool-permission prompt in a backgrounded Chat turn should send a push notification carrying the approval request (push being the natural mobile affordance), so I can approve it without having to guess that the turn is stuck. At minimum, surface some signal instead of blocking silently and indefinitely.

Actual

Hangs forever with no signal. Recovery requires noticing the stall, returning to the app, stopping, and retrying.

Environment

  • Claude iOS app — Chat surface
  • Custom connector (remote MCP, OAuth-authenticated)

Related

  • #64271 — same underlying failure (a backgrounded session stalls forever on a permission prompt) but framed for fully-unattended CLI claude --bg automation that wants a non-interactive reply. This issue is the interactive mobile case, where a user is present and reachable via push.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗