Skip to content
Daniel Artola
Go back

[JA] Claude Codeに独自の許可リスト(allowlist)を作成させましょう

Read in English 🇬🇧 Leer en Español 🇪🇸 Leia em Português 🇧🇷

目次

毎日100回の承認を求められる問題

Claude Codeをマニュアルモードで使用しているなら、この感覚がわかるでしょう。npm run typecheckgit logkubectl get podsを実行するたびに、権限プロンプトが表示されます。同じ無害なコマンドを1日に20回も承認することになります。Anthropicが独自のユーザーベースでこれを測定したところ、驚くべきデータが得られました:プロンプトの93%が承認されています

これはセキュリティではありません。承認の疲労です。そして、文脈を無視した rm -rf が現れた日に、面倒くさがって「yes」をクリックしてしまう原因こそが、この承認の疲労なのです。

歴史的に、この問題を解決する方法は3つありました:

  1. settings.json を手元に置いておく。 機能しますが、規律とパターン構文の知識が必要です。
  2. --dangerously-skip-permissions を使用する。 速くて危険です。この名前は飾りではありません。
  3. 自動モード(分類モデル付き)。良い選択肢ですが、誰もが要件を満たしているわけではなく、決定をモデルに委ねたいと思っているわけでもありません。

2026年4月、Anthropicは4つ目の方法をリリースしました:あなたの履歴を読み取り、あなたのために許可リストを構築する公式スキルです。これは /fewer-permission-prompts と呼ばれ、手動制御を放棄することなく摩擦を解決します。


具体的に何をするのか

このスキルはClaude Code(v2.1以降)に統合されています。インストールも設定も不要です。呼び出すだけです:

/fewer-permission-prompts

内部的には、かなり保守的なパイプラインに従っています:

  1. ~/.claude/projects/<dir>/*.jsonlトランスクリプトを読み取り、直近の50セッションに制限します。
  2. BashとMCPのすべての呼び出しを抽出し、コマンド+最初のサブコマンド(git loggh pr viewmcp__slack__read_thread など)でグループ化します。
  3. 読み取り専用にフィルタリングします。 rmgit pushnpm install、副作用のあるビルド、POSTリクエスト、プロセスを終了させるコマンドは破棄します。
  4. 許可リストのエントリを必要とせずにすでに自動許可されているものをスキップしますcatlsgit statusgh pr viewdocker logslsof など。
  5. 危険なワイルドカードをブロックします。 Bash(python3:*)Bash(bun run *)sudo、インタプリタ、シェル、npx など、特定のツールのためだけに使用している場合でも、任意のコード実行を開くものはすべてブロックします。
  6. 頻度順にソートし、3回未満しか表示されないものを破棄して、上位20個を表示します。

結果として、候補のテーブル、追加したものと除外したものの説明、そしてプロジェクトの .claude/settings.json(グローバルでも settings.local.json でもない)へのクリーンな書き込みが得られます。


実際の例

実行を見るのが最もわかりやすいです。以下は、内部名をフィルタリングした後の、Kubernetes上のMCPゲートウェイを持つ実際のプロジェクトでの結果です:

#パターン回数メモ
1Bash(kubectl port-forward -n <ns> svc/<svc> 8000:8000 *)4ゲートウェイへのローカルトンネル
2Bash(npx tsc --noEmit *)4TypeScript の型チェック
3Bash(curl -s http://localhost:8000/*)3ローカルのヘルスチェックのGET
4Bash(lsof -ti:*)2ポートの占有確認
5Bash(dotnet --version *)2SDK のバージョン

これら5つの候補のうち、許可リストに登録されるのは2つだけです。他の3つがなぜ外れるのかを理解する価値があります。それぞれの理由がスキルのルールを示しているからです:

💡 ヒント: 頻繁に使用するコマンドが許可リストに追加されなかったことに気づいた場合は、Claudeに直接尋ねることで(例:「この最後の実行でどの権限をスキップしましたか?またその理由は?」)、その決定プロセスをよりよく理解できます。

2行が残り、.claude/settings.json に入力されます:

{
  "permissions": {
    "allow": [
      "Bash(kubectl port-forward -n <ns> svc/<svc> 8000:8000 *)",
      "Bash(curl -s http://localhost:8000/*)"
    ]
  }
}

ファイルの残りの部分はそのまま保持されます。保守的で、透明性が高く、驚きはありません。


目にすることになる許可リストパターン

構文はシンプルですが、覚えておく価値のある落とし穴があります:

パターン使用される場合
Bash(foo)特定の呼び出しの完全一致
Bash(foo *)プレフィックス+スペース:foofoo barfoo --opt に一致
Bash(foo*)スペースなし:注意。Bash(ls*)lsof もキャプチャします
mcp__server__toolMCPの完全なツール名、ワイルドカードなし

foo *foo* の違いは、許可リスト全体を台無しにすることがあります。スペースは重要です。


どこに書き込まれ、チーム内でなぜ重要なのか

このスキルは .claude/settings.json に書き込みます。これはプロジェクトのバージョン管理および共有されるファイルです。.claude/settings.local.json(あなた自身のものでアップロードされない)ではありません。~/.claude/settings.json(あなたのユーザーのグローバル設定)でもありません。

これには実用的な結果が伴います:

これはスキルの欠陥ではなく、設計上の決定です。許可リストの利点は、チーム全体が共有する場合に大きくなります。しかし、コミットはあなたを通過します。


同じ起源を持つ兄弟: /insights

同じデータソース、補完的な目的。/insights は同じ .jsonl を読み取りますが、許可リストを構築する代わりに、以下を含むHTMLレポートを生成します:

/fewer-permission-prompts が承認の摩擦を攻撃するのに対し、/insights は理解の摩擦を攻撃します:Claudeがすでに知っているべきことをClaudeに説明しなければならなかった時間です。

両方を2週間に1回組み合わせることは、安価で非常に有益な習慣です。


結論

/fewer-permission-prompts は壮大なツールではありません。1日1時間を節約したり、何か新しいものをアンロックしたりするわけではありません。それがするのは、パターン構文について考えたり、許可リストを手動で維持したりすることなく、10秒の摩擦を1日100回排除することです。

さらに重要なことは、それを透明かつ保守的に行うということです。何を追加し、何を除外し、その理由は何であるかを示します。デフォルトで危険なワイルドカードをブロックします。ノイズを避けるために最小頻度のしきい値を必要とします。そして、最終決定をあなたに委ねます。

これはAnthropicだけが正しく行うことができるユーティリティの一種です。なぜなら、彼らはトランスクリプトの完全なセマンティクスにアクセスでき、独自の自動許可リストを知っているからです。サードパーティの試みは、これより劣るものになるでしょう。

マニュアルモードでClaude Codeを使用していて、まだ実行していない場合は、今日実行してください。5秒の呼び出しと引き換えに、承認作業をしなくて済む数週間が手に入ります。


参考文献


Share this post on:

Previous Post
[ES] Deja que Claude Code escriba su propia allowlist
Next Post
[PT] Deixe o Claude Code escrever sua própria allowlist