Bypass mode clamps to Accept Edits even with the toggle ON (Claude Code Desktop 1.9255.2 / CC 2.1.149)

Resolved 💬 3 comments Opened May 28, 2026 by lxgicstudios Closed Jun 29, 2026

Summary

In Claude Code Desktop, sessions consistently clamp from bypassPermissions → acceptEdits at start, showing the error:

Bypass Permissions mode isn't enabled. The session started in Accept Edits — enable Bypass Permissions in Settings to use it.

The Settings → "Allow bypass permissions mode" toggle is ON, and ~/.claude/settings.json has permissions.defaultMode: "bypassPermissions". Toggling off/on and full app quit do not fix it.

Environment

  • Claude.app: 1.9255.2
  • Bundled Claude Code: 2.1.149
  • macOS: 26.5 (Darwin 25.5.0)
  • Account: personal (Pro/Max), not running as root
  • No managed-settings.json on the system

Repro

  1. Set ~/.claude/settings.jsonpermissions.defaultMode: "bypassPermissions".
  2. In Claude Desktop → Settings, ensure "Allow bypass permissions mode" is ON.
  3. Start a new chat.

Expected: session runs in Bypass Permissions.
Actual: session briefly shows Bypass, then clamps to Accept Edits with errors
"permission mode couldn't be changed" and
"Bypass Permissions mode isn't enabled …"

Root cause (from inspecting app.asar + renderer bundle)

The main process emits permission_mode_clamped with errorCategory: "pref_disabled", logging verbatim:

bypassPermissionsModeEnabled pref is off

i.e. it consults the legacy bypassPermissionsModeEnabled flag.

The Settings UI toggle, however, writes to the newer per-account key bypassPermissionsOptInByAccount[<accountUUID>] whenever that object exists (see renderer asset c71860c77-DiRkFGDx.js):

const _ = void 0 !== r?.bypassPermissionsOptInByAccount;
// ...
_ ? setPreference("bypassPermissionsOptInByAccount", {...}) : setPreference("bypassPermissionsModeEnabled", e);

So once the per-account schema exists, the toggle never updates bypassPermissionsModeEnabled again, but the main process still reads only that legacy flag — the toggle becomes a no-op for the actual session gate.

Suggested fix

Either (a) have the main process check bypassPermissionsOptInByAccount[currentAccountUUID] with bypassPermissionsModeEnabled as fallback, or (b) have the UI write both keys until the legacy one is retired.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗