[BUG] Plan Mode can't be used with Bypass Permissions

Status Open
Maintainer reply None cached
Activity 12 comments · opened Aug 9, 2025

Environment

  • Platform (select one):
  • [X ] Anthropic API (Claude Max)
  • [ ] AWS Bedrock
  • [ ] Google Vertex AI
  • [ ] Other: <!-- specify -->
  • Claude CLI version: 1.0.72
  • Operating System: macOS 15.5
  • Terminal: iTerm2, tmux

Bug Description

Claude Code 1.0.72 accommodates --dangerously-skip-permissions by letting the user cycle between permissions, plan mode, and auto-accept edits with shift+tab. That new functionality means that Plan Mode cannot be used in conjunction with Bypass Permissions.

I use Bypass Permissions all the time during Plan Mode so Claude Code can run commands and use MCP tools to gather information about a problem. The smooth workflow is impeded by the fact that those states are now mutually exclusive.

Steps to Reproduce

  1. Run claude --dangerously-skip-permissions
  2. Activate Plan Mode with shift+tab
  3. Ask Claude Code for a plan which involves a tool requiring permission, e.g. Playwright
  4. Claude Code asks you for permission to invoke a tool even though you ran it with --dangerously-skip-permissions

Expected Behavior

claude --dangerously-skip-permissions turns on Bypass Permissions mode for the entire session, regardless of whether I'm in Plan Mode or not. Bypass Permissions should be first-class.

Actual Behavior

Bypass Permissions mode became a second-class mode, parallel to Plan Mode.

View original on GitHub ↗

12 Comments

github-actions[bot] · 1 year ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/1948
  2. https://github.com/anthropics/claude-code/issues/1825
  3. https://github.com/anthropics/claude-code/issues/3090

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

tiagoefreitas · 9 months ago

The fix in https://github.com/anthropics/claude-code/issues/1825 does not really fix anything, or there may have been a regression. Switching to plan mode or other modes disables the bypass permissions setting, that should be always on if launched from the cli with --dangerously-skip-permissions

github-actions[bot] · 8 months ago

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

joelagnel · 8 months ago

The issue still persists

On Tue, Dec 9, 2025 at 7:20 PM github-actions[bot] @.***>
wrote:

github-actions[bot] left a comment (anthropics/claude-code#5466) <https://github.com/anthropics/claude-code/issues/5466#issuecomment-3631443017> This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes. — Reply to this email directly, view it on GitHub <https://github.com/anthropics/claude-code/issues/5466#issuecomment-3631443017>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAAJEVENHVMYZUPSO2GSE6D4A2O7FAVCNFSM6AAAAACDQMKMM2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTMMZRGQ2DGMBRG4> . You are receiving this because you are subscribed to this thread.Message ID: @.***>
mxazz123 · 7 months ago

I have found a solution or design-intended procedures. use plan mode to get a plan and then during the execution procedure, bypass permission on.

nullbio · 7 months ago

This is still an issue

alexey-pelykh · 6 months ago

It’s still an issue

gonzabk · 6 months ago

Still an issue

riskywhat · 6 months ago
I have found a solution or design-intended procedures. use plan mode to get a plan and then during the execution procedure, bypass permission on.

Unless I'm misunderstanding what you mean, that is not possible. Once you switch to "plan mode", you can't switch back to "bypass permissions mode". You can switch to "accept edits mode", but that is not the same thing. Also during "plan mode" you are constantly interrupted with permission requests, which is part of the problem. "Plan mode" should not be a part of the permissions system. It should be separate.

A much better solution would be:

Mode: Plan / Normal
Permissions: Read Only / Default / Accept Edits / Bypass Permissions

coderexpert123 · 5 months ago

+1 on @riskywhat's point — plan mode and permissions should be orthogonal concepts, not mutually exclusive modes.

My use case: I want opusplan (Opus plans, Sonnet executes) with bypassPermissions — zero permission prompts, ever. Opus should silently plan on every prompt and hand off to Sonnet for execution automatically. It should only pause for my explicit plan approval when I ask for it in the prompt (e.g., "plan this and wait for my approval"), not by default.

Right now this is impossible because:

  • opusplan only uses Opus inside plan mode
  • Plan mode forces read-only + approval pause on every prompt
  • Plan mode and bypassPermissions can't coexist

The fix is separating these into two independent axes:

  • Workflow mode: Plan / Normal (controls whether Claude plans before executing)
  • Permission level: Read Only / Default / Accept Edits / Bypass Permissions

And within plan mode, auto-execution should be the default — pausing for plan approval should be opt-in per prompt, not forced.

Related: #15721 (automatic model switching for plan mode)

yurukusa · 5 months ago

The Shift+Tab cycling between modes (plan ↔ bypass ↔ auto-accept) means you can't have both plan mode AND bypass permissions simultaneously. Here are workarounds:
Workaround 1 — Use plan mode with allow rules instead of bypass:
Instead of --dangerously-skip-permissions, set broad allow rules that effectively bypass permissions while keeping plan mode accessible:

// .claude/settings.local.json
{
  "permissions": {
    "allow": [
      "Bash(*)",
      "Edit(*)",
      "Write(*)",
      "Read(*)",
      "Glob(*)",
      "Grep(*)"
    ]
  }
}

With all tools allowed, Claude won't prompt for permissions — functionally equivalent to bypass mode. And plan mode remains available via Shift+Tab or /plan.
Workaround 2 — CLAUDE.md planning instruction with bypass mode:
If you prefer bypass mode, add planning behavior via CLAUDE.md:

<!-- CLAUDE.md -->
Before making any changes:
1. Present a numbered plan of what you intend to do
2. Wait for me to say "go" before executing
3. Never skip the planning step

This isn't the same as the built-in plan mode (it can be overridden), but with bypass permissions enabled, Claude will at least present a plan before acting.
Workaround 3 — UserPromptSubmit hook for plan enforcement:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "matcher": "",
        "hook": "bash -c 'INPUT=$(cat); PROMPT=$(echo \"$INPUT\" | jq -r .user_prompt); if echo \"$PROMPT\" | grep -qi \"plan\\|think\\|review\"; then echo \"{\\\"message\\\": \\\"Plan mode: present your plan as text before executing anything.\\\"}\" ; fi'"
      }
    ]
  }
}

This injects a planning instruction when your prompt contains plan-related keywords, regardless of the permission mode.

yigitkonur · 4 months ago

here is a oneliner solutions from my end: https://github.com/yigitkonur/hooks-claude-code