8 8
9Claude Agent SDK は、Claude がツールをどのように使用するかを管理するための権限制御を提供します。権限モードとルールを使用して、自動的に許可されるものを定義し、[`canUseTool` コールバック](/docs/ja/agent-sdk/user-input)を使用して、実行時にそれ以外のすべてを処理します。9Claude Agent SDK は、Claude がツールをどのように使用するかを管理するための権限制御を提供します。権限モードとルールを使用して、自動的に許可されるものを定義し、[`canUseTool` コールバック](/docs/ja/agent-sdk/user-input)を使用して、実行時にそれ以外のすべてを処理します。
10 10
11<h2 id="how-permissions-are-evaluated">11## 権限がどのように評価されるか
12 権限がどのように評価されるか
13</h2>
14 12
15Claude がツールをリクエストすると、SDK は以下の順序で権限をチェックします。13Claude がツールをリクエストすると、SDK は以下の順序で権限をチェックします。
16 14
17<Steps>15**1. Hooks**
18 <Step title="Hooks">
19 最初に [hooks](/docs/ja/agent-sdk/hooks) を実行します。Hook は呼び出しを完全に拒否するか、それを通すことができます。`allow` を返す Hook は、以下の deny および ask ルールをスキップしません。これらは Hook の結果に関係なく評価されます。`allow` を返す `PreToolUse` Hook は、[重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` または `rmdir` の削除を承認することもできません。plan モードでその `allow` がどのように動作するかについては、[plan モードでの Hook の承認](/docs/ja/permissions#hook-approvals-in-plan-mode) を参照してください。
20 </Step>
21 16
22 <Step title="Deny ルール">17最初に [hooks](/docs/ja/agent-sdk/hooks) を実行します。Hook は呼び出しを完全に拒否するか、それを通すことができます。`allow` を返す Hook は、以下の deny および ask ルールをスキップしません。これらは Hook の結果に関係なく評価されます。`allow` を返す `PreToolUse` Hook は、[重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` または `rmdir` の削除を承認することもできません。plan モードでその `allow` がどのように動作するかについては、[plan モードでの Hook の承認](/docs/ja/permissions#hook-approvals-in-plan-mode) を参照してください。
23 `deny` ルール(`disallowed_tools` および [settings.json](/docs/ja/settings-reference#permission-settings) から)をチェックします。Deny ルールがマッチした場合、`bypassPermissions` モードでもツールはブロックされます。`Bash` のような裸名の deny ルールは、この評価が始まる前に Claude のコンテキストからツールを削除するため、`Bash(rm *)` のようなスコープ付きルールのみがこのステップでチェックされます。
24 </Step>
25 18
26 <Step title="Ask ルール">19**2. Deny ルール**
27 [settings.json](/docs/ja/settings-reference#permission-settings) から `ask` ルールをチェックします。Ask ルールがマッチした場合、呼び出しは確認のために [`canUseTool` コールバック](/docs/ja/agent-sdk/user-input) にフォールスルーします。`bypassPermissions` モードでも同様です。
28 20
29 ユーザーインタラクションが必要なツールは同じように動作します。`AskUserQuestion` および [`_meta["anthropic/requiresUserInteraction"]`](/docs/ja/mcp#require-approval-for-a-specific-tool) を設定する MCP ツールサーバーは、allow ルールがマッチした場合でも常にコールバックにフォールスルーします。`dontAsk` モードでは、このモードは決してプロンプトを表示しないため、両方のケースが拒否されます。MCP アノテーションには Claude Code v2.1.199 以降が必要です。21`deny` ルール(`disallowed_tools` および [settings.json](/docs/ja/settings-reference#permission-settings) から)をチェックします。Deny ルールがマッチした場合、`bypassPermissions` モードでもツールはブロックされます。`Bash` のような裸名の deny ルールは、この評価が始まる前に Claude のコンテキストからツールを削除するため、`Bash(rm *)` のようなスコープ付きルールのみがこのステップでチェックされます。
30 22
31 組織が `ask` に設定した [claude.ai コネクタ](/docs/ja/mcp#organization-controls-on-connector-tools) ツールもこのステップでフローを離れます。`bypassPermissions` モードでも allow ルールがマッチした場合でも、すべての呼び出しはコールバックにフォールスルーします。コールバックは理由 `Your organization requires approval for this tool` を受け取ります。`dontAsk` モードでは、このモードは決してプロンプトを表示しないため、呼び出しは拒否されます。23**3. Ask ルール**
32 </Step>
33 24
34 <Step title="Permission モード">25[settings.json](/docs/ja/settings-reference#permission-settings) から `ask` ルールをチェックします。Ask ルールがマッチした場合、呼び出しは確認のために [`canUseTool` コールバック](/docs/ja/agent-sdk/user-input) にフォールスルーします。`bypassPermissions` モードでも同様です。
35 アクティブな [permission モード](#permission-modes) を適用します。
36 26
37 * `bypassPermissions` モードでは、Claude Code はこのステップに到達したすべてのものを承認します。ただし、[重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は除きます。これらはフォールスルーします。27ユーザーインタラクションが必要なツールは同じように動作します。`AskUserQuestion` および [`_meta["anthropic/requiresUserInteraction"]`](/docs/ja/mcp#require-approval-for-a-specific-tool) を設定する MCP ツールサーバーは、allow ルールがマッチした場合でも常にコールバックにフォールスルーします。`dontAsk` モードでは、このモードは決してプロンプトを表示しないため、両方のケースが拒否されます。MCP アノテーションには Claude Code v2.1.199 以降が必要です。
38 * `acceptEdits` モードでは、Claude Code は [Accept edits モード](#accept-edits-mode-acceptedits) の下にリストされたファイル操作を承認します。
39 * `plan` モードでは、Claude Code は allow ルールに関係なく、ファイル編集およびシェル書き込みツールを `canUseTool` コールバックに送信します。これにより、計画中に書き込み操作を自動承認することはできません。
40 * その他のモードでは、リクエストはフォールスルーします。
41 </Step>
42 28
43 <Step title="Allow ルール">29組織が `ask` に設定した [claude.ai コネクタ](/docs/ja/mcp#organization-controls-on-connector-tools) ツールもこのステップでフローを離れます。`bypassPermissions` モードでも allow ルールがマッチした場合でも、すべての呼び出しはコールバックにフォールスルーします。コールバックは理由 `Your organization requires approval for this tool` を受け取ります。`dontAsk` モードでは、このモードは決してプロンプトを表示しないため、呼び出しは拒否されます。
44 `allow` ルール(`allowed_tools` および settings.json から)をチェックします。ルールがマッチした場合、ツールは承認されます。ツール自体が承認する呼び出しもこのステップで解決されます。ルールは不要です。例えば、作業ディレクトリ内のファイル読み取りまたは [読み取り専用 Bash コマンド](/docs/ja/permissions#read-only-commands)。
45 30
46 `rm` および `rmdir` の削除で [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとするものは、allow ルールによって決して承認されません。その後、コールバックに到達するかどうかは permission モードに依存します。例えば、`auto` モードの Agent SDK セッションでは、Claude Code はデフォルトでそれを呼び出さずに拒否します。[重要なパス](/docs/ja/permission-modes#critical-paths) モード表は、各モードがそれらで何をするかをリストしています。31**4. Permission モード**
47 32
48 allow ルールは、[ネットワークパス](/docs/ja/permissions#network-paths) からの読み取りを承認しません。33アクティブな [permission モード](#permission-modes) を適用します。
49 </Step>
50 34
51 <Step title="canUseTool コールバック">35* `bypassPermissions` モードでは、Claude Code はこのステップに到達したすべてのものを承認します。ただし、[重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は除きます。これらはフォールスルーします。
52 上記のいずれでも解決されない場合、決定のために [`canUseTool` コールバック](/docs/ja/agent-sdk/user-input) を呼び出します。`dontAsk` モードでは、このステップはスキップされ、ツールは拒否されます。36* `acceptEdits` モードでは、Claude Code は [Accept edits モード](#accept-edits-mode-acceptedits) の下にリストされたファイル操作を承認します。
37* `plan` モードでは、Claude Code は allow ルールに関係なく、ファイル編集およびシェル書き込みツールを `canUseTool` コールバックに送信します。これにより、計画中に書き込み操作を自動承認することはできません。
38* その他のモードでは、リクエストはフォールスルーします。
53 39
54 TypeScript SDK では、[`permissionPrompts: 'none'`](/docs/ja/agent-sdk/typescript#options) を設定した場合、このステップではコールバックは呼び出されません。[`PermissionRequest` hook](/docs/ja/hooks#permissionrequest) はまだ決定する機会があり、そうしない場合、Claude Code は呼び出しを拒否します。このオプションには Claude Code v2.1.259 以降が必要です。40**5. Allow ルール**
55 </Step>
56</Steps>
57 41
58<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" className="dark:hidden" alt="上記のステップに対応する 6 ステップの権限評価フロー図。ツールリクエストは hooks、deny ルール、ask ルール、permission モード、allow ルール、canUseTool を通過します。Hooks、deny ルール、canUseTool は Blocked にルーティングでき、permission モード bypass、allow ルール、canUseTool は Execute にルーティングでき、ask ルールは canUseTool にルーティングします。" width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />42`allow` ルール(`allowed_tools` および settings.json から)をチェックします。ルールがマッチした場合、ツールは承認されます。ツール自体が承認する呼び出しもこのステップで解決されます。ルールは不要です。例えば、作業ディレクトリ内のファイル読み取りまたは [読み取り専用 Bash コマンド](/docs/ja/permissions#read-only-commands)。
59 43
60<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="上記のステップに対応する 6 ステップの権限評価フロー図。ツールリクエストは hooks、deny ルール、ask ルール、permission モード、allow ルール、canUseTool を通過します。Hooks、deny ルール、canUseTool は Blocked にルーティングでき、permission モード bypass、allow ルール、canUseTool は Execute にルーティングでき、ask ルール は canUseTool にルーティングします。" width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />44`rm` および `rmdir` の削除で [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとするものは、allow ルールによって決して承認されません。その後、コールバックに到達するかどうかは permission モードに依存します。例えば、`auto` モードの Agent SDK セッションでは、Claude Code はデフォルトでそれを呼び出さずに拒否します。[重要なパス](/docs/ja/permission-modes#critical-paths) モード表は、各モードがそれらで何をするかをリストしています。
45
46allow ルールは、[ネットワークパス](/docs/ja/permissions#network-paths) からの読み取りを承認しません。
47
48**6. canUseTool コールバック**
49
50上記のいずれでも解決されない場合、決定のために [`canUseTool` コールバック](/docs/ja/agent-sdk/user-input) を呼び出します。`dontAsk` モードでは、このステップはスキップされ、ツールは拒否されます。ただし、インストールした [mod](/docs/ja/plugins/mods/overview) は、[そのような呼び出しの一部](/docs/ja/permissions#precedence-among-rules-hooks-and-mods) を引き続き承認できます。
51
52TypeScript SDK では、[`permissionPrompts: 'none'`](/docs/ja/agent-sdk/typescript#options) を設定した場合、このステップではコールバックは呼び出されません。[`PermissionRequest` hook](/docs/ja/hooks#permissionrequest) はまだ決定する機会があり、そうしない場合、Claude Code は呼び出しを拒否します。このオプションには Claude Code v2.1.259 以降が必要です。
53
54
61 55
62TypeScript SDK がコールバックが相談される前に呼び出しを自動承認することを期待する設定で `canUseTool` コールバックを渡す場合、SDK はクエリが構築されるときに Node.js プロセス警告を 1 回発行します。警告のコードは `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED` です。2 つの設定がそれをトリガーします。56TypeScript SDK がコールバックが相談される前に呼び出しを自動承認することを期待する設定で `canUseTool` コールバックを渡す場合、SDK はクエリが構築されるときに Node.js プロセス警告を 1 回発行します。警告のコードは `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED` です。2 つの設定がそれをトリガーします。
63 57
73* **Hooks:** ツールリクエストを許可、拒否、または変更するカスタムコードを実行します。[実行を Hook で制御する](/docs/ja/agent-sdk/hooks) を参照してください。67* **Hooks:** ツールリクエストを許可、拒否、または変更するカスタムコードを実行します。[実行を Hook で制御する](/docs/ja/agent-sdk/hooks) を参照してください。
74* **canUseTool コールバック:** 前のステップで呼び出しが解決されない場合、実行時にユーザーの承認をプロンプトします。[承認とユーザー入力を処理する](/docs/ja/agent-sdk/user-input) を参照してください。68* **canUseTool コールバック:** 前のステップで呼び出しが解決されない場合、実行時にユーザーの承認をプロンプトします。[承認とユーザー入力を処理する](/docs/ja/agent-sdk/user-input) を参照してください。
75 69
76<h2 id="allow-and-deny-rules">70## 許可ルールと拒否ルール
77 許可ルールと拒否ルール
78</h2>
79 71
80`allowed_tools` と `disallowed_tools`(TypeScript:`allowedTools` / `disallowedTools`)は、上記の評価フロー内の許可ルールと拒否ルールリストにエントリを追加します。`allowed_tools` に[タスク追跡ツール](/docs/ja/agent-sdk/todo-tracking#model-availability)の 1 つを名前で指定すると、Claude Code もセッションをオプトインします。`allowed_tools` にリストされていない他のツールは、Claude でも利用可能であり、承認が必要なそのツールへの呼び出しは権限モードにフォールスルーします。拒否ルールは、ツール名を指定するか、ツール内のパターンをスコープするかによって動作が異なります。72`allowed_tools` と `disallowed_tools`(TypeScript:`allowedTools` / `disallowedTools`)は、上記の評価フロー内の許可ルールと拒否ルールリストにエントリを追加します。`allowed_tools` に[タスク追跡ツール](/docs/ja/agent-sdk/todo-tracking#model-availability)の 1 つを名前で指定すると、Claude Code もセッションをオプトインします。`allowed_tools` にリストされていない他のツールは、Claude でも利用可能であり、承認が必要なそのツールへの呼び出しは権限モードにフォールスルーします。拒否ルールは、ツール名を指定するか、ツール内のパターンをスコープするかによって動作が異なります。
81 73
92 84
93絶対ファイルシステムパスには `//path` を使用します:`Edit(//secrets/**)` の拒否ルールは、ディスク上の `/secrets` の下のどこでも書き込みをブロックします。単一の先頭スラッシュの場合、`Edit(/secrets/**)` はルールのソースでアンカーします。`allowed_tools` または `disallowed_tools` を通じて渡されるルールの場合、それはセッションの作業ディレクトリを意味するため、ルールはディスク上の `/secrets` をブロックしません。[Read と Edit ルール](/docs/ja/permissions#read-and-edit)で 4 つのアンカー形式と、設定ファイルからのルール解決方法を参照してください。85絶対ファイルシステムパスには `//path` を使用します:`Edit(//secrets/**)` の拒否ルールは、ディスク上の `/secrets` の下のどこでも書き込みをブロックします。単一の先頭スラッシュの場合、`Edit(/secrets/**)` はルールのソースでアンカーします。`allowed_tools` または `disallowed_tools` を通じて渡されるルールの場合、それはセッションの作業ディレクトリを意味するため、ルールはディスク上の `/secrets` をブロックしません。[Read と Edit ルール](/docs/ja/permissions#read-and-edit)で 4 つのアンカー形式と、設定ファイルからのルール解決方法を参照してください。
94 86
95<Warning>87> [!WARNING]
96 **自動承認ツールは `canUseTool` に到達しません。** `acceptEdits` または `bypassPermissions` によって、または許可ルールによって、任意の前のステップで承認されたツール呼び出しは、その `canUseTool` コールバックをスキップするため、そこに配置した権限チェックはそのツールに対して静かにバイパスされます。88>
97 89> **自動承認ツールは `canUseTool` に到達しません。** `acceptEdits` または `bypassPermissions` によって、または許可ルールによって、任意の前のステップで承認されたツール呼び出しは、その `canUseTool` コールバックをスキップするため、そこに配置した権限チェックはそのツールに対して静かにバイパスされます。
98 許可ルールは、`AskUserQuestion`、MCP ツール([`_meta["anthropic/requiresUserInteraction"]`](/docs/ja/mcp#require-approval-for-a-specific-tool)でマークされている)、コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、および[重要なパス](/docs/ja/permission-modes#critical-paths)をターゲットとする `rm` と `rmdir` 削除を自動承認することはありません。`dontAsk` モードでは、Claude Code はこれらの呼び出しをコールバックを呼び出さずに拒否します。他のモードでは、最初の 3 つはコールバックに到達します。[権限モード](/docs/ja/permission-modes#critical-paths)に応じて、重要なパス削除はコールバックに到達するか、Claude Code はそれを呼び出さずに拒否します。デフォルトでは Agent SDK セッションの `auto` モードでそうするように、です。90>
99 91> 許可ルールは、`AskUserQuestion`、MCP ツール([`_meta["anthropic/requiresUserInteraction"]`](/docs/ja/mcp#require-approval-for-a-specific-tool)でマークされている)、コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、および[重要なパス](/docs/ja/permission-modes#critical-paths)をターゲットとする `rm` と `rmdir` 削除を自動承認することはありません。`dontAsk` モードでは、Claude Code はこれらの呼び出しをコールバックを呼び出さずに拒否します。他のモードでは、最初の 3 つはコールバックに到達します。[権限モード](/docs/ja/permission-modes#critical-paths)に応じて、重要なパス削除はコールバックに到達するか、Claude Code はそれを呼び出さずに拒否します。デフォルトでは Agent SDK セッションの `auto` モードでそうするように、です。
100 カバレッジはエントリの形式に依存します:`Read` や `mcp__github__get_issue` のような裸の名前は、上記の例外と[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)を除いて、そのツールへのすべての呼び出しを自動承認しますが、`Bash(npm test *)` のようなスコープ付きルールはマッチする呼び出しのみを自動承認し、承認が必要な他の `Bash` 呼び出しはコールバックにフォールスルーします。すべてのツール呼び出しで実行する必要があるチェックの場合は、[`PreToolUse` フック](/docs/ja/agent-sdk/hooks)を使用します:フックはすべての他のステップの前に実行され、フック拒否は `bypassPermissions` モードでも適用されます。92>
101</Warning>93> カバレッジはエントリの形式に依存します:`Read` や `mcp__github__get_issue` のような裸の名前は、上記の例外と[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)を除いて、そのツールへのすべての呼び出しを自動承認しますが、`Bash(npm test *)` のようなスコープ付きルールはマッチする呼び出しのみを自動承認し、承認が必要な他の `Bash` 呼び出しはコールバックにフォールスルーします。すべてのツール呼び出しで実行する必要があるチェックの場合は、[`PreToolUse` フック](/docs/ja/agent-sdk/hooks)を使用します:フックはすべての他のステップの前に実行され、フック拒否は `bypassPermissions` モードでも適用されます。
102 94
103ロックダウンされたエージェントの場合、`allowedTools` を `permissionMode: "dontAsk"` と組み合わせます:95ロックダウンされたエージェントの場合、`allowedTools` を `permissionMode: "dontAsk"` と組み合わせます:
104 96
109};101};
110```102```
111 103
112リストされたツールは承認されます。ただし、[モードが自動承認しないアクション](/docs/ja/permission-modes#actions-no-mode-auto-approves)と[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)を除きます。プロンプトを表示する他のすべての呼び出しは代わりに拒否されます。`default` モードで承認が不要な呼び出しは、リストするかどうかに関わらず実行されます。例えば、[読み取り専用 Bash コマンド](/docs/ja/permissions#read-only-commands)、`Agent` のような実行前に尋ねないツール、および作業ディレクトリ内のファイル読み取りなどです。ツールをリクエストから完全に削除するには、その裸の名前を `disallowedTools` に追加します。104リストされたツールは承認されます。ただし、[モードが自動承認しないアクション](/docs/ja/permission-modes#actions-no-mode-auto-approves)と[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)を除きます。プロンプトを表示する他のすべての呼び出しは代わりに拒否されます。ただし、インストールした [mod](/docs/ja/plugins/mods/overview) は、[それらの呼び出しの一部](/docs/ja/permissions#precedence-among-rules-hooks-and-mods)を引き続き承認できます。
105
106`default` モードで承認が不要な呼び出しは、リストするかどうかに関わらず実行されます。例えば、[読み取り専用 Bash コマンド](/docs/ja/permissions#read-only-commands)、`Agent` のような実行前に尋ねないツール、および作業ディレクトリ内のファイル読み取りなどです。ツールをリクエストから完全に削除するには、その裸の名前を `disallowedTools` に追加します。
113 107
114<Warning>108> [!WARNING]
115 **`allowed_tools` は `bypassPermissions` を制約しません。** `allowed_tools` はリストしたツールを事前承認します。リストされていない他のツールは、許可ルールによってマッチされず、権限モードにフォールスルーします。ここで `bypassPermissions` はそれらを承認します。`allowed_tools=["Read"]` を `permission_mode="bypassPermissions"` と一緒に設定すると、`Bash`、`Write`、`Edit` を含むすべてのツールが承認されます。`bypassPermissions` が必要だが、特定のツールをブロックしたい場合は、`disallowed_tools` を使用します。109>
116</Warning>110> **`allowed_tools` は `bypassPermissions` を制約しません。** `allowed_tools` はリストしたツールを事前承認します。リストされていない他のツールは、許可ルールによってマッチされず、権限モードにフォールスルーします。ここで `bypassPermissions` はそれらを承認します。`allowed_tools=["Read"]` を `permission_mode="bypassPermissions"` と一緒に設定すると、`Bash`、`Write`、`Edit` を含むすべてのツールが承認されます。`bypassPermissions` が必要だが、特定のツールをブロックしたい場合は、`disallowed_tools` を使用します。
117 111
118`.claude/settings.json` で許可、拒否、および質問ルールを宣言的に設定することもできます。これらのルールは、`project` 設定ソースが有効な場合に読み込まれます。デフォルト `query()` オプションではこれが有効です。`setting_sources`(TypeScript:`settingSources`)を明示的に設定する場合は、それらを適用するために `"project"` を含めます。[権限設定](/docs/ja/settings-reference#permission-settings)でルール構文を参照してください。112`.claude/settings.json` で許可、拒否、および質問ルールを宣言的に設定することもできます。これらのルールは、`project` 設定ソースが有効な場合に読み込まれます。デフォルト `query()` オプションではこれが有効です。`setting_sources`(TypeScript:`settingSources`)を明示的に設定する場合は、それらを適用するために `"project"` を含めます。[権限設定](/docs/ja/settings-reference#permission-settings)でルール構文を参照してください。
119 113
120<h2 id="permission-modes">114## 権限モード
121 権限モード
122</h2>
123 115
124権限モードは、Claude がツールをどのように使用するかについてグローバルコントロールを提供します。`query()` を呼び出すときに権限モードを設定するか、ストリーミングセッション中に動的に変更できます。116権限モードは、Claude がツールをどのように使用するかについてグローバルコントロールを提供します。`query()` を呼び出すときに権限モードを設定するか、ストリーミングセッション中に動的に変更できます。
125 117
126Claude Code v2.1.302 以降では、権限モードを設定せず、設定ファイルの [`permissions.defaultMode`](/docs/ja/settings-reference#permissions-defaultmode) からもモードが取得されない場合、アプリは `default` モードで開始します。`default` モードでは、許可ルール、フック、`canUseTool` コールバック、または権限プロンプトツールを通じて承認しない限り、Claude Code は承認が必要なツール呼び出しをすべて拒否します。ツール呼び出しが拒否される場合は、[`claude -p` および Agent SDK の実行でツール呼び出しが拒否される](/docs/ja/permission-modes#which-mode-a-non-interactive-run-starts-in) を参照してください。118Claude Code v2.1.302 以降では、権限モードを設定せず、設定ファイルの [`permissions.defaultMode`](/docs/ja/settings-reference#permissions-defaultmode) からもモードが取得されない場合、アプリは `default` モードで開始します。`default` モードでは、許可ルール、フック、`canUseTool` コールバック、または権限プロンプトツールを通じて承認しない限り、Claude Code は承認が必要なツール呼び出しをすべて拒否します。ツール呼び出しが拒否される場合は、[`claude -p` および Agent SDK の実行でツール呼び出しが拒否される](/docs/ja/permission-modes#which-mode-a-non-interactive-run-starts-in) を参照してください。
127 119
128<h3 id="available-modes">120### 利用可能なモード
129 利用可能なモード
130</h3>
131 121
132SDK は以下の権限モードをサポートしています。122SDK は以下の権限モードをサポートしています。
133 123
134| モード | 説明 | ツール動作 |124| モード | 説明 | ツール動作 |
135| :- | :- | :- |125| :- | :- | :- |
136| `default` | 標準的な権限動作 | モードベースの自動承認なし。承認が必要で許可ルールに一致しないコールは、`canUseTool` コールバックをトリガーします |126| `default` | 標準的な権限動作 | モードベースの自動承認なし。承認が必要で許可ルールに一致しないコールは、`canUseTool` コールバックをトリガーします |
137| `dontAsk` | プロンプトの代わりに拒否 | それ以外の場合はプロンプトが表示されるコールは拒否されます。`allowed_tools` またはルールで承認されたコール、および `default` モードで承認が不要なコールは実行されます。コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、ユーザーインタラクションが必要なツール、[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)、ならびに [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は、事前に承認していても拒否されます。`canUseTool` は呼び出されません |127| `dontAsk` | プロンプトの代わりに拒否 | それ以外の場合はプロンプトが表示されるコールは拒否されます。ただし、インストールした [mod](/docs/ja/plugins/mods/overview) は引き続き [それらのコールの一部](/docs/ja/permissions#precedence-among-rules-hooks-and-mods) を承認できます。`allowed_tools` またはルールで承認されたコール、および `default` モードで承認が不要なコールは実行されます。コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、ユーザーインタラクションが必要なツール、[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)、ならびに [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は、事前に承認していても拒否されます。`canUseTool` は呼び出されません |
138| `acceptEdits` | ファイル編集を自動承認 | ファイル編集および [ファイルシステム操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` など)は自動的に承認されます |128| `acceptEdits` | ファイル編集を自動承認 | ファイル編集および [ファイルシステム操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` など)は自動的に承認されます |
139| `bypassPermissions` | 権限チェックをバイパス | [モードが自動承認しないアクション](/docs/ja/permission-modes#actions-no-mode-auto-approves) を除き、ツールは権限プロンプトなしで実行されます。注意して使用してください |129| `bypassPermissions` | 権限チェックをバイパス | [モードが自動承認しないアクション](/docs/ja/permission-modes#actions-no-mode-auto-approves) を除き、ツールは権限プロンプトなしで実行されます。注意して使用してください |
140| `plan` | 計画モード | Claude はソースファイルを編集せずに探索と計画を行います。ファイル編集は自動承認されず、`canUseTool` コールバックを通じてプロンプトが表示されます |130| `plan` | 計画モード | Claude はソースファイルを編集せずに探索と計画を行います。ファイル編集は自動承認されず、`canUseTool` コールバックを通じてプロンプトが表示されます |
141| `auto` | モデル分類承認 | モデル分類器がシェルコマンドやネットワークリクエストなどのアクションをレビューし、レビューする各アクションを許可またはブロックします。利用可能性と決定順序については [自動モード](/docs/ja/permission-modes#eliminate-prompts-with-auto-mode) を参照してください |131| `auto` | モデル分類承認 | モデル分類器がシェルコマンドやネットワークリクエストなどのアクションをレビューし、レビューする各アクションを許可またはブロックします。利用可能性と決定順序については [自動モード](/docs/ja/permission-modes#eliminate-prompts-with-auto-mode) を参照してください |
142 132
143<Warning>133> [!WARNING]
144 **サブエージェント継承:** サブエージェントは、その [`AgentDefinition`](/docs/ja/agent-sdk/typescript#agentdefinition) で `permissionMode` を設定し、親セッションが `default`、`dontAsk`、または `plan` モードにある場合を除き、親セッションの権限モードで実行されます。その場合でも、Claude Code は `"bypassPermissions"` 値を適用せず、`"auto"` 値はそのサブエージェントで [auto モードが利用可能](/docs/ja/permission-modes#eliminate-prompts-with-auto-mode) な場合にのみ適用します。サブエージェントは、親セッション自体が `bypassPermissions` モードにある場合にのみ、`bypassPermissions` モードで実行されます。`bypassPermissions` 例外には Claude Code v2.1.267 以降が必要です。134>
135> **サブエージェント継承:** サブエージェントは、その [`AgentDefinition`](/docs/ja/agent-sdk/typescript#agentdefinition) で `permissionMode` を設定し、親セッションが `default`、`dontAsk`、または `plan` モードにある場合を除き、親セッションの権限モードで実行されます。その場合でも、Claude Code は `"bypassPermissions"` 値を適用せず、`"auto"` 値はそのサブエージェントで [auto モードが利用可能](/docs/ja/permission-modes#eliminate-prompts-with-auto-mode) な場合にのみ適用します。サブエージェントは、親セッション自体が `bypassPermissions` モードにある場合にのみ、`bypassPermissions` モードで実行されます。`bypassPermissions` 例外には Claude Code v2.1.267 以降が必要です。
136>
137> サブエージェントは、メインエージェントとは異なるシステムプロンプトを持つ可能性があり、動作がより制約されていないため、`bypassPermissions` を継承すると、完全で自律的なシステムアクセスが付与されます。[モードが自動承認しないアクション](/docs/ja/permission-modes#actions-no-mode-auto-approves) は引き続き適用されます。
145 138
146 サブエージェントは、メインエージェントとは異なるシステムプロンプトを持つ可能性があり、動作がより制約されていないため、`bypassPermissions` を継承すると、完全で自律的なシステムアクセスが付与されます。[モードが自動承認しないアクション](/docs/ja/permission-modes#actions-no-mode-auto-approves) は引き続き適用されます。139### 権限モードを設定する
147</Warning>
148
149<h3 id="set-permission-mode">
150 権限モードを設定する
151</h3>
152 140
153クエリを開始するときに権限モードを一度設定するか、セッションがアクティブな間に動的に変更できます。141クエリを開始するときに権限モードを一度設定するか、セッションがアクティブな間に動的に変更できます。
154 142
155<Tabs>143**クエリ時**
156 <Tab title="クエリ時">144
157 クエリを作成するときに `permission_mode`(Python)または `permissionMode`(TypeScript)を渡します。145クエリを作成するときに `permission_mode`(Python)または `permissionMode`(TypeScript)を渡します。
158 146
159 <CodeGroup>147```python Python theme={null}
160 ```python Python theme={null}148import asyncio
161 import asyncio149from claude_agent_sdk import query, ClaudeAgentOptions
162 from claude_agent_sdk import query, ClaudeAgentOptions
163 150
164 151
165 async def main():152async def main():
166 async for message in query(153 async for message in query(
167 prompt="Help me refactor this code",154 prompt="Help me refactor this code",
168 options=ClaudeAgentOptions(155 options=ClaudeAgentOptions(
173 print(message.result)160 print(message.result)
174 161
175 162
176 asyncio.run(main())163asyncio.run(main())
177 ```164```
178 165
179 ```typescript TypeScript theme={null}166```typescript TypeScript theme={null}
180 import { query } from "@anthropic-ai/claude-agent-sdk";167import { query } from "@anthropic-ai/claude-agent-sdk";
181 168
182 async function main() {169async function main() {
183 for await (const message of query({170 for await (const message of query({
184 prompt: "Help me refactor this code",171 prompt: "Help me refactor this code",
185 options: {172 options: {
190 console.log(message.result);177 console.log(message.result);
191 }178 }
192 }179 }
193 }180}
194 181
195 main();182main();
196 ```183```
197 </CodeGroup>
198 </Tab>
199 184
200 <Tab title="ストリーミング中">185**ストリーミング中**
201 `set_permission_mode()`(Python)または `setPermissionMode()`(TypeScript)を呼び出して、セッション中盤でモードを変更します。新しいモードは、その後のすべてのツールリクエストに対して直ちに有効になります。これにより、制限的に開始して、信頼が構築されるにつれて権限を緩和できます。たとえば、Claude の初期アプローチを確認した後に `acceptEdits` に切り替えることができます。
202 186
203 <CodeGroup>187`set_permission_mode()`(Python)または `setPermissionMode()`(TypeScript)を呼び出して、セッション中盤でモードを変更します。新しいモードは、その後のすべてのツールリクエストに対して直ちに有効になります。これにより、制限的に開始して、信頼が構築されるにつれて権限を緩和できます。たとえば、Claude の初期アプローチを確認した後に `acceptEdits` に切り替えることができます。
204 ```python Python theme={null}
205 import asyncio
206 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
207 188
189```python Python theme={null}
190import asyncio
191from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
208 192
209 async def main():193
194async def main():
210 async with ClaudeSDKClient(195 async with ClaudeSDKClient(
211 options=ClaudeAgentOptions(196 options=ClaudeAgentOptions(
212 permission_mode="default", # Start in default mode197 permission_mode="default", # Start in default mode
223 print(message.result)208 print(message.result)
224 209
225 210
226 asyncio.run(main())211asyncio.run(main())
227 ```212```
228 213
229 ```typescript TypeScript theme={null}214```typescript TypeScript theme={null}
230 import { query } from "@anthropic-ai/claude-agent-sdk";215import { query } from "@anthropic-ai/claude-agent-sdk";
231 216
232 async function main() {217async function main() {
233 const q = query({218 const q = query({
234 prompt: "Help me refactor this code",219 prompt: "Help me refactor this code",
235 options: {220 options: {
246 console.log(message.result);231 console.log(message.result);
247 }232 }
248 }233 }
249 }234}
250 235
251 main();236main();
252 ```237```
253 </CodeGroup>
254 </Tab>
255</Tabs>
256 238
257<h3 id="mode-details">239### モードの詳細
258 モードの詳細
259</h3>
260 240
261<h4 id="accept-edits-mode-acceptedits">241#### 編集受け入れモード(`acceptEdits`)
262 編集受け入れモード(`acceptEdits`)
263</h4>
264 242
265ファイル操作を自動承認して、Claude がプロンプトなしでコードを編集できるようにします。その他のツール(ファイルシステム操作ではない Bash コマンドなど)は通常の権限が必要です。243ファイル操作を自動承認して、Claude がプロンプトなしでコードを編集できるようにします。その他のツール(ファイルシステム操作ではない Bash コマンドなど)は通常の権限が必要です。
266 244
277 255
278**使用時期:** Claude の編集を信頼し、より高速な反復を望む場合。プロトタイピング中や分離されたディレクトリで作業する場合など。256**使用時期:** Claude の編集を信頼し、より高速な反復を望む場合。プロトタイピング中や分離されたディレクトリで作業する場合など。
279 257
280<h4 id="don’t-ask-mode-dontask">258#### 質問しないモード(`dontAsk`)
281 質問しないモード(`dontAsk`)259
282</h4>260`canUseTool` を呼び出さずに、権限プロンプトを拒否に変換します。ただし、インストールした [mod](/docs/ja/plugins/mods/overview) は引き続き [それらのコールの一部](/docs/ja/permissions#precedence-among-rules-hooks-and-mods) を承認できます。`allowed_tools`、`settings.json` 許可ルール、またはフックで事前承認されたツールは通常どおり実行されます。作業ディレクトリ内のファイル読み取りや `Agent` への呼び出しなど、`default` モードで承認が不要なコールも実行されます。
283 261
284`canUseTool` を呼び出さずに、権限プロンプトを拒否に変換します。`allowed_tools`、`settings.json` 許可ルール、またはフックで事前承認されたツール、および `default` モードで承認が不要なコール(作業ディレクトリ内のファイル読み取りや `Agent` への呼び出しなど)は通常どおり実行されます。コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、ユーザーインタラクションが必要なツール、[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)、および [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は、許可ルールが一致する場合でも拒否されます。`PreToolUse` フックによる許可も、重要なパスの削除やネットワークパスからの読み取りをクリアしません。262コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、ユーザーインタラクションが必要なツール、[ネットワークパスからの読み取り](/docs/ja/permissions#network-paths)、および [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は、許可ルールが一致する場合でも拒否されます。`PreToolUse` フックによる許可も、重要なパスの削除やネットワークパスからの読み取りをクリアしません。
285 263
286**使用時期:** ヘッドレスエージェント用に固定された明示的なツールサーフェスを望み、`canUseTool` が存在しないことへの暗黙的な依存よりもハード拒否を優先する場合。264**使用時期:** ヘッドレスエージェント用に固定された明示的なツールサーフェスを望み、`canUseTool` が存在しないことへの暗黙的な依存よりもハード拒否を優先する場合。
287 265
288<h4 id="bypass-permissions-mode-bypasspermissions">266#### 権限バイパスモード(`bypassPermissions`)
289 権限バイパスモード(`bypassPermissions`)
290</h4>
291 267
292以下に示す場合を除き、プロンプトなしでツール使用を自動承認します。フックは引き続き実行され、必要に応じて操作をブロックできます。Linux および macOS では、Claude Code はこのモードで root として、または [認識されたサンドボックス](/docs/ja/permission-modes#skip-all-checks-with-bypasspermissions-mode) 外の `sudo` の下で起動することを拒否し、クエリは最初のターンの前に失敗します。268以下に示す場合を除き、プロンプトなしでツール使用を自動承認します。フックは引き続き実行され、必要に応じて操作をブロックできます。Linux および macOS では、Claude Code はこのモードで root として、または [認識されたサンドボックス](/docs/ja/permission-modes#skip-all-checks-with-bypasspermissions-mode) 外の `sudo` の下で起動することを拒否し、クエリは最初のターンの前に失敗します。
293 269
294<Warning>270> [!WARNING]
295 極度の注意を持って使用してください。このモードでは Claude はシステムへの完全なアクセスを持ちます。信頼できるすべての操作が可能な制御された環境でのみ使用してください。271>
296 272> 極度の注意を持って使用してください。このモードでは Claude はシステムへの完全なアクセスを持ちます。信頼できるすべての操作が可能な制御された環境でのみ使用してください。
297 `allowed_tools` はこのモードを制約しません。リストしたツールだけでなく、すべてのツールが承認されます。これらのコントロールは引き続き適用されます。273>
298 274> `allowed_tools` はこのモードを制約しません。リストしたツールだけでなく、すべてのツールが承認されます。これらのコントロールは引き続き適用されます。
299 * 拒否ルール、明示的な `ask` ルール、およびフックはモードチェック前に評価され、ツールをブロックできます。275>
300 * コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、ユーザーインタラクションが必要なツール、および [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は、引き続き `canUseTool` コールバックにフォールスルーします。276> * 拒否ルール、明示的な `ask` ルール、およびフックはモードチェック前に評価され、ツールをブロックできます。
301 * [クロスセッションメッセージングセーフガード](/docs/ja/permission-modes#skip-all-checks-with-bypasspermissions-mode) は引き続き適用されます。277> * コネクタツール([組織が `ask` に設定](/docs/ja/mcp#organization-controls-on-connector-tools))、ユーザーインタラクションが必要なツール、および [重要なパス](/docs/ja/permission-modes#critical-paths) をターゲットとする `rm` および `rmdir` の削除は、引き続き `canUseTool` コールバックにフォールスルーします。
302</Warning>278> * [クロスセッションメッセージングセーフガード](/docs/ja/permission-modes#skip-all-checks-with-bypasspermissions-mode) は引き続き適用されます。
303 279
304<h4 id="plan-mode-plan">280#### 計画モード(`plan`)
305 計画モード(`plan`)
306</h4>
307 281
308Claude はソースファイルを編集せずにコードベースを探索し、計画を作成します。読み取り専用ツールは `default` 権限モードと同じように実行されます。282Claude はソースファイルを編集せずにコードベースを探索し、計画を作成します。読み取り専用ツールは `default` 権限モードと同じように実行されます。
309 283
315 289
316**使用時期:** Claude に変更を実行せずに提案させたい場合。コードレビュー中や、変更が行われる前に承認する必要がある場合など。290**使用時期:** Claude に変更を実行せずに提案させたい場合。コードレビュー中や、変更が行われる前に承認する必要がある場合など。
317 291
318<h4 id="auto-mode-auto">292#### auto モード(`auto`)
319 auto モード(`auto`)
320</h4>
321 293
322分類器モデルが、シェルコマンドやネットワークリクエストなどのアクションを実行前にレビューし、レビューする各アクションを許可またはブロックします。auto モードに必要なモデルとプロバイダー、およびアクションを評価する順序については、[auto モードで権限プロンプトをなくす](/docs/ja/permission-modes#eliminate-prompts-with-auto-mode) を参照してください。294分類器モデルが、シェルコマンドやネットワークリクエストなどのアクションを実行前にレビューし、レビューする各アクションを許可またはブロックします。auto モードに必要なモデルとプロバイダー、およびアクションを評価する順序については、[auto モードで権限プロンプトをなくす](/docs/ja/permission-modes#eliminate-prompts-with-auto-mode) を参照してください。
323 295
328 300
329`set_model()`、`setModel()`、または `applyFlagSettings()` の呼び出し後の `default` モードへの変更には、Claude Code v2.1.299 以降が必要です。301`set_model()`、`setModel()`、または `applyFlagSettings()` の呼び出し後の `default` モードへの変更には、Claude Code v2.1.299 以降が必要です。
330 302
331<h2 id="related-resources">303## 関連リソース
332 関連リソース
333</h2>
334 304
335権限評価フローの他のステップについては、以下をご覧ください。305権限評価フローの他のステップについては、以下をご覧ください。
336 306