Claude Desktop doesn't pass --dangerously-skip-permissions to child claude processes even when bypass is opted-in
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
- Open Settings → Claude Code → toggle on Allow bypass permissions mode.
- In a project folder (e.g.
/Users/<me>/Documents/<project>), set per-folder permission mode tobypassPermissions. - Fully quit (
⌘Q) and relaunch Claude Desktop. - Open a new local session in that folder.
- Mode indicator shows
Accept Edits. - Press Shift+Tab to switch to Bypass Permissions → UI updates briefly.
- 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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗