Permission Tuner
Reduce permission prompt fatigue by analyzing denial patterns and suggesting targeted rules.
Trigger
Use when:
- Permission prompts interrupt flow repeatedly
- Starting a new project and want to configure permissions
- After a session with many manual approvals
Workflow
- Scan recent session data for permission patterns
- Identify frequently-approved tools and patterns
- Generate safe
alwaysAllowrules - Present rules for approval before applying
Analysis
Step 1: Gather Permission Data
Check current permission rules:
bashcat .claude/settings.json 2>/dev/null | grep -A 20 "permissions" cat ~/.claude/settings.json 2>/dev/null | grep -A 20 "permissions"
Step 2: Identify Safe Patterns
Allow-list candidates (low risk):
Read— all file reads (read-only, no side effects)Glob— file pattern matching (read-only)Grep— content search (read-only)Bash(git status)— read-only git commandsBash(git diff*)— read-only git commandsBash(git log*)— read-only git commandsBash(npm test*)— test executionBash(npm run lint*)— lintingBash(npm run typecheck*)— type checking
Ask candidates (medium risk — prompt user every time):
Edit— file modificationsWrite— new file creationBash(git add*)— staging changesBash(git commit*)— creating commitsBash(npm install*)— dependency changes
Deny-list candidates (high risk):
Bash(git push*)— affects remoteBash(git reset --hard*)— destructiveBash(rm -rf*)— destructiveBash(curl*POST*)— external API calls- Any command with
--forceor--no-verify
Step 3: Generate Rules
json{ "permissions": { "allow": [ "Read", "Glob", "Grep", "Bash(git status)", "Bash(git diff*)", "Bash(git log*)", "Bash(npm test*)", "Bash(npm run lint*)", "Bash(npm run typecheck*)" ], "deny": [ "Bash(rm -rf *)", "Bash(git push --force*)", "Bash(git reset --hard*)" ] } }
Output
textPERMISSION TUNER REPORT Current rules: [X] allow, [Y] deny, [Z] ask Recommendations: Auto-approve (safe, read-only): + Read, Glob, Grep + Bash(git status), Bash(git diff*), Bash(git log*) Auto-approve (medium risk, frequently used): + Edit (approved X times this session) + Bash(npm test*) (approved X times) Keep asking: ~ Bash(git commit*) — verify commit messages ~ Write — verify new file creation Auto-deny (dangerous): - Bash(rm -rf *) - Bash(git push --force*) Estimated prompts saved per session: ~[N]
Rules
- Destructive operations must stay in the deny list
- Always present rules for user approval before applying
- Group rules by risk level (safe/medium/dangerous)
- Include estimated prompt savings

