From 16348e2e8923b2c261ba4f7da3023462b6e595d6 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 8 Aug 2026 18:57:57 +0200 Subject: [PATCH] chore(meta): drop the no-op Write() twins from the permission lists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Write() permission rule matches nothing. File permission checks consult only Edit() rules, which already cover every file-editing tool — Write, Edit and NotebookEdit alike. Claude Code now warns about the dead shape at session start. All eight removed here sat directly beside their Edit() twin, so the allow grant over the repo tree and the ask gates guarding settings and hook files kept working throughout. Behaviour is unchanged. That ask block remains the pattern worth copying to the other repos in this tree — it is the only one that stops an agent quietly widening its own permissions, and it has to be ask rather than deny to stay fixable. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/settings.json | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.claude/settings.json b/.claude/settings.json index 5389fdfef..bdd290ba0 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -68,7 +68,6 @@ "Read(//var/mnt/data/projects/settled-reach/**)", "Edit(//var/mnt/data/projects/settled-reach/**)", - "Write(//var/mnt/data/projects/settled-reach/**)", "Read(//tmp/**)", "Grep", "Glob", @@ -95,19 +94,12 @@ ], "ask": [ "Edit(.claude/settings.json)", - "Write(.claude/settings.json)", "Edit(.claude/settings.local.json)", - "Write(.claude/settings.local.json)", "Edit(.claude/hooks/**)", - "Write(.claude/hooks/**)", "Edit(.config/hooks/**)", - "Write(.config/hooks/**)", "Edit(.worktrees/**/.claude/settings.json)", - "Write(.worktrees/**/.claude/settings.json)", "Edit(.worktrees/**/.claude/hooks/**)", - "Write(.worktrees/**/.claude/hooks/**)", - "Edit(.worktrees/**/.config/hooks/**)", - "Write(.worktrees/**/.config/hooks/**)" + "Edit(.worktrees/**/.config/hooks/**)" ] }, "hooks": {