mcpField
P
permission-tuner

permission-tuner

github.com/rohitg00エージェントワークフロー2.9k145 回インストール4 週間前に更新
リポジトリ

permission-tuner について

permission-tuner は、繰り返される権限確認を診断し、Claude Code の設定を調整するスキルです。有効なルールと拒否記録を調べ、変更を提案し、適用前に承認を求めます。

主な機能

  1. 01設定ファイル全体のルール確認
  2. 02有効な権限モードの確認
  3. 03記録された拒否理由の分類
  4. 04対象を絞った権限変更の提案
  5. 05削減できる確認回数の推定

活用シーン

  1. 01定常的に許可するコマンドの確認を削減
  2. 02自動モードが定常作業を止める原因の調査
  3. 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 を記述しない
  • プロンプトの削減見込み数を含める

コメント