[BUG] Claude iOS app silently drops MCP approval prompts raised
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
On the Claude consumer app for iOS, with a custom remote MCP connector (HTTP transport, OAuth) and per-tool approval enabled: when the model requests approval for a tool call while the app is backgrounded — typically after a long-running earlier call (e.g. a slow IMAP search) completes and the model then calls a second tool needing approval (e.g. fetching an email attachment) — an iOS push notification fires saying input is needed, but tapping it returns to a chat with no approval dialog. The pending tool call is orphaned: it never re-prompts and never resolves. Because approval is client-side and keyed by tool name at the account level (independent of the server), this reproduces across different MCP servers, confirming it is not a server-side issue
What Should Happen?
On returning to the foreground (or tapping the notification), any pending approval should be presented and actionable. Approvals should survive backgrounding/app suspension; the push notification should deep-link to the pending approval; and a lapsed/timed-out approval should be distinguishable in the tool result from an explicit user denial.
Error Messages/Logs
Steps to Reproduce
- Add a remote/custom MCP connector (HTTP, any FastMCP server) in the Claude iOS app with per-tool approval on.
- Prompt an agentic task that first calls a long-running tool (IMAP search, tens of seconds), then a second tool requiring approval (fetch attachment).
- Background the app / lock the phone while the long call is in flight.
- Receive the iOS push notification that approval is needed.
- Tap it (or reopen the app) → no approval dialog appears; the call never resolves.
Claude Model
Not sure / Multiple models
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.0.0
Platform
Other
Operating System
Other
Terminal/Shell
Other
Additional Information
Surface is the Claude iOS consumer app (App Store build), not Claude Code — so Terminal/Shell and Claude Code Version are N/A.
- App version 1.260716.0 (29525055992)
- iOS 26.5.2 (23F84)
- Plan: Pro
- MCP transport: remote HTTP custom connector (FastMCP), OAuth
- Model: all.
Related but distinct: #29144 (Claude Code on iOS, no approve path) and #38955 (Dispatch pins approvals to the originating device). Note there is no in-app bug-report path (cf. #60780), which is why this is filed here.