Claude Agent SDKは、Claudeがツールを使用する方法を管理するための権限制御を提供します。権限モードとルールを使用して自動的に許可される内容を定義し、canUseTool コールバックを使用してランタイムでその他すべてを処理します。
このページでは権限モードとルールについて説明します。ユーザーがランタイムでツールリクエストを承認または拒否するインタラクティブな承認フローを構築するには、承認とユーザー入力の処理を参照してください。
Claudeがツールをリクエストすると、SDKは以下の順序で権限をチェックします:
フック
最初にフックを実行し、許可、拒否、または次のステップへの続行が可能です
権限ルール
settings.jsonで定義されたルールを以下の順序でチェックします:まずdenyルール(他のルールに関係なくブロック)、次にallowルール(一致した場合に許可)、最後にaskルール(承認を求める)。これらの宣言的ルールにより、コードを書かずに特定のツールを事前承認、ブロック、または承認を要求できます。
権限モード
アクティブな権限モード(bypassPermissions、acceptEdits、dontAskなど)を適用します
canUseTool コールバック
ルールやモードで解決されない場合、canUseTool コールバックを呼び出して判断を求めます
このページでは権限モード(ステップ3)、つまりデフォルトの動作を制御する静的設定に焦点を当てています。その他のステップについては:
settings.jsonで宣言的な許可/拒否ルールを設定します。権限設定を参照してください。権限モードは、Claudeがツールを使用する方法をグローバルに制御します。query()を呼び出す際に権限モードを設定するか、ストリーミングセッション中に動的に変更できます。
SDKは以下の権限モードをサポートしています:
| モード | 説明 | ツールの動作 |
|---|---|---|
default | 標準的な権限動作 | 自動承認なし;一致しないツールはcanUseToolコールバックをトリガーします |
acceptEdits | ファイル編集を自動承認 | ファイル編集とファイルシステム操作(mkdir、rm、mvなど)が自動的に承認されます |
bypassPermissions | すべての権限チェックをバイパス | すべてのツールが権限プロンプトなしで実行されます(注意して使用してください) |
plan | 計画モード | ツールの実行なし;Claudeは変更を加えずに計画を立てます |
サブエージェントの継承:bypassPermissionsを使用する場合、すべてのサブエージェントがこのモードを継承し、オーバーライドできません。サブエージェントはメインエージェントとは異なるシステムプロンプトを持ち、制約の少ない動作をする可能性があります。bypassPermissionsを有効にすると、承認プロンプトなしで完全な自律的システムアクセスが付与されます。
クエリを開始する際に権限モードを一度設定するか、セッションがアクティブな間に動的に変更できます。
acceptEdits)ファイル操作を自動承認するため、Claudeはプロンプトなしでコードを編集できます。その他のツール(ファイルシステム操作ではないBashコマンドなど)は通常の権限が必要です。
自動承認される操作:
mkdir、touch、rm、mv、cp使用する場面: Claudeの編集を信頼し、より高速なイテレーションを望む場合。プロトタイピング中や隔離されたディレクトリで作業する場合など。
bypassPermissions)プロンプトなしですべてのツール使用を自動承認します。フックは引き続き実行され、必要に応じて操作をブロックできます。
細心の注意を払って使用してください。このモードではClaudeはシステムへの完全なアクセス権を持ちます。すべての可能な操作を信頼できる制御された環境でのみ使用してください。
plan)ツールの実行を完全に防止します。Claudeはコードを分析して計画を作成できますが、変更を加えることはできません。Claudeは計画を確定する前に要件を明確にするためにAskUserQuestionを使用する場合があります。これらのプロンプトの処理については、承認とユーザー入力の処理を参照してください。
使用する場面: Claudeに変更を実行せずに提案させたい場合。コードレビュー中や、変更が行われる前に承認が必要な場合など。
権限評価フローのその他のステップについて:
settings.jsonでの宣言的な許可/拒否ルールWas this page helpful?