[BUG] Claude Desktop: permissions.defaultMode=bypassPermissions in settings.json stopped being honored (regression — worked previously)
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?
Environment:
- Windows 11 Pro
- Running inside Claude Desktop (env var CLAUDE_CODE_ENTRYPOINT=claude-desktop)
- CLAUDE_AGENT_SDK_VERSION=0.3.202
Issue:
For many past sessions, setting "defaultMode": "bypassPermissions" in
.claude/settings.json worked correctly and permission prompts did not appear.
As of this week, permission prompts appear on ordinary tool calls (e.g. a
simple Bash command) despite this setting being correctly present.
Confirmed facts:
- "permissions": { "defaultMode": "bypassPermissions" } is set in BOTH
~/.claude/settings.json (user/global) and the project's
.claude/settings.local.json
- Both files are valid JSON (parsed successfully, no syntax errors)
- No managed-settings.json exists anywhere on the machine (checked all
standard Windows locations: C:\ProgramData\ClaudeCode\,
%APPDATA%\Claude\, %APPDATA%\Claude Code\, %LOCALAPPDATA%\ClaudeCode\,
%LOCALAPPDATA%\Claude\ — none present, so this is not an enterprise
policy override)
- The app UI shows a "Manual permissions" label, indicating the session
is actually running in the default/manual (ask-every-time) mode, not
bypassPermissions
- Problem persists across brand-new sessions started after confirming
the settings files — this is not a stale-session/config-not-reloaded
issue
- No UI control was found (via Shift+Tab or elsewhere) to manually
switch the session's permission mode from inside Claude Desktop
Ask:
Please confirm whether Claude Desktop is expected to read
permissions.defaultMode from settings.json the same way the terminal
CLI does, and if so, why it is not taking effect. This previously
worked reliably across many sessions and has regressed.
What Should Happen?
Claude Desktop should honor "defaultMode": "bypassPermissions" set in
settings.json and skip permission prompts, the same way it did across
many previous sessions before this regressed.
Error Messages/Logs
Steps to Reproduce
- Set "permissions": { "defaultMode": "bypassPermissions" } in both
~/.claude/settings.json (global) and the project's
.claude/settings.local.json
- Confirm both files are valid JSON (no syntax errors)
- Start a brand-new session in Claude Desktop on Windows
- Ask Claude to run any ordinary Bash command (e.g.
command -v ffmpeg) - A permission prompt ("Allow Claude to run X?" with Deny / Always
allow / Allow once) appears anyway — even though defaultMode is set
to bypassPermissions and no managed-settings.json exists anywhere
on the machine (checked all standard Windows locations)
This exact settings-file configuration worked correctly (no prompts)
across many prior sessions. The behavior has regressed recently.
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
Sonnet 5
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗