"Bypass permissions" UI toggle does not set defaultMode in settings.json — prompts persist
Bug
The "Bypass permissions" / "Accept all permissions" toggle in the Claude Code UI does not write "defaultMode": "bypassPermissions" to the settings files. This means users who enable the toggle still get permission prompts on every command not individually whitelisted.
Expected Behavior
When a user enables "Bypass permissions" in the UI, settings.json should contain:
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}
And no further permission prompts should appear for any tool use (Bash, Read, Edit, Write, etc.).
Actual Behavior
- The UI toggle appears enabled (checkmark visible)
settings.jsonhas nodefaultModefield — it stays on"default"mode- Every bash command that doesn't match a previously-allowed exact string triggers a permission prompt
- Each time the user clicks "Allow once", that exact command string gets appended to the allow list in
.claude/settings.local.json - Over time this creates a massive list of 90+ individually whitelisted commands, but any new command still prompts
Steps to Reproduce
- Open Claude Code settings
- Enable "Bypass permissions" / "Accept all permissions"
- Start a session
- Run any bash command (e.g.,
netstat -ano | findstr :8081) - Observe: permission prompt appears despite the toggle being ON
- Check
~/.claude/settings.json— nodefaultModefield exists
Workaround
Manually add to both ~/.claude/settings.json and .claude/settings.local.json:
{
"permissions": {
"defaultMode": "bypassPermissions",
"allow": ["Bash(*)"]
}
}
Impact
This is a severe UX issue. Users who click "accept all permissions" expect exactly that. Instead they get interrupted repeatedly, which breaks flow and makes the tool feel broken. The disconnect between what the UI says and what the config does is confusing and frustrating.
Environment
- Claude Code on Windows 11
- Claude Opus 4.6
- Latest auto-updates channel
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗