SpyBara
Go Premium

agent-sdk/permissions.md 2026-06-29 23:02 UTC to 2026-06-30 23:02 UTC

5 added, 1 removed.

2026
Tue 30 23:02 Mon 29 23:02 Sat 27 01:01 Fri 26 23:00 Thu 25 23:58 Wed 24 22:02 Tue 23 22:00 Mon 22 23:59 Fri 19 22:58 Thu 18 22:00 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

パーミッションの設定

パーミッションモード、フック、宣言的な許可/拒否ルールを使用して、エージェントがツールをどのように使用するかを制御します。

Claude Agent SDK は、Claude がツールをどのように使用するかを管理するためのパーミッション制御を提供します。パーミッションモードとルールを使用して、自動的に許可されるものを定義し、canUseTool コールバックを使用して、実行時にそれ以外のすべてを処理します。

パーミッションの評価方法

Claude がツールをリクエストすると、SDK は次の順序でパーミッションをチェックします。

1

フック

最初にフックを実行します。フックはコールを直接拒否するか、それを渡すことができます。allow を返すフックは、以下の拒否および質問ルールをスキップしません。これらはフックの結果に関係なく評価されます。

2

拒否ルール

deny ルール(disallowed_tools およびsettings.jsonから)をチェックします。拒否ルールが一致する場合、bypassPermissions モードでもツールはブロックされます。Bash のような裸名の拒否ルールはこの評価が開始される前に Claude のコンテキストからツールを削除するため、このステップでチェックされるのは Bash(rm *) のようなスコープ付きルールのみです。

3

質問ルール

settings.jsonから ask ルールをチェックします。質問ルールが一致する場合、bypassPermissions モードでも、コールは確認のためにcanUseTool コールバックにフォールスルーします。dontAsk モードでは、一致する質問ルールは代わりに拒否されます。このモードはプロンプトを表示しないためです。

4

パーミッションモード

アクティブなパーミッションモードを適用します。bypassPermissions はこのステップに到達したすべてを承認します。acceptEdits はファイル操作を承認します。plan はファイル編集およびシェル書き込みツールを許可ルールに関係なく canUseTool コールバックにルーティングするため、計画中は書き込み操作を自動承認することはできません。その他のモードはフォールスルーします。

5

許可ルール

allow ルール(allowed_tools および settings.json から)をチェックします。ルールが一致する場合、ツールは承認されます。

6

canUseTool コールバック

上記のいずれでも解決されない場合、決定のためにcanUseTool コールバックを呼び出します。dontAsk モードでは、このステップはスキップされ、ツールは拒否されます。

6 ステップのパーミッション評価フロー図。ツールリクエストはフック、拒否ルール、質問ルール、パーミッションモード、許可ルール、canUseTool を通過します。フック、拒否ルール、canUseTool はブロックにルーティングでき、パーミッションモードバイパス、許可ルール、canUseTool は実行にルーティングできます。質問ルールは canUseTool にルーティングします。

このページは許可および拒否ルールパーミッションモードに焦点を当てています。その他のステップについては、以下を参照してください。

  • フック: カスタムコードを実行して、ツールリクエストを許可、拒否、または変更します。フックで実行を制御を参照してください。
  • canUseTool コールバック: 実行時にユーザーに承認を促します。承認とユーザー入力の処理を参照してください。

許可および拒否ルール

allowed_tools および disallowed_tools(TypeScript:allowedTools / disallowedTools)は、上記の評価フロー内の許可および拒否ルールリストにエントリを追加します。許可ルールは承認のみに影響します。allowed_tools にリストされていないツールは引き続き Claude に利用可能であり、パーミッションモードにフォールスルーします。拒否ルールは、ツール全体に名前を付けるか、ツール内のパターンをスコープするかによって異なる動作をします。

オプション 効果
allowed_tools=["Read", "Grep"] Read および Grep は自動承認されます。ここにリストされていないツールは引き続き存在し、パーミッションモードおよび canUseTool にフォールスルーします。
disallowed_tools=["Bash"] Bash ツール定義はリクエストから削除されます。Claude はツールを認識せず、それを試みることはできません。
disallowed_tools=["Bash(rm *)"] Bash は利用可能なままです。rm * に一致する呼び出しは、bypassPermissions を含むすべてのパーミッションモードで拒否されます。その他の Bash 呼び出しはパーミッションモードにフォールスルーします。
disallowed_tools=["*"] すべてのツール定義はリクエストから削除されます。拒否ルールではツール名グロブがサポートされています。"*" はすべてのツールに一致し、"mcp__*" はすべてのサーバー全体のすべての MCP ツールに一致します。

許可ルールは、リテラル mcp__<server>__ プレフィックスの後にのみツール名グロブを受け入れます。サーバーセグメントはグロブフリーである必要があり、設定したサーバーに名前を付けます。mcp__puppeteer__*puppeteer サーバーからのすべてのツールに一致し、mcp__github__get_* はその get_ ツールに一致します。allowed_tools=["*"] または allowed_tools=["mcp__*"] のようなアンカーされていないエントリは、スタートアップ警告で無視され、何も自動承認しません。

ロックダウンされたエージェントの場合、allowedToolspermissionMode: "dontAsk" と組み合わせます。リストされたツールは承認されます。その他のものはプロンプトの代わりに直接拒否されます。

const options = {
  allowedTools: ["Read", "Glob", "Grep"],
  permissionMode: "dontAsk"
};

.claude/settings.json で許可、拒否、および質問ルールを宣言的に設定することもできます。これらのルールは、project 設定ソースが有効な場合に読み込まれます。デフォルトの query() オプションではこれが有効です。setting_sources(TypeScript:settingSources)を明示的に設定する場合は、それらを適用するために "project" を含めてください。ルール構文については、パーミッション設定を参照してください。

パーミッションモード

パーミッションモードは、Claude がツールをどのように使用するかについてのグローバル制御を提供します。query() を呼び出すときにパーミッションモードを設定するか、ストリーミングセッション中に動的に変更できます。

利用可能なモード

SDK は以下のパーミッションモードをサポートしています。

モード 説明 ツール動作
default 標準パーミッション動作 自動承認なし。一致しないツールは canUseTool コールバックをトリガーします
dontAsk プロンプトの代わりに拒否 allowed_tools またはルールで事前承認されていないものはすべて拒否されます。canUseTool は呼び出されません
acceptEdits ファイル編集を自動受け入れ ファイル編集およびファイルシステム操作mkdirrmmv など)は自動的に承認されます
bypassPermissions パーミッションチェックをバイパス ツールは明示的な ask ルールが一致しない限り、パーミッションプロンプトなしで実行されます(注意して使用してください)
plan 計画モード Claude はソースファイルを編集せずにコードベースを探索および計画します。ファイル編集は自動承認されず、canUseTool コールバックを通じてプロンプトが表示されます
auto(TypeScript のみ) モデル分類承認 モデル分類器が各ツール呼び出しを承認または拒否します。利用可能性については自動モードを参照してください

パーミッションモードの設定

クエリを開始するときにパーミッションモードを一度設定するか、セッションがアクティブな間に動的に変更できます。

クエリを作成するときに permission_mode(Python)または permissionMode(TypeScript)を渡します。このモードは、動的に変更されない限り、セッション全体に適用されます。

import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions


async def main():
async for message in query(
prompt="Help me refactor this code",
options=ClaudeAgentOptions(
permission_mode="default",  # ここでモードを設定
),
):
if hasattr(message, "result"):
print(message.result)


asyncio.run(main())

モードの詳細

ファイル編集モード(`acceptEdits`)

ファイル操作を自動承認し、Claude がプロンプトなしでコードを編集できるようにします。その他のツール(ファイルシステム操作ではない Bash コマンドなど)は引き続き通常のパーミッションが必要です。

自動承認される操作:

  • ファイル編集(Edit、Write ツール)
  • ファイルシステムコマンド:mkdirtouchrmrmdirmvcpsed

どちらも、作業ディレクトリまたは additionalDirectories 内のパスにのみ適用されます。そのスコープ外のパスおよび保護されたパスへの書き込みはプロンプトが表示されます。

使用時期: Claude の編集を信頼し、プロトタイピング中など、より高速な反復を望む場合、または分離されたディレクトリで作業する場合。

質問しないモード(`dontAsk`)

パーミッションプロンプトを拒否に変換します。allowed_toolssettings.json 許可ルール、またはフックで事前承認されたツールは通常どおり実行されます。その他のすべては canUseTool を呼び出さずに拒否されます。

使用時期: ヘッドレスエージェント用に固定された明示的なツール表面が必要で、canUseTool が存在しないことへの暗黙的な依存よりもハード拒否を優先する場合。

パーミッションバイパスモード(`bypassPermissions`)

プロンプトなしですべてのツール使用を自動承認します。フックは引き続き実行され、必要に応じて操作をブロックできます。

計画モード(`plan`)

Claude はコードベースを探索および計画を作成し、ソースファイルを編集しません。読み取り専用ツールはデフォルトモードと同じように実行されます。ファイル編集は計画モードで自動承認されることはなく、許可ルールが一致する場合でも、代わりに canUseTool コールバックを通じてプロンプトが表示されます。Claude は計画を最終化する前に要件を明確にするために AskUserQuestion を使用する場合があります。これらのプロンプトの処理については、承認とユーザー入力の処理を参照してください。

使用時期: Claude に変更を提案させたいが実行させたくない場合、たとえばコードレビュー中または変更を実行する前に承認が必要な場合。

パーミッション評価フロー内の他のステップについては、以下を参照してください。