{ "$schema": "https://json.schemastore.org/claude-code-settings.json", "permissions": { "allow": [ "Bash(npm run *)", "Bash(npm install *)", "Bash(npm test *)", "Bash(npx *)", "Bash(node *)", "Bash(git status)", "Bash(git diff *)", "Bash(git log *)", "Bash(git branch *)", "Bash(git checkout *)", "Bash(git add *)", "Bash(git commit *)", "Bash(git pull *)", "Bash(git fetch *)", "Bash(git merge *)", "Bash(git stash *)", "Bash(git remote *)", "Bash(git config *)", "Bash(git rev-parse *)", "Bash(git show *)", "Bash(git tag *)", "Bash(curl -s *)", "Bash(fnm *)" ], "deny": [ "Bash(git push --force*)", "Bash(git push -f *)", "Bash(git push origin --force*)", "Bash(git reset --hard*)", "Bash(git clean -fd*)", "Bash(git checkout -- .)", "Bash(git restore .)", "Bash(rm -rf /)", "Bash(rm -rf ~)", "Bash(rm -rf .git*)", "Bash(rm -rf /*)", "Bash(rm -rf node_modules)", "Read(./**/.env)", "Read(./**/.env.*)", "Read(./**/secrets/**)" ] }, "hooks": { "SessionStart": [ { "matcher": "compact", "hooks": [ { "type": "command", "command": "bash .claude/scripts/on-post-compact.sh", "timeout": 10 } ] } ], "PreCompact": [ { "hooks": [ { "type": "command", "command": "bash .claude/scripts/on-pre-compact.sh", "timeout": 30 } ] } ], "PostToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash .claude/scripts/on-commit.sh", "timeout": 15 } ] } ] } }