目次
毎日100回の承認を求められる問題
Claude Codeをマニュアルモードで使用しているなら、この感覚がわかるでしょう。npm run typecheck、git log、kubectl get podsを実行するたびに、権限プロンプトが表示されます。同じ無害なコマンドを1日に20回も承認することになります。Anthropicが独自のユーザーベースでこれを測定したところ、驚くべきデータが得られました:プロンプトの93%が承認されています。
これはセキュリティではありません。承認の疲労です。そして、文脈を無視した rm -rf が現れた日に、面倒くさがって「yes」をクリックしてしまう原因こそが、この承認の疲労なのです。
歴史的に、この問題を解決する方法は3つありました:
settings.jsonを手元に置いておく。 機能しますが、規律とパターン構文の知識が必要です。--dangerously-skip-permissionsを使用する。 速くて危険です。この名前は飾りではありません。- 自動モード(分類モデル付き)。良い選択肢ですが、誰もが要件を満たしているわけではなく、決定をモデルに委ねたいと思っているわけでもありません。
2026年4月、Anthropicは4つ目の方法をリリースしました:あなたの履歴を読み取り、あなたのために許可リストを構築する公式スキルです。これは /fewer-permission-prompts と呼ばれ、手動制御を放棄することなく摩擦を解決します。
具体的に何をするのか
このスキルはClaude Code(v2.1以降)に統合されています。インストールも設定も不要です。呼び出すだけです:
/fewer-permission-prompts
内部的には、かなり保守的なパイプラインに従っています:
~/.claude/projects/<dir>/*.jsonlのトランスクリプトを読み取り、直近の50セッションに制限します。- BashとMCPのすべての呼び出しを抽出し、コマンド+最初のサブコマンド(
git log、gh pr view、mcp__slack__read_threadなど)でグループ化します。 - 読み取り専用にフィルタリングします。
rm、git push、npm install、副作用のあるビルド、POSTリクエスト、プロセスを終了させるコマンドは破棄します。 - 許可リストのエントリを必要とせずにすでに自動許可されているものをスキップします:
cat、ls、git status、gh pr view、docker logs、lsofなど。 - 危険なワイルドカードをブロックします。
Bash(python3:*)、Bash(bun run *)、sudo、インタプリタ、シェル、npxなど、特定のツールのためだけに使用している場合でも、任意のコード実行を開くものはすべてブロックします。 - 頻度順にソートし、3回未満しか表示されないものを破棄して、上位20個を表示します。
結果として、候補のテーブル、追加したものと除外したものの説明、そしてプロジェクトの .claude/settings.json(グローバルでも settings.local.json でもない)へのクリーンな書き込みが得られます。
実際の例
実行を見るのが最もわかりやすいです。以下は、内部名をフィルタリングした後の、Kubernetes上のMCPゲートウェイを持つ実際のプロジェクトでの結果です:
| # | パターン | 回数 | メモ |
|---|---|---|---|
| 1 | Bash(kubectl port-forward -n <ns> svc/<svc> 8000:8000 *) | 4 | ゲートウェイへのローカルトンネル |
| 2 | Bash(npx tsc --noEmit *) | 4 | TypeScript の型チェック |
| 3 | Bash(curl -s http://localhost:8000/*) | 3 | ローカルのヘルスチェックのGET |
| 4 | Bash(lsof -ti:*) | 2 | ポートの占有確認 |
| 5 | Bash(dotnet --version *) | 2 | SDK のバージョン |
これら5つの候補のうち、許可リストに登録されるのは2つだけです。他の3つがなぜ外れるのかを理解する価値があります。それぞれの理由がスキルのルールを示しているからです:
npx tsc --noEmit(4回)。 頻度は高いですが、npxは任意のコード実行ツールです。今日tscのためだけに使用し、--noEmitフラグを維持し、決してマシンを切り替えないとしても、これを許可リストに入れることは、npxがダウンロードを決定したあらゆるパッケージに青信号を出すことを意味します。スキルはこれを明示的に拒否します。lsof -ti:*(2回)。 2つの理由で外れます:lsofはすでに自動許可リストに含まれており、3回というしきい値に達していません。dotnet --version(2回)。 読み取り専用でリスクはありませんが、しきい値を下回っています。スキルは、許可リストをノイズで膨らませるよりも、偽陰性を好みます。
💡 ヒント: 頻繁に使用するコマンドが許可リストに追加されなかったことに気づいた場合は、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 *) | プレフィックス+スペース:foo、foo bar、foo --opt に一致 |
Bash(foo*) | スペースなし:注意。Bash(ls*) は lsof もキャプチャします |
mcp__server__tool | MCPの完全なツール名、ワイルドカードなし |
foo * と foo* の違いは、許可リスト全体を台無しにすることがあります。スペースは重要です。
どこに書き込まれ、チーム内でなぜ重要なのか
このスキルは .claude/settings.json に書き込みます。これはプロジェクトのバージョン管理および共有されるファイルです。.claude/settings.local.json(あなた自身のものでアップロードされない)ではありません。~/.claude/settings.json(あなたのユーザーのグローバル設定)でもありません。
これには実用的な結果が伴います:
- コミット前に必ず差分を確認する。 あなたにとって「ローカルポート」であるものが、リポジトリで公に文書化したくない内部エンドポイントである可能性があります。
- エントリが個人的なものである場合は、実行後に手動で
.claude/settings.local.jsonに移動します。 - パブリックリポジトリにいる場合は、内部サービス名、Kubernetesネームスペース、またはアーキテクチャが漏れるルートに特に注意してください。
これはスキルの欠陥ではなく、設計上の決定です。許可リストの利点は、チーム全体が共有する場合に大きくなります。しかし、コミットはあなたを通過します。
同じ起源を持つ兄弟: /insights
同じデータソース、補完的な目的。/insights は同じ .jsonl を読み取りますが、許可リストを構築する代わりに、以下を含むHTMLレポートを生成します:
- セッションで繰り返し発生する摩擦点
- 最も繰り返す指示に基づいた、
CLAUDE.mdのための推奨ルール - 文書化に値するモデルの行動パターン
/fewer-permission-prompts が承認の摩擦を攻撃するのに対し、/insights は理解の摩擦を攻撃します:Claudeがすでに知っているべきことをClaudeに説明しなければならなかった時間です。
両方を2週間に1回組み合わせることは、安価で非常に有益な習慣です。
結論
/fewer-permission-prompts は壮大なツールではありません。1日1時間を節約したり、何か新しいものをアンロックしたりするわけではありません。それがするのは、パターン構文について考えたり、許可リストを手動で維持したりすることなく、10秒の摩擦を1日100回排除することです。
さらに重要なことは、それを透明かつ保守的に行うということです。何を追加し、何を除外し、その理由は何であるかを示します。デフォルトで危険なワイルドカードをブロックします。ノイズを避けるために最小頻度のしきい値を必要とします。そして、最終決定をあなたに委ねます。
これはAnthropicだけが正しく行うことができるユーティリティの一種です。なぜなら、彼らはトランスクリプトの完全なセマンティクスにアクセスでき、独自の自動許可リストを知っているからです。サードパーティの試みは、これより劣るものになるでしょう。
マニュアルモードでClaude Codeを使用していて、まだ実行していない場合は、今日実行してください。5秒の呼び出しと引き換えに、承認作業をしなくて済む数週間が手に入ります。
参考文献
- 元の記事(Wmedia): https://wmedia.es/en/tips/claude-code-fewer-permission-prompts
- 公式ドキュメント: https://code.claude.com/docs/en/permissions
- 自動モード(93%の承認に関するコンテキスト): https://www.anthropic.com/engineering/claude-code-auto-mode