[FEATURE] Global permissions.defaultMode / permissions.allow should not be overridden by project-level settings
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
When Claude Code creates a settings.local.json in a project (e.g. when the user clicks "Always allow" for a specific
tool), the resulting permissions object in that file completely overrides the global ~/.claude/settings.json
permissions — including defaultMode and allow rules that were set globally.
Expected behavior: Global user settings in ~/.claude/settings.json should act as a true default/fallback.
Project-level settings should add to or override individual rules, but not silently drop global settings the user has
configured (e.g. defaultMode: "acceptEdits" or Edit(P:/**)).
Actual behavior: Any project with a permissions section in settings.local.json loses all global permission settings,
causing repeated permission prompts the user has already permanently approved.
Impact: Users who rely on global Edit/Write permissions are re-prompted on every project where Claude has created a
settings.local.json.
Proposed Solution
Suggested fix: Either:
- Deep-merge permissions.allow arrays across settings levels (union), and treat defaultMode as inherited from global
unless explicitly overridden at project level, OR
- Add a top-level setting (outside permissions) that cannot be overridden by project settings — e.g.
"globalDefaultMode": "acceptEdits".
Alternative Solutions
_No response_
Priority
Medium - Would be very helpful
Feature Category
Configuration and settings
Use Case Example
_No response_
Additional Context
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗