From 840bbc9ed0a6f2384f5813962439f3c01ce9d582 Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Sat, 29 Aug 2026 18:36:15 +0200 Subject: [PATCH] fix(sandbox): drop deny rules that file permission checks never match MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `Write(.claude/settings.json)` and `Write(.claude/settings.local.json)` looked like they guarded those two files, but file permission checks only match `Edit(path)` rules — a `Write(...)` deny rule is inert. Both paths are already covered by the `Edit(...)` deny rules immediately above, which apply to every file-editing tool, so removing the dead pair loses no protection and stops the settings block from implying a guard that was not there. Mirrors the removal into the sandbox-lint baseline, as every change to the live sandbox must be (docs/security/threat-model.md mitigation M.29). --- .claude/settings.json | 2 -- tools/sandbox-lint/expected.json | 2 -- 2 files changed, 4 deletions(-) diff --git a/.claude/settings.json b/.claude/settings.json index b10c9aa46..5635224a2 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -119,8 +119,6 @@ "Read(//**/.env.*.local)", "Edit(.claude/settings.json)", "Edit(.claude/settings.local.json)", - "Write(.claude/settings.json)", - "Write(.claude/settings.local.json)", "Bash(curl *)", "Bash(wget *)", "Bash(aws *)", diff --git a/tools/sandbox-lint/expected.json b/tools/sandbox-lint/expected.json index b10c9aa46..5635224a2 100644 --- a/tools/sandbox-lint/expected.json +++ b/tools/sandbox-lint/expected.json @@ -119,8 +119,6 @@ "Read(//**/.env.*.local)", "Edit(.claude/settings.json)", "Edit(.claude/settings.local.json)", - "Write(.claude/settings.json)", - "Write(.claude/settings.local.json)", "Bash(curl *)", "Bash(wget *)", "Bash(aws *)",