ExitPlanMode fails when plan mode toggled via Shift+Tab after starting with --dangerously-skip-permissions
Status Open
Reported on v2.1.72
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 3 comments · opened Mar 10, 2026
Bug Description
When starting Claude Code with --dangerously-skip-permissions and then manually toggling into plan mode via Shift+Tab, the ExitPlanMode confirmation flow fails to transition back to act mode. Responding "yes" to the exit plan mode prompt does not actually exit plan mode — the session remains stuck in read-only plan mode.
Steps to Reproduce
- Start Claude Code with
claude --dangerously-skip-permissions - Press Shift+Tab to toggle into plan mode
- Give Claude a task — it creates a plan and calls
ExitPlanMode - Respond "yes" to confirm exiting plan mode
- Expected: Claude exits plan mode and begins implementation (act mode with bypass-permissions)
- Actual: Claude remains in plan mode. System reminders continue showing "Plan mode still active"
Environment
- Claude Code version: 2.1.72
- Terminal: Ghostty (minimal config,
window-padding-y = 0,24only) - Shell: zsh (macOS Darwin 23.6.0)
- Alias used:
claude --dangerously-skip-permissions(via shell alias) skipDangerousModePermissionPrompt:truein~/.claude/settings.json
Notes
- No custom keybindings configured (
~/.claude/keybindings.jsondoes not exist) - No Ghostty input keybindings that could intercept the "yes" response
- The issue appears to be in how Claude Code handles the permission mode state transition when plan mode was entered via Shift+Tab toggle (as opposed to starting with
--permission-mode=plan)
3 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Same problem here. This is new issue introduced in latest days (never happened before, just fighting with this problems last few days)
I have feeling, that this started to happen, when I added parameter
claude --permission-mode planto start of Claude. But not sure, about this, just my feeling and possible hint.Workaround — auto-approve ExitPlanMode via hook:
Register as PreToolUse with empty matcher. This auto-approves ExitPlanMode regardless of how plan mode was entered.