defaultMode: bypassPermissions in .claude/settings.local.json silently ignored, missing from Shift+Tab cycle

Status Open
Reported on v2.1.257
Maintainer reply None cached
Activity 4 comments · opened Sep 1, 2026

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.json is empty)

Steps to Reproduce

  1. Set "permissions": {"defaultMode": "auto"} in ~/.claude/settings.json (user-level)
  2. In a project directory, set "permissions": {"defaultMode": "bypassPermissions"} in .claude/settings.local.json
  3. Run claude with no flags/args in that project directory
  4. Press Shift+Tab to 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 defaultMode value other than "auto" should apply "from any settings file"
  • bypassPermissions should appear in the Shift+Tab cycle since permissions.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",
    ...
  }
}

View original on GitHub ↗

4 Comments

uyu423 · 1 day ago

+1. I am experiencing the same problem. The issue occurred after upgrading to version 2.1.258 today. My ~/.claude/settings.json has "defaultMode": "auto" applied, and the project's .claude/settings.json has "defaultMode": "bypassPermissions" applied, but neither is being applied. Currently, it only operates in the intended mode when running directly with claude --dangerously-skip-permissions.

wehriam · 15 hours ago

See the Claude Code v2.1.257 release notes: _Changed defaultMode: "bypassPermissions" in .claude/settings.json or .claude/settings.local.json to be ignored, like "auto"; set it in user or managed settings, or pass --permission-mode_

Move permission settings to your ~/.claude/settings.json file to resolve this issue.

uyu423 · 3 hours ago

@wehriam

It is slightly different. When running claude, the default permissions seem to be fixed to manual mode on. However, checking with /config shows that the Default permission mode is Bypass 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" />

uyu423 · 3 hours ago

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.