[BUG] defaultMode: bypassPermissions in settings.json has no effect — permission prompts still appear
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?
Setting "defaultMode": "bypassPermissions" in both ~/.claude/settings.json and the project-level
.claude/settings.local.json does not suppress permission prompts. Every tool call still triggers an approval
prompt, and approved commands accumulate in the permissions.allow list in settings.local.json, confirming the
bypass is not active.
The only working solution is --dangerously-skip-permissions via CLI flag.
Prompts appear on every tool call. Each approval writes the specific command to settings.local.json under
permissions.allow, growing the allowlist indefinitely.
What Should Happen?
No approval prompts. All tools run automatically as documented.
Error Messages/Logs
Steps to Reproduce
- Set {"defaultMode": "bypassPermissions"} in ~/.claude/settings.json
- Open a new terminal and start claude in any project
- Observe that Bash tool calls still require approval
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.72
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Warp
Additional Information
The settings.local.json file is also being modified in real-time during sessions, causing race conditions
when Claude attempts to write to it (receiving "file modified since last read" errors).
It was working fine in Terminal and in Craft Agents as well.
This issue has 14 comments on GitHub. Read the full discussion on GitHub ↗