第3章

ガードレールと権限モデル

サブエージェントを作成し呼び出す方法は第4章で実際に手を動かしながら習得する。しかしその前に、「このエージェントは何をしてよく、何をしてはいけないか」を先に定めておかなければ、実習中も実務でも事故が起きる。本章では、第2章で少し触れた「ガードレール」を実際にどう設計するかを扱う。

本章で扱う内容
  • ガードレールがなぜ必要なのか(自律性が大きくなるほどミスの波及範囲も大きくなる)
  • 読み取り・書き込み・破壊的作業の3段階でリスクを分類する方法
  • toolsフィールドでサブエージェントに最小権限のみを付与する方法
  • オーケストレーターが人の承認を必ず待たなければならない地点(ゲート)の設計
  • worktree・sandboxで並列作業を物理的に分離する理由
  • 事故が起きた後「何があったのか」を追跡するための最小限のログ習慣

なぜガードレールが必要なのか

第2章では、ハーネスを「馬が思うままにどの方向にも走り出さないよう抑える馬具」に例えた。ガードレールは、その馬具の中でも特に「この方向へは絶対に行ってはならない」という柵に当たる。サブエージェントがファイルを読んで要約する程度であればミスをしても元に戻しやすいが、ファイルを削除したりコミット・デプロイまで自動で行うようになると、一つのミスが取り返しのつかない結果につながる。

問題は、「能力」と「リスク」が同じ方向に大きくなることである。エージェントにより多くのツール・より広い権限を与えるほど処理できる仕事は増えるが、誤った判断をしたときの被害範囲も同時に広がる。ガードレールはこの二つを切り分ける。「できること」は広く開けておきつつ、「人の確認なしに実行してよいこと」は狭く制限するのである。

ガードレールの目的は、エージェントを信用しないことではなく、ミスの波及範囲を人が対処できる大きさにあらかじめ切り分けておくことである。

危険な作業を3段階に分類する

すべての作業を同じ強度で統制すると、実務で使えないほど遅くなってしまう。実際には、作業を元に戻せる度合いに応じて3段階に分け、それぞれ異なる扱いをするのが現実的である。

段階デフォルトのポリシー
読み取り(Read)ファイルの読み込み、コード検索、Web参照おおむね自由に許可(元に戻す必要がない)
書き込み(Write)ファイルの作成・修正、ローカルコミット許可はするが結果をレビュー(gitで元に戻せる範囲)
破壊的/外部影響(Destructive/External)ファイル・ブランチの削除、強制プッシュ、デプロイ、決済、外部へのメッセージ送信人の明示的な承認なしには絶対に実行しない
リスク判断フローチャート
この作業は元に戻せるか?
Yes — 元に戻せる
読み取り専用
最小権限のtoolsフィールド
tools: Read, Grep
書き込み(可逆)
最小権限 + 監査ログ
gitで元に戻せる
No — 元に戻せない
破壊的 / 外部影響
人の承認ゲートが必須
自動実行は絶対に禁止
明示的な確認後にのみ進める

この3段階分類は、本ハンドブックが参照したワークスペース文書の実際の規則とも一致する。第5章で扱った/syncパイプラインが.pem.key.envのような機微なファイルをコミット直前に遮断する「Sensitive File Guard」や、強制プッシュ・--no-verifyを明示的に禁止する規則が、まさに破壊的作業段階に当たるガードレールである。

最小権限の原則 — toolsフィールド

第4章§2の実習で作成したreviewerサブエージェントのfrontmatterを思い出してみよう。tools: Read, Grepのように、許可するツールを明示的に列挙した。これがサブエージェント単位の最小権限の原則である。reviewerにはそもそもWriteツールがないため、プロンプトがどれほど曖昧に解釈されても、ファイルを修正する手段自体が存在しない。

この原則を実際の事故シナリオで見てみると、なぜ重要なのかが明確になる。もしreviewerにWrite権限まで習慣的に開放していたとすると、「このファイルをレビューして改善して」というやや曖昧な依頼を受けた際に、reviewerが「改善」を「直接修正」と解釈し、原本を上書きしてしまう可能性もある。toolsフィールドで権限をあらかじめ狭めておけば、こうした解釈の食い違いがそもそも事故につながらない。プロンプトの品質に頼るのではなく、構造的に防ぐのである。

権限は「この役割が最大でどこまでできるか」ではなく、「この役割が正常に機能するために最小限何が必要か」を基準に定める。後で必要になったときに広げるのは簡単だが、最初から広く開けておいた権限を事故が起きた後で狭めるのはすでに手遅れである。
最小権限の原則 — 3段階権限レベルの階層図
破壊的作業 例: git push, rm -rf デプロイ、決済、外部メッセージ 書き込み作業 例: ファイル修正、PR作成 ローカルコミット、設定変更 読み取り作業 例: ファイル読み込み、検索 Web参照、ログ閲覧 ▲ 最小権限の原則(Least Privilege) — 必要な権限のみ付与

人による承認ゲート

第2章では、オーケストレーターを「ユーザーとの確認が必要な地点(ゲート)で進行を止める役割」と定義した。ガードレール設計で最も重要な問いは、「そのゲートを正確にどこに置くか」である。頻繁に止まりすぎるとエージェントに仕事を任せる意味がなくなり、止まらなさすぎると破壊的作業まで静かに通り過ぎてしまう。

実務で検証された基準は単純である。§2の「破壊的/外部影響」段階に当たる作業の直前では必ず止まり、それより下の段階は事後レビューで十分とする。例えば/syncパイプラインはコミット・プッシュ・PR作成までは自動で進めるが、PRを実際にマージしたりプロダクションにデプロイしたりする段階では別途人の承認を要求するよう設計されている。「どこまでは信頼して任せ、どこからは必ず人が見るか」という境界線を明示的に引いておくことが、ゲート設計の核心である。

承認ゲート動作フローチャート
ユーザー要求 エージェント動作 リスク分類 自動判定 リスク 判定? 低い 自動実行 Read / Write 高い 承認待ち 人による確認 実行 承認 結果 応答返却 ※ 破壊的/外部影響作業は必ず人による承認ゲートを経なければならない

分離 — worktreeとsandbox

第4章§2の上級シナリオ(P-1)で、「同じWorkspaceに複数のエージェントを割り当てると認知的重複(cognitive overlap)が生じうる」と警告した。これもガードレールの一形態である。複数のエージェントが同じファイル・同じgit履歴を同時に触ると、一つのエージェントのミスが他のエージェントの作業コンテキストまで汚染しかねない。

worktree(分離されたgit作業ディレクトリ)や別のsandbox環境で各エージェントを実行すれば、たとえ一つのエージェントが誤った判断をしても、その影響が自分の作業空間の外に漏れ出ることはない。複数のエージェントを並列で動かすときは、「同じ空間を共有させるか、物理的に分けるか」を常に先に決めておかなければならない。

監査ログと可観測性

ガードレールが事前予防だとすれば、監査ログは事後追跡である。完璧なガードレールは存在しないため、事故が起きたときに「いつ、どのエージェントが、どのツールで、何をしたか」を遡って確認できる最小限の記録が必ず必要となる。第5章で扱ったmemory/MEMORY.mdがセッション間のコンテキストを記録する用途であれば、TaskCompletedフックで実行されるaudit.tsのような監査スクリプトは、「規則に反する変更がなかったか」を毎回機械的に検査する可観測性の装置である。参考までに、このワークスペースのフック配線(2026-08-24時点)を整理すると、PreToolUseではgateguard-fact-force.ts(Edit|Write|MultiEdit)とagent-model-gate.ts(Agent)が、PostToolUse(Write|Edit)とTeammateIdleではpost-write-lifecycle-check.tsが動作し、audit.tsはタスク完了時点(TaskCompleted)で実行される。

第4章で扱うClaude Desktop Appでは、このようなフックは発火しない。Desktopアプリ中心で作業するチームの場合、監査ログが「動いていると思っていたら実は一つも動いていなかった」という状況が実際に起こりうる。ガードレールを設計する際は、必ず「このポリシーが自分の使うツールで実際に発動するか」まで確認しなければならない。
監査ログの構造と監査フロー
監査ログの構造 log_entry timestamp ISO 8601 agent reviewer action Read/Grep result ok / deny context filepath… 監査フロー エージェント動作 tool呼び出し ログ記録 audit.ts 検査 / 分析 規則違反? 正常 記録保存 違反 警告 / 通知 事後レビュー チームレビュー フィードバックループ — ガードレールの改善 ※ 完璧なガードレールは存在しない — 事故発生時に追跡できなければならない
一文でまとめると: ガードレールとは、リスクに応じて権限を差別化して付与し(§2·§3)取り返しのつかない地点の手前では必ず人が確認し(§4)並列作業は物理的に分離し(§5)すべてが失敗したときのために記録を残しておく(§6)という4つの習慣である。第4章からは、この原則を実際の実習コードの中に適用しながら進めていく。

参考動画