Loading...
Loading...
Analyze permission prompts and auto mode denials, then generate permission rules and autoMode entries that cut prompt fatigue. Use when prompts keep interrupting, auto mode falls back to prompting, or after sessions with many denials.
npx skill4agent add rohitg00/pro-workflow permission-tunerallowBash(*)Bash(node *)AgentMonitor/permissionsclaude auto-mode configautoModeautoMode.claude/settings.local.jsonfor f in ~/.claude/settings.json .claude/settings.json .claude/settings.local.json; do
[ -f "$f" ] && jq --arg f "$f" '{file: $f, mode: .permissions.defaultMode, allow: (.permissions.allow|length), ask: (.permissions.ask|length), deny: (.permissions.deny|length), autoMode: (.autoMode != null)}' "$f"
done
claude auto-mode config
ls -t ~/.claude/projects/*/*.jsonl | head -20 | xargs grep -ho '"toolDenialKind":"[^"]*"' | sort | uniq -c | sort -rntoolDenialKindpermission-ruleautomode-blockedautomode-parsing-errorautomode-unavailableuser-rejected| Symptom | Fix |
|---|---|
| Prompt on something you always approve | Remove or narrow the ask rule |
| Fix the hook false positive or narrow the deny rule |
| Classifier blocks work in your own repos, registries, local services | Add an |
| Classifier blocks one routine pattern | Add an |
| Want outward actions only when you asked | Add an |
| Want a human check every time | Keep a short |
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(npm test)",
"Bash(npm run lint)"
],
"ask": [
"Bash(git push --force*)",
"Bash(git push * main)",
"Bash(git push * main *)",
"Bash(git push *:main)",
"Bash(git push *:main *)",
"Bash(git push * master)",
"Bash(git push * master *)",
"Bash(git push *:master)",
"Bash(git push *:master *)",
"Bash(gh pr merge *)",
"Bash(npm publish*)"
],
"deny": [
"Bash(rm -rf *)",
"Read(**/.env)",
"Read(**/.env.*)"
]
},
"autoMode": {
"environment": [
"$defaults",
"Source control: repositories under github.com/your-org are trusted; feature-branch pushes are routine."
],
"allow": ["$defaults"],
"soft_deny": [
"$defaults",
"Merging a pull request needs the user's approval for that specific merge."
]
}
}autoMode~/.claude/settings.json--settings"$defaults"claude auto-mode configclaude auto-mode critiquePERMISSION TUNER REPORT
Mode: [mode] Rules: [X] allow, [Y] ask, [Z] deny autoMode: [yes/no]
Denials: [n] permission-rule, [n] classifier, [n] no verdict, [n] you rejected
Remove (ask rules you always approve):
- Bash(...) -- approved [n]x
Add to autoMode.environment:
+ "..." -- clears [n] blocks
Add to autoMode.allow / soft_deny:
+ "..."
Fix hooks:
! [script] blocked [n] harmless commands
Keep asking:
~ force push, merge, publish, deploy
Estimated prompts saved per session: ~[N]autoModeautoMode