SDK権限
Claude Agent SDKは、アプリケーションでClaudeがツールを使用する方法を管理できる強力な権限制御を提供します。 このガイドでは、canUseToolコールバック、フック、およびsettings.json権限ルールを使用して権限システムを実装する方法について説明します。完全なAPIドキュメントについては、TypeScript SDKリファレンスを参照してください。
概要
Claude Agent SDKは、ツールの使用を制御するための4つの補完的な方法を提供します:- 権限モード - すべてのツールに影響するグローバル権限動作設定
- canUseTool コールバック - 他のルールでカバーされていないケースのランタイム権限ハンドラー
- フック - カスタムロジックによるすべてのツール実行の細かい制御
- 権限ルール (settings.json) - 統合されたbashコマンド解析による宣言的な許可/拒否ルール
- 権限モード - 全体的な権限動作の設定(計画、編集の自動承認、チェックのバイパス)
canUseTool- カバーされていないケースの動的承認、ユーザーに権限を求める- フック - すべてのツール実行のプログラム的制御
- 権限ルール - インテリジェントなbashコマンド解析による静的ポリシー
権限フロー図
処理順序: PreToolUse Hook → 拒否ルール → 許可ルール → 確認ルール → 権限モードチェック → canUseTool Callback → PostToolUse Hook権限モード
権限モードは、Claudeがツールを使用する方法のグローバル制御を提供します。query()を呼び出すときに権限モードを設定したり、ストリーミングセッション中に動的に変更したりできます。
利用可能なモード
SDKは4つの権限モードをサポートしており、それぞれ異なる動作をします:| モード | 説明 | ツールの動作 |
|---|---|---|
default | 標準権限動作 | 通常の権限チェックが適用される |
plan | 計画モード - 実行なし | Claudeは読み取り専用ツールのみ使用可能;実行前に計画を提示 (現在SDKではサポートされていません) |
acceptEdits | ファイル編集の自動承認 | ファイル編集とファイルシステム操作が自動的に承認される |
bypassPermissions | すべての権限チェックをバイパス | すべてのツールが権限プロンプトなしで実行される(注意して使用) |
権限モードの設定
権限モードは2つの方法で設定できます:1. 初期設定
クエリを作成するときにモードを設定:2. 動的モード変更(ストリーミングのみ)
ストリーミングセッション中にモードを変更:モード固有の動作
編集承認モード(acceptEdits)
編集承認モードでは:
- すべてのファイル編集が自動的に承認される
- ファイルシステム操作(mkdir、touch、rm等)が自動承認される
- 他のツールは通常の権限が必要
- Claudeの編集を信頼する場合の開発速度向上
- 迅速なプロトタイピングと反復に有用
- ファイル編集(Edit、Writeツール)
- Bashファイルシステムコマンド(mkdir、touch、rm、mv、cp)
- ファイルの作成と削除
権限バイパスモード(bypassPermissions)
権限バイパスモードでは:
- すべてのツール使用が自動的に承認される
- 権限プロンプトが表示されない
- フックは依然として実行される(操作をブロック可能)
- 極度の注意が必要 - Claudeがシステムへの完全なアクセス権を持つ
- 制御された環境でのみ推奨
権限フローにおけるモードの優先度
権限モードは権限フローの特定のポイントで評価されます:- フックが最初に実行 - 許可、拒否、確認、または継続が可能
- 拒否ルールがチェックされる - モードに関係なくツールをブロック
- 許可ルールがチェックされる - マッチした場合ツールを許可
- 確認ルールがチェックされる - マッチした場合権限を求める
- 権限モードが評価される:
bypassPermissionsモード - アクティブな場合、残りのすべてのツールを許可- その他のモード -
canUseToolコールバックに委譲
canUseToolコールバック - 残りのケースを処理
- フックは
bypassPermissionsモードでもツール使用を常に制御できる - 明示的な拒否ルールはすべての権限モードを上書きする
- 確認ルールは権限モードより前に評価される
bypassPermissionsモードはマッチしないツールに対してcanUseToolコールバックを上書きする
ベストプラクティス
- 通常の権限チェックによる制御された実行にはdefaultモードを使用
- 分離されたファイルやディレクトリで作業する場合はacceptEditsモードを使用
- 本番環境や機密データのあるシステムではbypassPermissionsを避ける
- 細かい制御のためにモードとフックを組み合わせる
- タスクの進行と信頼度に基づいてモードを動的に切り替える
canUseTool
canUseToolコールバックはquery関数を呼び出すときにオプションとして渡されます。ツール名と入力パラメータを受け取り、許可または拒否の決定を返す必要があります。
canUseToolは、Claude Codeがユーザーに権限プロンプトを表示する場合に発動します。例えば、フックと権限ルールがそれをカバーしておらず、acceptEditsモードでない場合です。
インタラクティブなツール承認の実装方法を示す完全な例は以下の通りです: