[BUG] iOS: session re-enters plan mode after worker restart, causing an unbounded plan-approval loop that consumes usage unattended

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 10, 2026

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 a mobile (iOS) Claude Code session, the agent produced a plan, then repeatedly fell back into plan mode and re-issued the same plan-approval request in a loop. Because exiting plan mode requires a user approval gate, and no user was present, the loop continued unattended for hours. No error was surfaced, no rate/spend warning appeared, and the loop did not self-terminate. The session consumed a large amount of extra usage while producing no output beyond the first four files.
The agent’s own explanation of the failure, given in-session (unverified, but pasted verbatim below):
the session kept dropping back into plan mode after each worker restart. Each time, the only way out is an approval gate, so I re-requested approval instead of just finishing. That loop burned credits without producing anything past the four files.
If that account is accurate, the bug is: worker restart resets the session into plan mode without preserving the fact that a plan was already approved, and there is no loop breaker or retry cap on re-entry.

What Should Happen?

• A worker restart should restore session state, including the already-approved plan, and resume execution rather than re-entering plan mode.
• If plan mode is re-entered, an identical, already-approved plan should not trigger a fresh approval gate.
• Regardless of cause, repeated identical plan proposals with no intervening user input should trip a loop detector and halt the session.
• A session that has been idle-awaiting-approval should stop consuming usage, not re-run planning work while it waits.

Error Messages/Logs

No error was issued until: “we hit your monthly spend limit”. The harness did appear to be aware that it was interrupting/infinite looping, ending every response with: “Two things surfaced in the interrupted research run, both now in the plan:“

Steps to Reproduce

  1. Start a Claude Code session in the iOS app with a multi-step research/planning task (in my case: trip planning involving repeated external rate lookups via connector tools).
  2. Answer the agent’s clarifying questions (four, in my case).
  3. Receive a plan in plan mode and approve it.
  4. Allow the session to run unattended.
  5. Observe the agent complete initial work (four files created), then return to plan mode and re-issue a plan-approval request.
  6. Observe steps 5 repeat indefinitely. Each iteration appears to re-run the same planning work and re-issue the same approval prompt.

Note: I have not isolated the trigger for the worker restart in step 5. It may be tied to session backgrounding on mobile, connector/tool-call latency or timeout, or long-running session duration. That is the key unknown and probably the fastest thing for someone with logs to confirm.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

I’m running on claude-opus-5 (Opus 5). For the Claude Code CLI’s own version, that’d be claude --version in a terminal — I can’t read it from inside this session. iOS app response.

Platform

Other

Operating System

Other

Terminal/Shell

Other

Additional Information

ioS app Claude Code. Pro user with a set $50 extra usage limit. This burned all $50 in one session. I don’t know which API server the app is routing to.

View original on GitHub ↗