ExitPlanMode incorrectly returns false user approval

Resolved 💬 3 comments Opened Aug 3, 2025 by kristianinglis Closed Aug 15, 2025

Bug Description
ExitPlanMode Bug Report

Issue: ExitPlanMode tool returns false approval without user interaction

Behavior:

  1. Call ExitPlanMode with a plan
  2. Tool immediately returns "User has approved your plan"
  3. User never sees or approves the plan
  4. Assistant remains in plan mode (system reminders confirm this)

Impact: Cannot properly exit plan mode or get user approval for plans

Environment:

  • Claude Code CLI
  • Custom hooks installed (verified not interfering - only logging tool

usage)

Evidence:

  • ExitPlanMode called twice, both times returned false approval
  • Hooks logs show tool processed normally
  • No hook code modifies tool responses
  • Plan mode persists despite "approval" message

Expected: ExitPlanMode should prompt user for approval before returning

Environment Info

  • Platform: darwin
  • Terminal: Apple_Terminal
  • Version: 1.0.67
  • Feedback ID:

Errors

[{"error":"Error: Command failed: security find-generic-password -a $USER -w -s \"Claude Code\"\nsecurity: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.\n\n    at genericNodeError (node:internal/errors:983:15)\n    at wrappedFn (node:internal/errors:537:14)\n    at checkExecSyncError (node:child_process:882:11)\n    at execSync (node:child_process:954:15)\n    at t7 (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:867:5214)\n    at file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:48453\n    at Q (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:674:14418)\n    at lJ (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:45891)\n    at yz (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:44758)\n    at W9 (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:51079)","timestamp":"2025-08-03T10:47:16.374Z"},{"error":"RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]: stdout maxBuffer length exceeded\n    at Socket.onChildStdout (node:child_process:481:14)\n    at Socket.emit (node:events:518:28)\n    at Socket.emit (node:domain:489:12)\n    at addChunk (node:internal/streams/readable:561:12)\n    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n    at Readable.push (node:internal/streams/readable:392:5)\n    at Pipe.onStreamRead (node:internal/stream_base_commons:189:23)","timestamp":"2025-08-03T10:47:18.631Z"},{"error":"Error: Language not supported while highlighting code, falling back to markdown: \n    at CX (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:1576:1184)\n    at file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:1576:912\n    at Array.map (<anonymous>)\n    at KX (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:1576:903)\n    at tvB (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:2626:7823)\n    at KR (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:65:19859)\n    at Mb (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:42848)\n    at Nb (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38369)\n    at Bj (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38297)\n    at _R (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38151)","timestamp":"2025-08-03T10:47:19.894Z"},{"error":"Error: Language not supported while highlighting code, falling back to markdown: \n    at CX (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:1576:1184)\n    at file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:1576:912\n    at Array.map (<anonymous>)\n    at KX (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:1576:903)\n    at tvB (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:2626:7823)\n    at KR (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:65:19859)\n    at Mb (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:42848)\n    at Nb (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38369)\n    at Bj (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38297)\n    at _R (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38151)","timestamp":"2025-08-03T10:56:42.906Z"},{"error":"AxiosError: Request failed with status code 403\n    at QN (file:///Users/kristian/.npm-global/lib/node_modules/@anthropic-ai/claude-code/cli.js:676:1077)\n    at Unzip.i1 (file:///Users/kristian/.

Note: Error logs were truncated.

View original on GitHub ↗

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