defaultMode: bypassPermissions in .claude/settings.local.json silently ignored, missing from Shift+Tab cycle
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
permissions.defaultMode: "bypassPermissions" set in a project's .claude/settings.local.json is silently ignored — bypass permissions mode never appears in the Shift+Tab mode cycle, and the session starts in a different mode entirely. The CLI flags (--permission-mode bypassPermissions, --dangerously-skip-permissions) work correctly as a workaround, which suggests this is specifically a settings-file resolution bug rather than bypass mode being blocked outright.
Environment
- Claude Code version: 2.1.257
- Interface: CLI (terminal), macOS
- Plan: Claude Max (personal account, not Team/Enterprise — confirmed no managed-settings.json present,
/Library/Application Support/ClaudeCode/managed-settings.jsonis empty)
Steps to Reproduce
- Set
"permissions": {"defaultMode": "auto"}in~/.claude/settings.json(user-level) - In a project directory, set
"permissions": {"defaultMode": "bypassPermissions"}in.claude/settings.local.json - Run
claudewith no flags/args in that project directory - Press
Shift+Tabto cycle permission modes
Expected Behavior
Per docs (https://code.claude.com/docs/en/permission-modes#which-mode-a-session-starts-in and #switch-permission-modes):
- Project-local settings (
.claude/settings.local.json) should take precedence over user settings (~/.claude/settings.json) - A
defaultModevalue other than"auto"should apply "from any settings file" bypassPermissionsshould appear in theShift+Tabcycle sincepermissions.defaultMode: "bypassPermissions"is set
Session should start in bypassPermissions mode, with it available in the cycle.
Actual Behavior
Only default (manual), acceptEdits, plan, and auto appear in the Shift+Tab cycle. bypassPermissions is completely absent, despite being set in the higher-precedence project-local settings file.
/status confirms all three setting sources are being read ("Setting sources: User settings, Shared project settings, Project local settings"), so the file is being loaded — the bypassPermissions value within it just isn't taking effect for mode-cycle purposes.
Workaround Confirmed
Both of the following work correctly and restore bypassPermissions to the cycle:
claude --permission-mode bypassPermissions
claude --dangerously-skip-permissions
This isolates the bug to settings-file resolution specifically, not bypass mode being disabled or blocked for the account.
Relevant Config
~/.claude/settings.json (user-level, conflicting defaultMode):
{
"permissions": {
"defaultMode": "auto",
...
}
}
.claude/settings.local.json (project-local, not taking effect):
{
"permissions": {
"defaultMode": "bypassPermissions",
...
}
}
4 Comments
+1. I am experiencing the same problem. The issue occurred after upgrading to version 2.1.258 today. My
~/.claude/settings.jsonhas"defaultMode": "auto"applied, and the project's.claude/settings.jsonhas"defaultMode": "bypassPermissions"applied, but neither is being applied. Currently, it only operates in the intended mode when running directly withclaude --dangerously-skip-permissions.See the Claude Code v2.1.257 release notes: _Changed
defaultMode: "bypassPermissions"in.claude/settings.jsonor.claude/settings.local.jsonto be ignored, like"auto"; set it in user or managed settings, or pass --permission-mode_Move permission settings to your
~/.claude/settings.jsonfile to resolve this issue.@wehriam
It is slightly different. When running
claude, the default permissions seem to be fixed tomanual mode on. However, checking with/configshows that theDefault permission modeisBypass Permissions. It appears that the permissions set in the config are not properly applied when claude starts.<img width="766" height="249" alt="Image" src="https://github.com/user-attachments/assets/931b9575-b901-4744-9091-cdddfa0a25be" />
<img width="784" height="155" alt="Image" src="https://github.com/user-attachments/assets/ec66f5c2-c36f-492d-b3b3-df64998727a6" />
I understand that the project-level permissions within .claude/settings.json are no longer working. I have confirmed that the settings in ~/.claude/settings.json are functioning correctly.