From ec7b9598930cee2638adc1e80b05aa9d3d41b541 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Tue, 28 Jul 2026 00:11:29 +0200 Subject: [PATCH] chore(claude): drop Bash(*) and require confirmation for commit and push The allow list in this file never took effect. Claude Code discards every `permissions.allow` entry from project settings while the workspace has not been trusted (hasTrustDialogAccepted is false for this repo), and it does so silently in interactive sessions. `Bash(*)` was therefore inert. Removing it rather than granting trust: the rule only ever bites on the unsandboxed path, where it would have meant "any command, outside the sandbox, without a prompt" for everyone who clones this repo. Sandboxed Bash is auto-allowed anyway, so the entry bought nothing safe. Add ask rules for git commit and git push instead. Unlike allow rules, ask and deny are not filtered by the trust gate, and the sandbox auto-allow path checks them before granting, so they apply to sandboxed and unsandboxed invocations alike. Both a bare and a wildcard form are listed because `git commit *` compiles to /^git commit .*$/ and would not match the bare command. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/settings.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.claude/settings.json b/.claude/settings.json index fc369e1..f76b1b2 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,11 +1,12 @@ { "permissions": { - "allow": [ - "Bash(*)" - ], "ask": [ "Skill(update-config)", - "Skill(update-config:*)" + "Skill(update-config:*)", + "Bash(git commit)", + "Bash(git commit *)", + "Bash(git push)", + "Bash(git push *)" ] }, "sandbox": {