Agent SDK の権限設定|6段階の判定と安全な組み方

この記事の要点
- AI が道具を使うたびに、フック→禁止ルール→確認ルール→権限モード→許可ルール→確認の関数の順に判定される
- 禁止ルール(disallowedTools)はどのモードでも効く。許可リスト(allowedTools)は bypassPermissions を絞らない
- 無人で回すなら、許可リストと dontAsk モードの組み合わせで「書いた物以外は全部止める」形にする
活用例:社内の資料を読んで要約する AI エージェントを無人で回す
- 部署
- 情報システム・総務
- 使うもの
- Claude Agent SDK
- AIに任せる
- 資料の検索・読み取り・要約
- 人が決める
- 許可する道具の一覧・書き込みや削除を許すかどうか
AI エージェントを業務に入れるとき、最初に決めなければいけないのが 「AI に何をさせてよいか」 です。Claude Agent SDK の全体像は Claude Agent SDK とは で解説しました。
この記事では、公式ドキュメント「Configure permissions」(2026年11月9日確認)にもとづいて、Agent SDK で道具の使用を許可・禁止する仕組み と、安全な組み方を整理します。
結論:判定は6段階。禁止は早く、許可は遅く効く
AI が道具(ファイルの読み書き、コマンドの実行など)を使おうとするたびに、SDK は 次の6段階の順で判定 します。どこかで決まればそこで終わり、決まらなければ次へ進みます。
| 順番 | 段階 | できること |
|---|---|---|
| 1 | フック | 自分のプログラムで止める・次へ回す |
| 2 | 禁止ルール | 当てはまれば止める。どのモードでも効く |
| 3 | 確認ルール | 当てはまれば、最後の確認の関数へ回す |
| 4 | 権限モード | モードに応じてまとめて許可する |
| 5 | 許可ルール | 当てはまれば許可する |
| 6 | 確認の関数(canUseTool) | ここまでで決まらなかった物を、自分のプログラムで判断する |
大事なのは順番です。禁止ルールは4番の権限モードより前にある ので、すべてを許すモードでも止まります。逆に、許可された物は6番の確認の関数まで来ない ので、そこに書いた検査は素通りされます。

許可リストと禁止リストの書き方
許可リスト(allowedTools)は「確認なしで通す物」、禁止リスト(disallowedTools)は「必ず止める物」 です。書き方で効き方が変わります。
| 書き方 | 効き方 |
|---|---|
| 許可に Read・Grep | この2つは確認なしで通る。書いていない道具も消えるわけではない |
| 禁止に Bash | コマンド実行の道具そのものが AI から見えなくなる |
| 禁止に Bash(rm *) | コマンド実行は使えるが、書いたとおりの rm で始まる物はどのモードでも止まる |
| 禁止に * | すべての道具が見えなくなる |
外部の道具(MCP)は、mcp__サーバー名__ の後ろにだけ * を付けて、そのサーバーの道具をまとめて許可できます。サーバー名の部分に * は使えません。MCP のつなぎ方は Agent SDK で MCP をつなぐ で解説しています。
ファイルの場所で絞る書き方もあります。書き込み系の道具は、まとめて Edit(場所) で書く のが決まりです。Write(場所) と書いても、どの呼び出しにも当てはまりません。場所は、// で始めるとディスク上の絶対的な場所、/ で始めると作業フォルダの中の場所になります。
6つの権限モード
権限モードは、4番の段階でまとめて許可する範囲を決めるスイッチ です。
| モード | 動き | 向いている場面 |
|---|---|---|
| default | モードとしては何も許可しない。決まらない物は確認の関数へ | 1件ずつ判断したい |
| dontAsk | 確認が要る物はすべて止める(確認の関数も呼ばない) | 無人で回す |
| acceptEdits | 作業フォルダ内のファイル編集と、mkdir・mv などのファイル操作を許可 | 試作中で編集を信頼できる |
| bypassPermissions | ほぼすべて許可 | 隔離された環境だけ |
| plan | 調べて計画を立てる。ファイル編集は確認の関数へ回る | 大きな変更の前 |
| auto | 判定用の AI がコマンドや通信を1件ずつ見て許可・拒否する | 確認の手間を減らしたい |
モードは呼び出しの最初に決めるほか、会話の途中で切り替えることもできます。 最初は厳しく始めて、AI のやり方を確かめてから acceptEdits に緩める、といった使い方です。CLI 側のモードの考え方は Claude Code の権限モード でも解説しています。
いちばんの落とし穴:bypassPermissions は許可リストで絞れない
bypassPermissions のときは、許可リストに書いていない道具も通ります。 許可リストを Read だけにしても、コマンド実行や書き込みは止まりません。このモードで特定の道具を止めたいなら、禁止リストかフックを使います。
それでも止まる物はあります。禁止ルール、確認ルール、フックは4番より前で判定されるので有効です。また、ホームフォルダを丸ごと消すような 重要な場所の削除 は、どのモードでも自動では許可されません。
もう1つ、サブエージェントは親のモードを引き継ぎます。 親が bypassPermissions なら、子にも同じ強い権限が渡ります。子の指示は親と違うことが多いので、公式も注意を促しています。子の作り方は Agent SDK のサブエージェント を参照してください。
仕事で使うときの安全な組み方
無人で回す業務は、「許可リスト+dontAsk」が基本形 です。
- 許可リストに、その業務で使う道具だけを書く(例:Read・Glob・Grep)
- モードを dontAsk にする。書いていない物で確認が要る呼び出しは、すべて止まる
- 絶対に通したくない操作(削除など)は、禁止リストにも書いておく
- 許可した物の中身も確かめたいときは、フック(PreToolUse)で検査する。フックは許可された呼び出しにも動く
ただし、読み取り専用のコマンドや作業フォルダ内のファイルの読み取りのように、もともと確認が要らない操作は、許可リストに書かなくても動きます。 道具そのものを見せたくないときは、禁止リストで外します。
権限の考え方そのものは Claude Code の権限設定、フックの書き方は Claude Code のフック で解説しています。
まとめ
- 判定は フック→禁止→確認→モード→許可→確認の関数 の順。禁止は早く、許可は遅く効く
- bypassPermissions は許可リストで絞れない。止めたい物は禁止リストかフックで
- 無人の業務は 許可リスト+dontAsk。危ない操作は禁止リストにも書いておく
出典
この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。


