Claude Code の /permissions コマンドでできること(ルール確認と追加)
/permissions でどのルールがどの設定ファイル由来かを確認し、その場でルールを追加・削除する方法、Auto mode タブと Recently denied タブの使い方を公式ドキュメントを元に解説します。
権限まわりのトラブルは、たいてい「今どのルールが効いているのか分からない」ことが原因です。settings.json はユーザー・プロジェクト・ローカル・管理者と複数の場所にあり、手で追いかけると見落とします。
/permissions は、その全部をまとめて表示するコマンドです。ルールの一覧と、それぞれがどの settings.json 由来かが表示され、その場で追加も削除もできます。
KEY POINT
この記事で分かること
/permissionsで何が見えて、何を編集できるか- 追加したルールがどの設定ファイルに保存されるか
- Auto mode タブと Recently denied タブの役割
ルールの一覧と出どころを確認する
/permissions を実行すると、すべての権限ルールと、各ルールがどの settings.json から来ているかが表示されます。「このプロジェクトでは許可したはずのコマンドが毎回確認される」といった場合は、まずここで別スコープの ask や deny が勝っていないかを見ます。
ダイアログは Claude が作業している最中でも開けます。ルールを追加または削除すると、同じターンの次のツール呼び出しから変更が反映されます。v2.1.234 より前は、ターンが終わるまでコマンドが待たされていました。
用語解説
ルールを決めるのは Claude ではない: 権限ルールを適用するのは Claude Code 本体であり、モデルではありません。プロンプトや CLAUDE.md に書いた指示は Claude の振る舞いを変えますが、Claude Code が何を許すかは変えません。権限を与えたり取り消したりするには、/permissions、設定ファイルのルール、権限モード、PreToolUse フックのいずれかを使います。
ルールを追加する場所を意識する
/permissions から追加したルールは、保存先に選んだ設定ファイルのルールとして扱われます。これは /path 形式のパターンを書くときに効いてきます。同じ Read(/secrets/**) でも、起点が保存先によって変わるからです。
| 保存先 | /path の起点 |
|---|---|
プロジェクト設定 .claude/settings.json | プライマリ作業ディレクトリ |
ローカル設定 .claude/settings.local.json | プライマリ作業ディレクトリ |
ユーザー設定 ~/.claude/settings.json | ~/.claude/ |
権限プロンプトで「Yes, and don't ask again」を選んだ場合の保存先は別です。Bash コマンドや WebFetch のドメインのように恒久的に保存される承認は、git リポジトリのルートの .claude/settings.local.json に書かれ、そのリポジトリ配下のセッションすべてに効きます。ファイル編集の承認は保存されず、セッション終了までで切れます。
「don't ask again」が出ないときがある
コマンドや編集内容が長すぎる場合など、ルールが何を許すことになるかを画面に出し切れないとき、Claude Code は恒久承認の選択肢を出しません。そのときは一度だけ承認し、必要なら /permissions で自分でルールを書きます。公式ドキュメントもその手順を案内しています。
Auto mode タブと Recently denied タブ
auto モードが使えるセッションでは、ダイアログに Auto mode タブが追加されます。分類器(classifier)のルールを設定ファイルを開かずに編集するためのタブで、Claude Code v2.1.246 以降で使えます。
allow、soft_deny、hard_deny、environmentの各エントリを、分類器が読むスコープごとに一覧表示します。- 管理者設定や
--settings由来のエントリは読み取り専用です。編集内容はすべて~/.claude/settings.jsonに保存されます。 - あるセクションに最初のルールを足すと、
"$defaults"も一緒に挿入され、組み込みルールが残ります。
Recently denied タブには、auto モードの分類器が拒否した操作が記録されます。行を選んで r を押すと再試行の印が付き、ダイアログを閉じたときに Claude Code が「その呼び出しを再試行してよい」というメッセージを送って会話を再開します。
拒否の記録には抜けがある
分類器が判定を出せなかった場合、Claude Code は操作を拒否しますが Recently denied には記録しません。またこのタブはシェルコマンドを、Claude が書いた説明文で表示します。正確な入力値が必要なら、PermissionDenied フックで tool_input を受け取ってください。
確認できなかったこと
権限モード自体の切り替えを /permissions から行えるかは、公式ドキュメントでは確認できませんでした。モードの切り替えについては、Shift+Tab で循環させる方法が案内されています。作業ディレクトリの追加も同様で、/add-dir コマンドと設定の additionalDirectories が公式の手段として書かれています。
ルールの設計そのものは、親記事の settings.json で permissions を設計する にまとめてあります。個人用の設定ファイルの扱いは settings.local.json とは、deny の具体例は .env を読ませない deny 設定 を参照してください。
まとめ
/permissionsは全ルールと、その出どころの設定ファイルを一覧表示する- 作業中でも開け、変更は同じターンの次のツール呼び出しから効く
/pathの起点は保存先の設定ファイルで変わるため、保存先を意識して書く- 「Yes, and don't ask again」の恒久承認はリポジトリルートの
.claude/settings.local.jsonに入る - auto モードが使えるセッションでは Auto mode タブと Recently denied タブが増える
よくある質問
- 作業中に /permissions を開いても大丈夫ですか?
- 問題ありません。Claude が作業している最中でも開けます。ルールを追加または削除すると、同じターンの次のツール呼び出しから反映されます。v2.1.234 より前は、ターンが終わるまでコマンドが待たされていました。
- 「Yes, and don't ask again」で承認したルールはどこに保存されますか?
- Bash コマンドや WebFetch のドメインのように恒久保存される承認は、git リポジトリのルートにある .claude/settings.local.json に保存されます。ファイル編集の承認は保存されず、セッション終了までの有効です。
- /permissions で権限モードそのものを切り替えられますか?
- 公式ドキュメントでは確認できませんでした。モードの切り替えは Shift+Tab で循環させる方法が公式に案内されています。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。