name: permission-tuner description: Analyze permission denial patterns and generate optimized alwaysAllow and alwaysDeny rules. Use when permission prompts are slowing you down or after sessions with many denials.
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:
cat .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
Auto-approve 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 — auto-approve only if user confirms):
Edit— file modificationsWrite— new file creationBash(git add*)— staging changesBash(git commit*)— creating commitsBash(npm install*)— dependency changes
Never auto-approve (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
{
"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
PERMISSION 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
- Never auto-approve destructive operations
- Always present rules for user approval before applying
- Group rules by risk level (safe/medium/dangerous)
- Include estimated prompt savings