permission-tuner について
permission-tuner は、繰り返される権限確認を診断し、Claude Code の設定を調整するスキルです。有効なルールと拒否記録を調べ、変更を提案し、適用前に承認を求めます。
主な機能
- 01設定ファイル全体のルール確認
- 02有効な権限モードの確認
- 03記録された拒否理由の分類
- 04対象を絞った権限変更の提案
- 05削減できる確認回数の推定
活用シーン
- 01定常的に許可するコマンドの確認を削減
- 02自動モードが定常作業を止める原因の調査
- 03新規プロジェクトの権限設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rohitg00/ pro-workflow --skill permission-tunerインストール後、Claude Code で/permission-tunerを入力して読み込まれたか確認します。
詳細
Permission Tuner
ルールを積み重ねるのではなく、原因を取り除いて権限確認のプロンプトを減らします。
トリガー
次の場合に使用します:
- 権限確認のプロンプトが繰り返し表示され、作業の流れが中断される
- 自動モードが日常的な作業をブロックし続ける、またはすべてを確認する状態に戻る
- 新しいプロジェクトを始めるにあたり、権限を設定したい
プロンプトが表示される仕組み
- ルールは最初に解決されます。優先順位は deny > ask > allow です。一致する ask ルールがあると、自動モードでもプロンプトが表示されます。また、
allowを返す PreToolUse フックでこの動作を上書きすることはできません。 - 自動モードでは、どのルールにも解決されない操作はすべて分類器に渡されます。連続して 3 回、またはセッション中に 20 回ブロックされると、自動モードは一時停止し、承認するまで、すべての操作でプロンプトが表示されます。
- 自動モードでは、範囲の広い allow ルール(
Bash(*)、Bash(node *)のようなワイルドカード付きインタープリター、パッケージマネージャーの実行コマンド、Agent、Monitor)は無視されます。 - 無害なコマンドに対して終了コード 2 を返すフックは拒否として扱われ、このフォールバックに近づく原因になります。
ワークフロー
ステップ 1:データを収集する
ルールは複数のスコープから統合されるため、ユーザーファイルだけでなく、存在するすべてのファイルを確認してください。/permissions には、Claude Code が実際に読み込んだルールが表示されます。claude auto-mode config には、有効な autoMode が表示されます(分類器は .claude/settings.local.json 内の autoMode を無視します)。
for 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 -rn
トランスクリプトで確認された toolDenialKind の値(未文書化のため、変更される可能性があります):permission-rule(ルールまたはフック)、automode-blocked(分類器)、automode-parsing-error および automode-unavailable(判定なし、調整不可)、user-rejected(ユーザーが拒否)。
ステップ 2:適切な修正を選ぶ
| 症状 | 修正 |
|---|---|
| 常に承認する操作でプロンプトが表示される | ask ルールを削除するか、適用範囲を狭めます |
無害なコマンドで permission-rule が発生する | フックの誤検知を修正するか、deny ルールの適用範囲を狭めます |
| 自分のリポジトリ、レジストリ、ローカルサービスでの作業が分類器にブロックされる | autoMode.environment エントリを追加します |
| 定型的なパターンが分類器にブロックされる | autoMode.allow エントリを追加します |
| 明示的に依頼した場合に限り、外部への操作を許可したい | autoMode.soft_deny エントリを追加します |
| 毎回、人による確認を行いたい | 短い permissions.ask ルールを残します |
ステップ 3:ルールを生成する
{
"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 config で確認し、カスタムルールを claude auto-mode critique でレビューしてください。
出力
PERMISSION 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]
ルール
- 新しい ask ルールよりも
autoModeエントリを優先する - 破壊的な操作は deny または ask にする
- 変更を適用する前に、必ずユーザーに提示して承認を得る
- プロジェクト設定に
autoModeを記述しない - プロンプトの削減見込み数を含める