Claude CodeAnthropic の機能

FEATURE

permission rules (権限ルール)

permission rules (権限ルール) は、Claude Code のエージェントに何を許可し、何を許可しないかを細かく指定するための仕組みです。

提供中公式発表と照合済み
初出未調査
ページ更新
提供状態提供中
公式の記載で確認できた環境ターミナル、IDE 拡張
提供を確認できたプラン公式に記載なし
目次 CONTENTS
  1. できること
  2. 機能解説
  3. 使い方
  4. 利用シーン
  5. ChatGPT・OpenAI の対応する機能
  6. これまでの変更
  7. 関連する機能
  8. 出典
CAN DO

できること

POINT 01

ツールの許可・確認・拒否

ツールやコマンドごとに、承認なしで使わせる (allow)、毎回確認する (ask)、使わせない (deny) を指定できます。ルールは Claude Code が適用し、モデルの判断には依存しません。

POINT 02

deny を優先する評価順

ルールは deny、ask、allow の順に評価され、最初に一致したものが結果を決めます。allow ルールで deny ルールに例外を作ることはできず、どこかの設定レベルで拒否されたツールは他のレベルから許可できません。

POINT 03

チームでの設定共有

権限の設定をバージョン管理に入れて組織の開発者全員と共有しつつ、各開発者が自分用に調整できます。

GUIDE

機能解説

概要

ルールには、手動の承認なしで使わせる allow、使うたびに確認を求める ask、使わせない deny の 3 種類があります。ルールはモデルではなく Claude Code 自体が適用します。

ルールの書き方

権限ルールは Tool または Tool(specifier) の形式で書きます。

  • Bash: * は空白を含む任意の文字列に一致し、1 つのルールで一連のコマンドをまとめて扱えます。* の無いルールは 1 つのコマンドに完全一致します。確認なしで実行させたいコマンドを書き、変わる部分を * に置き換えます。
  • 複合コマンド: Claude Code はシェルの演算子を認識するため、Bash(safe-cmd *) で safe-cmd && other-cmd の実行は許可されません。複合コマンドを「Yes, and don't ask again」で承認すると、承認が必要なサブコマンドごとに別々のルールが保存されます。
  • 入力パラメータ: deny と ask のルールは、組み込みツールの最上位の入力パラメータに Tool(param:value) で一致させられます。
  • Read: ファイルツールによる読み取りを防ぐには、Read(./.env) や Read(./secrets/**) のようにパスを指定した Read の deny ルールを追加します。
  • WebFetch: domain: の接頭辞を使い、要求された URL のホスト名に一致させます。
  • MCP: サーバーの全ツールには mcp__<server>__*、特定のツールには完全な名前 mcp__<server>__<tool> を書きます。
  • Agent (subagents): 特定のサブエージェントを無効にするには、設定の deny 配列に Agent(AgentName) のルールを加えるか、--disallowedTools の CLI フラグを使います。
  • Cd: ツール名だけの Cd の deny ルールは /cd 全体を無効にし、Cd(<path-pattern>) は一致する移動先をブロックします。
  • PowerShell: よく使われるエイリアスは照合前に正規化され、PowerShell(Get-ChildItem *) は gci、ls、dir にも一致します。

評価の仕組みと注意点

  • Bash のようにツール名だけを書いた deny ルールは、そのツールを Claude のコンテキストから完全に取り除きます。Bash(rm *) のように範囲を絞ったルールでは、ツール自体は残り、一致する呼び出しだけがブロックされます。
  • Bash のルールは、同じプログラムを別の形で呼び出した場合には一致しません。そのため deny や ask のルールは、プログラムを囲むセキュリティ境界ではありません。
  • PreToolUse フックの判定は権限ルールを迂回しません。フックが allow や ask を返しても、一致する deny ルールは呼び出しをブロックし、一致する ask ルールは確認を求めます。
  • プロジェクトレベルの deny と ask のルールは制限するだけのものなので、workspace trust の影響を受けません。

管理者・導入時に確認したい点

  • 「Yes, and don't ask again」を選んで承認が恒久的に保存される場合 (Bash コマンドや WebFetch のドメインなど)、ルールは git リポジトリのルートにある .claude/settings.local.json に保存されます。このルールは、サブディレクトリや worktree で始めたセッションを含め、そのリポジトリ内の今後のセッションに適用されます。
  • VS Code では Permission rules ダイアログで権限ルールを一覧でき、user・project・local の設定でルールを追加・削除できます。起動オプション、セッション限定、managed のルールは読み取り専用です。
  • managed の権限ルールについては、ユーザーがインストールした mod に対する適用が改善されています。
  • 対象プランは公式のリリースノートには記載がありません。
HOW TO USE

使い方

  1. Claude Code で /permissions を実行し、ツールの権限を表示・管理するダイアログを開きます。
  2. ダイアログで、すべての権限ルールと、各ルールの出どころである settings.json ファイルを確認します。
  3. 必要に応じてルールを追加・削除します。Claude の作業中でもダイアログを開くことができ、変更は同じターン内の次のツール呼び出しから適用されます。
公式ヘルプを開く ↗
USE CASES

利用シーン

CASE 01

.env や秘密情報を置いたディレクトリを、Claude のファイルツールに読ませたくない場面に使えます。

CASE 02

チームで共通の権限設定をバージョン管理に入れ、開発者間でそろえる場面に向いています。

CASE 03

過去のトランスクリプトから、読み取り専用の Bash や MCP ツール呼び出しの allowlist 候補を作る場面に /less-permission-prompts スキルが使えます。

CASE 04

接続した MCP サーバーのうち特定のサーバーやツールだけを許可する場面に向いています。

COMPARISON

ChatGPT・OpenAI の対応する機能

比較の単位となる業務: コーディングエージェントのツール実行・ファイル書き込みの許可/拒否ルール管理

承認を繰り返さないための操作は両方にあります。Codex アプリでは、カスタム MCP 承認パネルに「Don't ask again」の処理が追加されています。Claude Code では、「Yes, and don't ask again」で恒久的に保存される承認がリポジトリのルートの .claude/settings.local.json にルールとして保存されます。

読み取りと書き込みの扱いについて、Codex には宣言された読み取り専用のアクションを許可し、書き込みには確認を求める writes アプリ承認モードがあります。Claude Code では、トランスクリプトから読み取り専用の Bash や MCP ツール呼び出しを探して allowlist を提案する /less-permission-prompts スキルを使い、allow ルールとして設定します。

TIMELINE

これまでの変更

  1. 権限ルールに関する起動時の警告は、ルールが変わるまでユーザーごとに一度だけ表示されるようになりました。/permissions のレビュータブは Recently blocked という名前になりました。

  2. MCP の allow ルールは名前を指定したサーバーだけに及ぶようになりました。managed の権限ルールの適用も改善されました。

  3. ツール全体を許可する Bash の allow ルールでも、Claude Code のファイルツールが拒否するファイルへのシェル書き込みは実行せず確認を求めるようになりました。多数の deny ルールと MCP ツールがある場合のターンごとの性能も改善されました。

  4. Skill(anthropic-skills:<name>) の deny ルールが、Claude Desktop がプラグインとして配信する同スキルもブロックするようになりました。Skill(anthropic-skills:*) と Skill(claude-ai:*) の allow ルールは claude.ai から同期されたスキルだけを対象とします。/permissions では操作後にフォーカスがルール一覧に戻り、削除確認の既定が No になりました。

  5. 解析できない Bash 行 (eval、env -C) に Read と Edit の deny ルールを適用する 2.1.268 の変更が取り消されました。

  6. VS Code に Permission rules ダイアログが追加されました。

  7. Read() の deny ルールを Bash の引数に適用する 2.1.259 の変更が取り消されました。Bash(ls) x のように閉じ括弧の後に文字があるルールは、無効な設定として報告されるようになりました。

  8. Bash(git * main) のようにサブコマンドの前にワイルドカードがある allow ルールに起動時の警告が出るようになりました。/permissions に auto mode の分類器ルールを表示・編集する Auto mode タブが追加されました。

  9. Claude の作業中でも /permissions を開けるようになりました。

  10. 「always allow」のルールがリポジトリのルートに保存されるようになり、git worktree で付与した承認がセッションや worktree をまたいで保持されます。deny/ask のルールは任意の深さでの一致を維持します。Write(path)、NotebookEdit(path)、Glob(path) のルールには起動時に警告が出ます (代わりに Edit(path) または Read(path) を使用)。

  11. Tool(param:value) 構文が追加されました (例: Agent(model:opus) で Opus のサブエージェントをブロック)。

  12. deny ルールのツール名の位置で glob パターンが使えるようになりました ("*" は全ツールを拒否)。allow ルールは MCP 以外の glob を受け付けず、deny ルール内の不明なツール名は起動時に警告されます。

  13. macOS で /private/{etc,var,tmp,home} のパスが Bash(rm:*) の allow ルールのもとで危険な削除対象として扱われるようになりました。Bash の deny ルールが env/sudo/watch/ionice/setsid などの実行ラッパーで包まれたコマンドにも一致するようになり、Bash(find:*) の allow ルールは find -exec/-delete を自動承認しなくなりました。Windows ではドライブレター付きパスのルールが正しくルート固定され、大文字小文字だけが異なるドライブレターは同じパスとして扱われます。/less-permission-prompts スキルも追加されました。

SOURCES

出典

出典 16 件を表示