Claude Desktop doesn't pass --dangerously-skip-permissions to child claude processes even when bypass is opted-in

Resolved 💬 2 comments Opened May 27, 2026 by leapnextmaverick Closed May 31, 2026

Environment

  • Claude Desktop: 1.9255.2
  • Claude Code (embedded): 2.1.149
  • macOS: 26.5 (build 25F71), arm64 (Apple M1)
  • Entrypoint: claude-desktop

Summary

After enabling Settings → Claude Code → Local sessions → Allow bypass permissions mode, and setting a folder's permission mode to bypassPermissions via the UI, new local sessions still launch without the required --dangerously-skip-permissions flag. Switching mode mid-session via Shift+Tab fails with:

Error: Cannot set permission mode to bypassPermissions because the session was not launched with --dangerously-skip-permissions

Reproduction

  1. Open Settings → Claude Code → toggle on Allow bypass permissions mode.
  2. In a project folder (e.g. /Users/<me>/Documents/<project>), set per-folder permission mode to bypassPermissions.
  3. Fully quit (⌘Q) and relaunch Claude Desktop.
  4. Open a new local session in that folder.
  5. Mode indicator shows Accept Edits.
  6. Press Shift+Tab to switch to Bypass Permissions → UI updates briefly.
  7. Send a message → fails with the error above (toast: "Permission mode couldn't be changed. You can try again.").

Expected

New sessions in a folder configured for bypassPermissions should launch the underlying claude process with --dangerously-skip-permissions (and/or --permission-mode bypassPermissions).

Actual

All sessions launch with --permission-mode acceptEdits and no --dangerously-skip-permissions:

.../claude-code/2.1.149/claude.app/Contents/MacOS/claude \
  --output-format stream-json --verbose --input-format stream-json \
  --effort max --model claude-opus-4-7[1m] \
  --permission-prompt-tool stdio \
  --setting-sources=user,project,local \
  --permission-mode acceptEdits \
  ...

Diagnostic data

~/Library/Application Support/Claude/claude_desktop_config.json has all the right flags set:

{
  "preferences": {
    "bypassPermissionsOptInByAccount": { "<accountId>": true },
    "bypassPermissionsGateByAccount":  { "<accountId>": true },
    "epitaxyPrefs": {
      "epitaxy-perm-mode-acks.<accountId>": [
        "/Users/<me>/Documents/<project>:bypassPermissions"
      ],
      "epitaxy-folder-permission-mode.<accountId>": {
        "/Users/<me>/Documents/<project>": "bypassPermissions"
      }
    }
  }
}

.claude/settings.local.json in the project also has "defaultMode": "bypassPermissions".

Despite all of these, the spawn args force --permission-mode acceptEdits.

Renderer console error (from sentry/scope_v3.json)

Error occurred in handler for 'LocalSessions.setPermissionMode':
Error: Cannot set permission mode to bypassPermissions because the session was not launched with --dangerously-skip-permissions

Impact

Bypass Permissions mode is effectively unusable from Claude Desktop — UI lets you opt in and switch, but the spawned process always refuses. CLI (claude --dangerously-skip-permissions from a terminal) works correctly, confirming the gate is purely on the Desktop-side launcher not translating the opt-in into spawn args.

View original on GitHub ↗

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