[FEATURE] Global permissions.defaultMode / permissions.allow should not be overridden by project-level settings

Resolved 💬 3 comments Opened Apr 9, 2026 by emmasys-hkh Closed Apr 12, 2026

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:

  1. Deep-merge permissions.allow arrays across settings levels (union), and treat defaultMode as inherited from global

unless explicitly overridden at project level, OR

  1. 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_

View original on GitHub ↗

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