permissions.defaultMode is ignored by the desktop app - new sessions always start in manual mode
Summary
permissions.defaultMode: "auto" is set at both the user level and the managed policy level, but every new session in the desktop app's Code tab starts in "manual". Switching the mode in the UI works, but only for that one session.
Environment
- Claude Code 2.1.185 (CLI), app-bundled 2.1.260
- Windows 11
- Desktop app, Code tab
Configuration (all levels agree on auto)
| Level | Value |
|---|---|
| User ~/.claude/settings.json | permissions.defaultMode = "auto" (single occurrence, top-level permissions) |
| Managed policy HKCU\SOFTWARE\Policies\ClaudeCode | {"permissions":{"defaultMode":"auto"}} |
| Project .claude/settings.json | no defaultMode key |
| Parent directories | no defaultMode key |
| ~/.claude.json project entry | no permission-mode key |
auto is a documented value — claude --help lists it under --permission-mode (acceptEdits, auto, bypassPermissions, default, dontAsk, plan).
Observation
The app keeps its own per-session permission mode, separate from the settings chain:
%APPDATA%\Claude\claude-code-sessions\<workspace>\<window>\local_<session>.json
-> "permissionMode": "default" | "auto"
Across sessions created in the last three days: 7x auto, 9x default — i.e. new sessions are not seeded from permissions.defaultMode. The value only changes when the mode is switched in the UI, and that change stays confined to the session that wrote it.
I could not find any global default for this in the app: %APPDATA%\Claude\config.json holds only locale/theme/OAuth/updater state, and neither Local Storage nor IndexedDB contain a permission-mode key. There is also no CLAUDE_CODE_* environment variable for it.
Possibly related (observed in ~/.claude.json, may or may not be the cause):
cachedGrowthBookFeatures.tengu_cowork_chrome_automode_default = falsehasResetAutoModeOptInForDefaultOffer = true
Expected
A new session starts in the mode configured by permissions.defaultMode, with the managed policy level taking precedence — or, if the desktop surface intentionally manages its own mode, a documented setting for its default.
Actual
Every new session starts in "manual", regardless of user settings and managed policy. The only reliable workaround is launching from a terminal with claude --permission-mode auto.
Impact
A managed policy that is silently overridden by UI session state is a problem beyond convenience: in a managed environment the policy level is the mechanism used to guarantee a permission posture. If the desktop surface ignores it, the guarantee does not hold — in either direction.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗