[BUG] Claude Code v2.1.212 asks approval for ALL bash commands in plan mode
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 latest version 2.1.212 any claude code session inside claude agents is asking for approval for every single bash command including reading git logs or grepping for file contents. This has not happened before, and just started after upgrading to latest 2.1.212.
What Should Happen?
No approvals asked under plan mode for read-only commands.
Error Messages/Logs
Steps to Reproduce
- Run
claude agents - Open a session by running a normal prompt
- Switch to plan mode
- Watch it ask for approval for every single bash command including read-only commands
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.211
Claude Code Version
2.1.212
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
iTerm2
Additional Information
Likely a regression due to this fix's unintended behavior: "Fixed plan mode auto-running file-modifying Bash commands (e.g. touch, rm) without a permission prompt or SDK canUseTool callback".
Claude code itself confirms it's a TUI regression - as claude -p with plan mode still behaves by auto approving read-only bash commands.
9 Comments
Confirming this on a different setup, which suggests the scope is wider than
claude agentson macOS.claude agents)permissions.defaultMode: "auto"in~/.claude/settings.jsonuseAutoModeDuringPlanunset, so at its documented default oftruesandbox.enabled: truewithautoAllowBashIfSandboxed: trueclaude auto-mode configreturns a populated classifier config)Two things worth adding.
Auto mode does not rescue it. Even with auto mode active and
useAutoModeDuringPlanat its default, plan mode still prompts on plainly read-only Bash. The reason shown is the genericThis command requires approval. So the classifier is not acting as a fallback here, which rules out "just use auto mode" as a workaround.It bites hardest through Bash-heavy subagents. In my sessions the main agent in plan mode mostly uses the Read/Grep/Glob tools, which are unaffected, so it looks fine. The
Plansubagent is about 62% Bash (sed,grep,cat, compound read-only exploration), so nearly every one of its calls prompts. Counting tool calls across my local subagent transcripts:| agentType | Bash calls | share of tool calls |
|---|---|---|
| Plan (spawned in plan mode) | 115 | 62% |
| Explore (spawned in auto mode) | 1373 | 51% |
Exploreuses Bash just as heavily and is not affected, which lines up with this being plan mode specific rather than a subagent issue. Subagents inherit the parent's permission mode by default per the 2.1.212 notes, so aPlansubagent inherits plan mode and inherits the regression with it.Read-only commands that prompt for me include bare
grep -rn ... | head,sed -n '1,40p' file, andpython -c "import somemodule; print(...)". Nothing with side effects.Agreed on the likely cause being the 2.1.212 note "Fixed plan mode auto-running file-modifying Bash commands (e.g.
touch,rm) without a permission prompt or SDKcanUseToolcallback". The underlying fix is clearly right, but it looks like the new gate catches every Bash command rather than only file-modifying ones.Additional issues with this 2.1.212 change (observed in a single session with no agents):
.claude/settings.local.jsonallowlist entries that do not actually work for plan modeReproducible on macos + wezterm terminal
Additional datapoint: this also reproduces in the native TUI on Windows — so it does not appear to be limited to
claude agentsnor toplatform:macos.Environment:
autoUpdatesChannel: "latest")In plan mode, every shell command now prompts, including cmdlets explicitly allow-listed in
~/.claude/settings.json:Identical calls issued by read-only (Explore) subagents prompt as well. Before ~v2.1.212, plan mode ran all of these without prompting.
🤖 Generated with Claude Code in the session with id d8e31d61
I am also encountering this in Claude Code CLI 2.1.214. During
planmode, workflow agents keep prompting for permissions. I temporarily downgradedclaudeto 2.1.211.Additionally, I noticed that when connecting remotely (
/remote-control), the permission mode is set toManual. Is it possible that the permission modes conflict?useAutoModeDuringPlanalso does not work.Looking at 2.1.212 change logs, i'm pretty sure this issue comes from here ?
Fixed plan mode auto-running file-modifying Bash commands (e.g. touch, rm) without a permission prompt or SDK canUseTool callbackUpdate: Still occurs on
v2.1.216-- downgrading now tov2.1.211Still reproduces on v2.1.217.
Environment: macOS (Darwin 25.5.0), Ghostty + tmux, native TUI,
defaultMode: "auto"(useAutoModeDuringPlanunset)Additional datapoints from a session transcript analysis (2026-07-22, an issue-handling workflow that enters plan mode right after creating a worktree):
EnterPlanModeandExitPlanMode, read-only Bash commands (grep,gh run list,gh api,forloops overgh issue view) required approval. AfterExitPlanMode, the exact same session ran compound commands,sed -i,git commit, etc. with zero prompts — auto mode classification works fine outside plan mode.gh run listwaited 12,340 s (~3.4 h) for approval, others waited 1,456–1,461 s.Read) queue behind it, so a single prompt stalls the whole investigation fan-out.This makes plan mode effectively unattended-unusable: any workflow that researches during planning blocks on the first compound read-only command until a human returns.
As of v2.1.218 this is fixed by "Changed plan mode with auto to no longer prompt for Bash commands the static analyzer can't prove read-only; the auto-mode classifier judges them instead". Closing.