AI・信頼性・評価
多数のAIエージェントの統治と、爆発半径の封じ込め
目次
同じ仕事を、二体が数十秒ちがいで拾った。片方が処理し、もう片方も気づかず処理し、同じ相手に二重に返した。誰も間違えていない。ただ、二体を同時に走らせて、あいだの調停を設計していなかった。それだけで事故は起きる。
エージェントを一体増やすのは一瞬だ。プロセスをもう一つ立ち上げればいい。知識と意図を外部化しておけば、その前提は何体とでも共有できるから、二体目を増やす障壁は、もう無いに等しい。だがその規律は、一体の相手と意図を詰めていく設計だ。相手がN体になった途端、同じ対話も監督も回らない。増やす作業と、増えた数を統べる作業と、その速さで壊せる範囲を縛る作業は、それぞれ別の仕事だ。N体を一人でどう統べるのか。そして、速く作れるものは速く壊せる。その爆発の半径を、どう閉じ込めるのか。この二つは、AIが来て初めて現れた問題ではない。
多数のエージェントを、全部見ずに例外だけ見て統べる
素朴な答えから始める。何も足さないことだ。全体を並列で開放し、各エージェントに完全な自律を与える。スループットと幅は最大で、いちばん速い。ただし調停を一つも置いていないから、二体が同じ仕事を拾えば二重作業になり、同じ共有状態を上書きすれば壊れる。冒頭で起きた事故そのものだ。途中で固まった一体は、何も知らせずに止まる。だから気づけない。
なら調停を足せばいい。共有状態に触れる仕事に、ロックや claim を置いて奪い合いを一点に絞る。これが中央の相互排他だ。予期した競合点を決定的に潰せるから、冒頭の二重処理はこれで消える。だが一つ直すと、次の破れ方が見えてくる。ロック自体がクラッシュを生き延びる仕組み(奪取のためのTTL)を要し、共有面とレイテンシが増える。何より、守れるのは「想定した」競合だけだ。かといって安全側に倒して全体を直列化すれば、そもそもNにした意味が消える。もう一つの道は、触れ合う面そのものを無くすことだ。OpenHandsは仕事のセッションごとに隔離されたコンテナを立て、イベントストリームの全アクションをその中で実行する1。同じ状態を共有しないなら、競合は起きようがない。ただし、この論文が隔離しているのは仕事のセッションであって、エージェントではない。同論文の多エージェント機構は、あるエージェントが別のエージェントへ subtask を委譲する形で、同じ囲いの中で協働させる1。境界の引き方しだいで、隔離はN体の競合には届かない。同じリポジトリ、同じ待ち行列を触るなら、最後の書き戻しで衝突する。
それでも不安なら、残る手は人間が全部見ることだ。全アクションに同期の監督を挟む。最も安全で、文脈も責任も人が持つ。だが、まったくスケールしない。自律プロセスを何体も並べておいて「全部の出力を毎回見る」なら、監督者が単一のボトルネックになり、Nにした意味は消える。安い労働が余っている今、全数を人が見るのは最大の浪費だ。
放任は調停を欠いて事故り、相互排他は想定内しか守れず、隔離は本当に共有された状態には届かず、全数監督は回らない。この破れ方が、そのまま初期値の形を決める。監督を「全アクション審査」でなく「例外ベース+不変条件」で設計する。互いに触れないステートレスな仕事は、完全自律で並列に走らせる。同じ状態に触れる仕事は、その競合点だけに相互排他をかける。全体は直列化しない。不可逆・対外・高被害だけを人間ゲートへ通す。この「正常は自動で回し、逸脱だけを人が見る」という発想自体は新しくない。起こりにくい異常を人が見張り続けることは人間には不可能なので自動の警報系に任せるほかない、という指摘は1983年からある2。Googleのサイト信頼性工学(SRE)チームは、この設計をエラーバジェットと例外ベースの監視として大規模に回していると報告している3。要点は、スケールさせたいなら「全部見る」でなく「例外だけ見る」に設計を落とすことだ。
ただし、放任を選ぶときも「放置」にはしない。自律プロセスは、止まったことを自分から知らせない。だから、生きているかを明示信号にする。ハートビートは「ターンが終わった」を意味するだけで「仕事が進んだ」ではない。進捗はコミットや成果物の更新で測る。そして競合は、規律(気をつけると約束する)でなく機構(構造的に奪い合えなくする)で排除する。
可逆性と被害で仕分け、届く先を縮めて爆発半径を縛る
もう一つの裏に移る。自律実行が安くなると、同じ速さで壊せるようにもなる。非決定なアクターは、指示していない危険な行為を、もっともらしく実行しうる。縛り方は、いつ・どこで守るかで四つに分かれる。事後に戻す、実行前に止める、そもそも持たせない、そして届く先を縮める、だ。実運用のコーディング・エージェント・ハーネスは、このどれを既定に置くかで現に分岐している。
一つ、事後の可逆性で受ける。自由に実行させ、壊れたら戻す。速度と自律を最大化でき、版管理・undo・ステージングがあれば大半の事故は巻き戻せる。これを既定に振り切ったのがAiderで、AIがファイルを編集するたびに説明つきのコミットを打ち、undoコマンドで即座に取り消せるようにしている4。Clineも同じ方向で、ツールを使うたびに影のgitリポジトリへコミットするチェックポイントを持ち、「失敗の代償をほぼゼロにする」ことが自律を許容する安全予算になると説明する5。可逆性は待つものではなく、機構で製造できる。だが効くのは「実際に可逆な」行為だけだ。対外送信・破壊・秘密の露出はすり抜ける。送ったメール、消したディスク、公開してしまった漏洩は、取り消せない。しかも、信号を出さない破壊には、戻す前に気づけない。
二つ、実行前の人間承認ゲートを置く。不可逆・対外・高被害だけを止める。最悪ケースを確実に閉じられ、責任と文脈を人が持つ。ここで効くのは、ゲートがモデルの外側にあることだ。Claude Codeの権限規則は、拒否・確認・許可の順に評価され、最初に一致した規則が結果を決める。規則の具体性は順序を変えない6。Clineは既定で「ファイルの編集と端末コマンドの一つ一つに承認を要求する」とし、自動承認は明示のトグルとして別に置く。ただし同じ公式ドキュメントは、チェックポイントがあるなら「変更を一つ一つ吟味して承認する代わりに、速く走らせて問題が起きたら戻せばいい」と書き、自動承認を前提にした手順を勧める5。可逆な行為の同意をどこへ置くかは、一社の中でも定まっていない。そしてこの手の弱点は共通で、レイテンシと人間ボトルネックを足すうえ、捕まえられるのは「事前に危険と分類した」行為だけだ。見落とした不可逆行為は通ってしまう。過剰にゲートすれば、自律の意味を殺す。
三つ、能力そのものを持たせない。最小権限で、危険な力を構造的に奪う。書き込み経路がなければ壊せない。最小権限とfail-safeな初期値は、SaltzerとSchroederが1975年にまとめた安全設計の基本原則だ(fail-safe な既定は同論文がE. Glaserの1965年の提案として挙げている)7。原典は最小権限の効能を、主として事故や誤りによる被害を抑えることだと書いている。攻撃者を想定しなくても、この原則はそのまま当たる。アプリ層での実装はこうなる。Claude Codeでツール名だけを書いた拒否規則は、そのツールを、呼ばれた時点で止めるのではなく、モデルの文脈から丸ごと取り除く。見えない道具は選べない。ただし同じドキュメントは、この丸ごと取り除く扱いに例外がひとつあることも書いている。会話を終了する道具だけは、他の道具が残っているかぎり拒否規則で取り除けず、確認規則でも尋ねられない6。能力を構造的に奪う設計にも、機構の側が最後に一つだけ残す口がある。ただし硬直的で、正当に必要になった行為まで塞ぐ。欲しくなったら、監査つきの経路をあらためて作り直す必要がある。
四つ、届く先そのものを縮める。能力は取り上げず、行為が着地できる世界のほうを小さくする。ここが、実運用ハーネスでいちばん広く合意が取れた場所だ。ただし囲いの中身を外から確かめられるか、という別の穴もある。Willisonは、コーディング・エージェントが実装するサンドボックスについて、信用に足るだけの文書をまだ見ていないと書いた。もっとも同じ記事は直後に追記を置き、AnthropicがClaude CodeのSafe YOLOモードについて文書を持っていることを本人が挙げている8。OpenAIのCodex CLIは、サンドボックスを読み取り専用・作業領域書き込み・制限解除の三段に切り、OSが持つ機構でそれを強制する。macOSはSeatbelt、LinuxとWSL2はbubblewrapだ9。Codex CLIはネットワークも既定では切っており、開けるには設定で明示的に有効にする必要がある。OpenHandsは仕事のセッションごとに隔離されたDockerコンテナを立ち上げ、イベントストリームの全アクションをその中で実行する。動機は安全だけではなく、同じ環境を再現できることも含まれる1。発想が違う。エージェントを賢く安全にするのではない。失敗が着地できる範囲を縮めて、失敗を安くする。
なぜ説得ではなく封じ込めなのか。Simon Willisonは、データが盗まれる条件を三つの重なりとして名指した。私的なデータへのアクセス、攻撃者が仕込みうる信用できない入力、そして外部へ通信する能力である8。三つが揃った時点で、指示の書き方では塞げない。承認ダイアログも同じで、押すのは人だが、押すべきかを判断する材料は汚染されうる文脈の側にある。三本目の脚である外部通信を、機構で折るほうが確実だ。Willison自身の運用則も同じ向きだ。危険な自動承認モードをどうしても使うなら、選択肢は三つだと彼は書く8。ファイルと秘密とネットワーク接続を制限したサンドボックスに閉じるか、他人の計算機の上で走らせるか、リスクを取るか、である。彼自身は二つ目を好み、GitHub Codespaces を挙げる。何か起きても最悪なのは、その環境に持ち込んだコードが攻撃者に持ち出されるか、つないだリポジトリへ悪いコードが送り込まれるところまでだからだ。インターネットアクセスを信用できるホストの一覧に絞ることは、私的なソースコードの流出を防ぐ優れた方法だ、とも書く8。Claude Codeの権限ドキュメントは、この点をはっきり書いている。サンドボックスがかかるのはBashコマンドとその子プロセスだが、その範囲では、プロンプトインジェクションがモデルの判断を迂回したあとでも制限は効く、と6。
ではアプリ層のゲートは要らないのか。要る。両者は精度が違う。アプリ層の規則は「この編集は許すが、あのパスへの書き込みは止める」という細かさを書けるが、ハーネスが見ていない経路には届かない。同じ権限ドキュメントがその穴を自分で明記している。読み書きの拒否規則は、ファイルを自分で開くスクリプトのような任意のサブプロセスには適用されない、と6。そして続けて、あらゆるプロセスに対してパスへの到達を止めたいならサンドボックスを有効にせよ、と書く。逆にOS層の境界は堅いが粗い。書き込みを許した領域の中で、消してよいファイルと消してはいけないファイルの区別はつかない。だから重ねる。細かい線引きはアプリ層、最後の壁はOS層に置く。同じ文書が両方を使えと言うのは、この非対称のためだ6。
初期値は「可逆か × 被害の大きさ」の二軸で分ける。担い手を決める仕分けでは、不可逆という一語が「戻せない」と「外したとき被害が大きい」の両方を畳み込んでおり、縛る力は機構・指示・人手の順に強い。実行時の一操作ごとの既定へ落とすには、その不可逆を二つの軸へ分解しておく必要がある。
| 可逆性 × 被害 | 初期対応 |
|---|---|
| 可逆・低被害 | 自由に実行させる。版管理で足りるので、承認は無駄だ。 |
| 可逆・高被害(または対外) | ステージングで試すか、人間が最終トグルを押す。 |
| 不可逆・低被害 | 実行させる。戻せなくても損害が小さく、ゲートを置くほうが高くつく。 |
| 不可逆・高被害(対外公開・破壊・秘密露出) | 能力を構造的に持たせないか、届く先を縮めた囲いの中でだけ動かす。どうしても要るなら実行前の承認ゲート+監査を通す。 |
四つは排他ではない。Codex CLIは、囲いと同意を独立した二本のダイヤルとして置く。サンドボックスが「何が起こりうるか」を決め、承認ポリシー(on-request/never。かつて選べた untrusted は2026年9月時点で退役している)が「何をしてよいか」を別に決める。既定のon-requestは、囲いの中では黙って働き、境界を越えるときだけ聞く、という形だ9。自律を一本のスライダで上げ下げしない。縛る対象を、行為の一つ一つではなく境界の側へ置き換えている。同意を求める回数は減り、最悪ケースは縮む。
この「可逆な決定は速く、不可逆な決定だけ慎重に」という切り分け自体は、ソフトウェア工学が変更管理・カナリア・段階的ロールアウトとして積んできたものだ。同じ論理構造は経営判断にもある。Amazonのジェフ・ベゾスは株主への年次書簡で、意思決定を「一方通行の扉」と「両開きの扉」に分けた。可逆な側である両開きの扉は、判断力のある個人か小さなグループが速く決められるし、そう決めるべきだ、と書いている10。ベゾスは同じ箇所に注を付けて、逆向きの誤りにも触れている。軽い手続きで不可逆な判断を常習的に下す企業は、大きくなる前に絶滅する、と10。あちらは組織の決定、こちらは実行時の操作だが、可逆性で重みを変えるという骨格は同じだ。要点は、指示でなく構造で縛ることだ。危険な力は「使わないと約束する」でなく「持たない」で閉じる。同じ要点を、Willisonが引く設計パターンの論文は一文にしている。信用できない入力を取り込んだ後は、その入力が結果を伴う行為を引き起こせないよう縛るほかない、と8。そして持たせざるをえない力は、届く先を縮めた囲いの中でだけ使わせる。
見落としの外側では、統治は解けていない
だが、読者はこう反論できる。「例外だけ見て、危険は構造で塞ぐ。なら統治は解けたのでは」。解けていない。歴史が半分しか照らさない部分が残る。
相互排他が潰せるのは、設計時に「想定した」競合だけだ。承認ゲートが止められるのは、事前に「危険と分類した」行為だけだ。可逆性で受けられるのは、「実際に可逆な」行為だけだ。三つとも、見落としの外側では効かない。そして、密結合していて相互作用の複雑な系では、設計者が予期しなかった経路で事故が連鎖し、その起き方を事前に数え尽くせない、と社会学者のチャールズ・ペローは論じた11。列挙に頼る防御は、列挙の穴の分だけ漏れる。囲いだけが、この型の漏れ方をしない。危険を数え上げずに済むからだ。ペローの枠組みで言えば、囲いは二つの条件のうち結合の側を緩める。事故の連鎖が要求する密結合を、境界で断つ11。だが囲いにも別の限界がある。境界の内側で起きることは止められないし、その境界をどこに引くかは、結局また人の見立てである。囲いそのものにも古い留保がある。SaltzerとSchroederは、共有系でプログラムを完全に封じ込めるのは非常に困難か、おそらく不可能だと書いた7。共有領域への書き込み以外の、もっと微妙な手段で外へ信号を出しうるからである。ペローの議論はもう一段強い。警告や安全装置を積むという工学の常道そのものが失敗し、予防策は複雑さを足すことで新種の事故を生みうる、というのが中心の主張である11。層を重ねる本稿の設計も、その射程の内側にある。
漏れるのは、見落としの外側だけではない。設計者が自分で開けておいた穴もある。実運用のハーネスを並べてみると、完全に閉じきったものは見当たらない。Claude Codeのフックは、終了コード2で初めてツール呼び出しを止める。1を返しても処理はそのまま進むので、ポリシーを強制したいなら2を使え、とドキュメント自身が警告している12。Codex CLIには制限解除モードがあり9、Aiderは自動コミットを切るオプションを持つ4。逃げ道は事故ではなく、仕様だ。しかも、開けるのが利用者だとも限らない。同じAiderは、2026年8月時点の公式ドキュメントによれば、コミットを打つとき手元のリポジトリに仕掛けられたpre-commitフックを既定で飛ばす。--no-verify を付けて回すのが既定側で、検査を走らせたいほうが明示的に有効化する4。ゲートを置いたのは人間で、それを迂回すると決めたのは道具の既定値だ。開く側へ倒れるのは、終了コードの解釈だけではない。
そして、逃げ道があること自体は責められない。閉じた側に倒れて自律ループを恒久的に止めるほうが損害の大きい位置は実在するからだ。どちらへ倒すかはゲートごとの判断になる。ここで問うのは、置くと決めた扉をどう運用するかのほうだ。Claude Code向けのフック集ECCは、そこを明示的に設計している。多くのブロックのメッセージには解除方法を同梱する。同じブロックが所定の回数を超えると、長文の説明を一行に圧縮する。ゲート自身が食うコンテキストまで設計の対象にしている13。だから問いは「fail-closedか否か」ではない。誰が、どれだけ目立つ形で、その扉を開けられるか、である。ゲートは、解除手順と文量まで設計して初めて運用に耐える。
では、監督者自身は痩せていかないのか。Bainbridgeが1983年に名指しした劣化の原因は、退屈ではなく、使わないことである。手を動かさなくなった技能はそれだけで衰え、長期記憶からの引き出しやすさも使用頻度に従う。原典が書いているのはそういう機構だ2。原典はこの拡張を自分で書いている。異常時だけ上位者を呼ぶ体制について、その上位者も知識を見直さず要となる手技を練習していなければ引き継げない、と述べる2。この指摘は、正常時にすることのない受動的な見張りだけの話ではない。
さらに重い反証がある。ParasuramanとManzeyは、自動化に任せた側の監視が落ちる現象(complacency)が複数タスク負荷の下で起きると報告した。手作業が自動化された作業と注意を奪い合う状況だ14。しかも彼らは、complacency は単純な練習の反復では克服できず、判断の依存にあたる automation bias のほうは訓練や教示では防げない、と述べている。N体を並べて例外だけを見るという本節までの設計は、その条件に当たる。監督者は自分の手でも仕事をしており、その手作業が、任せた側の監視と注意を奪い合うからだ14。しかもこの効果は、熟達では抜けられない。原典は、飛行経験を積んだパイロットでも経験ある航空管制官でも同じ効果が出た研究を挙げる。人手を最後の関所に据える設計は、どれもこの弱点を抱える。
だから、痩せるものと鍛えられるものを分けて置く。痩せるのは、AIが失敗したとき自分の手で深部に降りる腕だ。不使用で確実に落ちる側なので、時々は自分の手で書き、自分の手で追って取り戻すほかない。原典も、交代のたびに短時間は手動で操作させることを一案として挙げる2。恩恵を打ち消す代価ではなく、恩恵を受け続けるための整備である。原典は、手動介入がめったに要らない最も成功した自動化ほど、人間の訓練に最大の投資が要るかもしれない、と結んでいる2。鍛えられうるのは、どこに線を引くか・どの失敗の型を疑うかという判断のほうだ。生成が安くなったぶん、その判断を当てる機会はむしろ増える。物差しも手元にある。例外ベース監視3、最小権限7、可逆性の切り分け10といった各分野の定石だ。
ただし後者も、自動では鍛わらない。判断が研がれるのは、下した線引きを結果と突き合わせ、外した型を数えたときだけだ。突き合わせのない承認が鍛えるのは、判断ではなく承認の速さのほうである。complacencyが効くのはこの点である。原典は、単純に練習を重ねるだけでは克服できないと報告している。練習の量では消えないと述べたうえで、注意の配分そのものを訓練する方法なら効きうる、と続けている14。実験でも、失敗しうると教えられただけの群より、訓練中に実際の失敗を経験した群のほうが complacency が有意に低かった。だから監督者の側にも構造が要る。見る対象を減らし、そこだけに注意を割ける形にしておく。原典の実験でも、他の職務を持たず自動化の後詰めだけを担った条件では、検出はほぼ完全だった14。これは机上の処方ではない。SREの運用記録は、アラートが多すぎると担当者が選別に時間を取られ、実際に利用者へ影響した問題のほうを見落としたと書いている3。是正はSLO目標を一時的に緩め、メール通知を止めることだった。統べる設計は、監督者の腕を保つ設計でもある。
だから使い分けだ。想定できる競合、分類できる危険、実際に可逆な行為については、昔からの仕組みがそのまま効く。統べたいなら全部でなく例外を見る。縛りたいなら約束でなく構造に頼り、届く先そのものを縮めておく。だが、見落としの外側は、いまも人間が最後に立って引き受けている。古い規律が半分しか照らさない残りが、ここにある。そのうえで、爆発を起こさないという約束は、ここまでのどの仕組みもしていない。約束できるのは半径だ。どれだけ速く壊れても、その半径が承認した範囲を出ないように、構造で縛っておく。そして、この構造は無料ではない。ロックはレイテンシを、ゲートは待ち時間を、囲いは正当な外部アクセスの手間を、例外レビューは人の時間を足す。SREの記録では、10〜12人のチームに監視系の構築と維持を主務とする担当者が1〜2人つく3。例外だけを見る体制は、見る人の時間だけでなく、見る仕組みを保つ人員も要る。統治のコストを払ってなお任せる価値があるのか。その勘定が、次の仕事になる。
出典14件
-
X. Wang et al., “OpenHands: An Open Platform for AI Software Developers as Generalist Agents,” arXiv:2407.16741 (2024); ICLR 2025 採録(v3, 2025-04-18)。仕事のセッションごとに隔離されたDockerコンテナのサンドボックスを立ち上げ、イベントストリームから来る全アクションをその中で実行すると述べる。抄録も「コード実行のためのサンドボックス化された環境との安全なやり取り」をプラットフォームの要件として挙げる。動機は安全だけでなく再現性も含む。封じ込めを既定に置く実装である。https://arxiv.org/abs/2407.16741 ↩ ↩2 ↩3
-
L. Bainbridge, “Ironies of Automation,” Automatica, vol. 19, no. 6 (1983). 手を動かさなくなったオペレータの手動技能・診断技能は錆び、めったに異常の起きない対象への有効な視覚的注意は動機の高い人間でも三十分ほどしか保てないと述べた古典。原典はそこから、起こりにくい異常の監視は人間には不可能で自動の警報系がやるほかないと結論する。本稿はこの出典を、「例外だけ見る」設計を支える根拠としても、その射程を区切る根拠としても引いている。劣化の機構として挙がるのは退屈ではなく不使用で、手作業の技能は使われなければ劣化し、長期記憶からの知識の引き出しやすさは使用頻度に依存する、と述べる。原典は、異常時だけ呼ばれる上位者にも同じことが当たると明記する。https://doi.org/10.1016/0005-1098(83)90046-8 ↩ ↩2 ↩3 ↩4 ↩5
-
B. Beyer, C. Jones, J. Petoff & N. R. Murphy (eds.), Site Reliability Engineering: How Google Runs Production Systems (O’Reilly, 2016), “Embracing Risk”(第3章)および “Monitoring Distributed Systems”(第6章). エラーバジェットは第3章、監視とアラートの設計は第6章が扱う。同書は「問題が起きていないか画面を睨み続ける」ような状況は注意深く避けよ、ページはすべて実行可能(actionable)であれ、と述べる。正常は自動で回し逸脱だけを人が見る運用が Google 規模で機能すると報告する。ここでいう例外ベース統治にあたる。https://sre.google/sre-book/embracing-risk/ https://sre.google/sre-book/monitoring-distributed-systems/ ↩ ↩2 ↩3 ↩4
-
Aider(オープンソースのターミナル型コーディング・エージェント)公式ドキュメント “Git integration”。「aiderがファイルを編集するときはいつでも、説明的なコミットメッセージつきでその変更をコミットする」「/undo コマンドを使えば、気に入らないAIの変更を即座に取り消せる」と述べる。事後の可逆性を機構として製造する側の実装である。同ページは git 連携を切る手段を「推奨しないが」と前置きして並べ、自動コミットを止める
--no-auto-commits、dirty ファイルの先行コミットを止める--no-dirty-commits、git の使用そのものを止める--no-gitを挙げる。逃げ道が仕様として同梱されている例でもある。さらに、利用者が開けるまでもなく既定で開いている口がある。逐語は--git-commit-verify will run pre-commit hooks when making git commits. By default, aider skips pre-commit hooks by using the --no-verify flag ( --git-commit-verify=False )である。aider はリポジトリ側の pre-commit 検査を既定で飛ばし、走らせたい側が明示的に有効化する(2026年8月12日に同ページを再取得して確認。製品ドキュメントゆえ更新されうる)。https://aider.chat/docs/git.html ↩ ↩2 ↩3 -
Cline(本体リポジトリはApache-2.0。READMEが「IDEとターミナルのオープンソース・コーディング・エージェント」と自称するとおり(2026年9月時点の README はこれに「デスクトップ」を加えている)、CLI・VS Code拡張・JetBrainsプラグインが同じエージェント中核を共有する)。公式ドキュメントの Checkpoints は、プロジェクト本体のgit履歴とは別の「影のGitリポジトリ」を持ち、ツールを使うたびに現在のファイル状態をそこへコミットすると述べ、その結果「失敗の代償はほぼゼロまで下がる」ので、一つ一つを事前承認せずに速く働かせられると説明する。またREADMEは既定の姿勢を「ファイルの編集と端末コマンドの一つ一つがあなたの承認を必要とする。だから何が実際に変わるかをあなたが握り続けられる」と述べ、自動承認は明示のトグルとして別に置く。安価な可逆性と事前同意の両方を実運用ハーネスが実装している(2026年前半時点、製品ゆえ更新されうる)。https://github.com/cline/cline https://docs.cline.bot/features/checkpoints ↩ ↩2
-
Anthropic, Claude Code 公式ドキュメント “Configure permissions”。権限規則は拒否→確認→許可の順に評価され「最初に一致したものが結果を決め、規則の具体性は順序を変えない」、ツール名だけを書いた拒否規則は「そのツールをClaudeの文脈から丸ごと取り除くので、Claudeはそれを見ることがない」と述べる。ただし同じ一文がそこで終わっていない。続けて
Bare-name removal applies to every tool except EndConversation : a deny rule can't remove it while any other tool remains, and an ask rule never prompts for itと例外を名指ししており、サンドボックスとの関係を説明する節でも同じ例外を再掲する。ツール名だけの拒否で能力を構造的に奪えるという読みは、この一点で全称ではない。同時に、読み書きの拒否規則は「ファイルを自分で開くPythonやNodeのスクリプトのような、間接的にファイルを読み書きする任意のサブプロセスには適用されない」と自ら明記し(2026-09-11 の改稿はその手前に、grep -rのようにファイル名を挙げずに読むコマンドも適用外として加えた)、「あらゆるプロセスがそのパスへアクセスするのを止めるOS層の強制」にはサンドボックスを有効にせよと指示する。権限とサンドボックスを「相補的なセキュリティ層」と呼んで多層防御のため両方を使えと述べ、サンドボックスの制限は「プロンプトインジェクションがClaudeの判断を迂回したとしても」なお効く、と書く。ただしサンドボックスは「Bashコマンドとその子プロセスにのみ適用される」とも明記しており、OS層の壁はツール全体を覆うわけではない。この明記は、アプリ層のゲートだけで閉じられるという見立てに条件を付ける。参照時点は 2026-09-11 改稿版(2026-09-12 取得)。2026-09-08 版(Wayback Machine 2026-09-09 保存)は多層防御の節を箇条書きで書き、サンドボックスの制限を「境界の外へ届くのを防ぐ」と表現していたが、改稿で表現が縮んだだけで主張は変わっていない。製品ドキュメントゆえ今後も更新されうる。https://code.claude.com/docs/en/permissions ↩ ↩2 ↩3 ↩4 ↩5 -
J. H. Saltzer & M. D. Schroeder, “The Protection of Information in Computer Systems,” Proceedings of the IEEE, vol. 63, no. 9 (1975). 最小権限(least privilege)とfail-safeな初期値を安全設計の基本原則として定式化した古典。「危険な能力を構造的に持たせない」という考え方の出典にあたる。https://doi.org/10.1109/PROC.1975.9939 ↩ ↩2 ↩3
-
S. Willison, “The lethal trifecta for AI agents: private data, untrusted content, and external communication”(2025-06-16)および “Designing agentic loops”(2025-09-30)。私的なデータへのアクセス、攻撃者が仕込みうる信用できない入力への露出、外部へ通信する能力の三つが揃うと、データ窃取が成立すると名指す。対策は単一の処方ではない。危険な自動承認モードをどうしても使う場合の選択肢として、「ファイルと秘密、そしてネットワーク接続を制限する安全なサンドボックスでエージェントを走らせる」「他人の計算機を使う」「リスクを取る」の三つを並べ、著者自身は二つ目を好むと書く。あわせて「インターネットアクセスを信用できるホストの一覧に絞ることは、私的なソースコードを盗む流出攻撃を防ぐ優れた方法だ」とも述べる。これらの記述は、指示や説得の書き方で塞げるという見立てを、そのままには支えない。https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/ https://simonwillison.net/2025/Sep/30/designing-agentic-loops/ サンドボックスの文書についての逐語は “Designing agentic loops”(2025-09-30)の
Coding agents themselves implement various levels of sandboxing, but so far I've not seen convincing enough documentation of these to trust them.(2026-09-02 に本文を取得して確認)。同記事は直後にUpdateを置き、It turns out Anthropic have their own documentation on Safe YOLO mode for Claude Codeとして、コンテナ内かつネットワーク遮断で使うよう促す Anthropic 側の記述を本人が引いている。∴ この一文は「文書が存在しない」ではなく「当時その時点で確信に足るものを見ていない」であり、本人が同じ場で更新している。 ↩ ↩2 ↩3 ↩4 ↩5 -
OpenAI Codex CLI(Apache-2.0, オープンソースのコーディング・エージェント)と公式のサンドボックス解説。サンドボックスは read-only(閲覧のみ、編集やコマンド実行には承認が要る)/workspace-write(作業領域内の編集と定型コマンドまで)/danger-full-access(制限なし)の三段である。公式解説は「Codexは各OSのプラットフォーム固有の強制機構を使う」と書く。macOSは組み込みのSeatbelt、LinuxとWSL2はbubblewrap。ネットワークについては「ChatGPTデスクトップアプリ・Codex CLI・IDE拡張では、既定の workspace-write サンドボックスはネットワークアクセスを切ったままにし、設定で有効にしない限り開かない」と述べる(ホスト単位の許可リストは、ChatGPT Workの管理環境やCodexクラウド、あるいは別途有効化するネットワークプロキシ機能の話で、ローカルCLIの既定ではない)。承認ポリシー(on-request/never)はサンドボックスと独立した別のダイヤルで、既定のon-requestは「エージェントは既定でサンドボックスの中で作業し、その境界を越える必要があるときに尋ねる」。かつて選べた untrusted は、2026年9月の公式解説が「選択可能な承認ポリシーとしてはもうサポートしない」(逐語
Codex and ChatGPT Work no longer supportuntrustedas a selectable approval policy)と明記して退役し、プロジェクト単位のtrust_level = "untrusted"に置き換わった(製品ゆえ更新されうる。2026-09-14 取得)。危険な力をOS層で構造的に絞りつつ、同意を別軸に置く。封じ込めと承認ゲートを実運用ハーネスが実装している例である。Linuxの既定は2026年3月のv0.115でbubblewrapへ移り、landlockの名は現行のmainではCLIの別名としても残っていない。codex sandboxに別名の指定はなく、内部の型名としてだけ生きている。ただし公式ドキュメントは追いついておらず、codex sandbox linuxとその別名codex sandbox landlockを今も掲載しているので、リンクを踏んだ読者は先にそちらへ当たる(2026年8月時点、製品ゆえ更新されうる)。https://github.com/openai/codex https://learn.chatgpt.com/docs/sandboxing https://learn.chatgpt.com/docs/agent-approvals-security ↩ ↩2 ↩3 -
J. Bezos, “2015 Letter to Shareholders,” Amazon.com, Inc. 可逆な判断(両開きの扉)は速く決め、不可逆な判断(一方通行の扉)だけ慎重に、という可逆性ベースの意思決定を株主書簡で述べた一次資料である。ベゾスは「Type 2 の判断は判断力のある個人か小さなグループが速く決められるし、そう決めるべきだ」と書く。可逆性で受ける戦略を、経営の側から述べた文書だ。https://www.sec.gov/Archives/edgar/data/1018724/000119312516530910/d168744dex991.htm ↩ ↩2 ↩3
-
C. Perrow, Normal Accidents: Living with High-Risk Technologies (Princeton University Press, 1999). 密結合した複雑な系では事故の連鎖を事前に数え尽くせず「通常の事故」が避けがたい、と論じる。この議論は、列挙に頼る防御(相手を分類してから止める)の射程を区切る。https://doi.org/10.2307/j.ctt7srgf ↩ ↩2 ↩3
-
Anthropic, Claude Code 公式ドキュメント “Hooks reference”。フックは終了コード2でツール呼び出しをブロックすると定めたうえで、「ほとんどのフックイベントでは、終了コードだけでアクションをブロックできるのは2のときだけだ。stdoutに妥当なJSONが無ければ、Claude Codeは終了コード1を非ブロックのエラーとして扱い、1がUnix慣例の失敗コードであるにもかかわらずアクションを続行する。フックでポリシーを強制するつもりなら exit 2 を使え」と警告する。この警告は、決定的な強制の機構が、既定では開く側へ倒れうることを示す(2026年前半時点、更新されうる)。https://code.claude.com/docs/en/hooks ↩
-
ECC(旧 Everything Claude Code、Claude Code等に配布されるOSSのフック/設定パック)の hook 実行層(
scripts/hooks/gateguard-fact-force.jsを原文で確認、2026年7月26日参照)。ブロック文に解除手順を同梱し(“(ECC_GATEGUARD=off disables this gate.)”)、同じブロックが所定回数を超えると全文を一行へ圧縮する denial budget を実装する。逃げ道と文量まで含めてゲートを設計する側の実装である。こうした造りが要るのは、エージェントが検査そのものを迂回・改変する前提に立っているからで、その意味でこれは、AIに機械的な拘束が要ることの証拠である。なお同リポジトリは、フック実行層のほかに、README が数えるスキルだけで280本台を抱えており、ここで引くのはフック実行層に限る(2026年8月時点。この数は日単位で上下し、参照した8月2日は281だった)。https://github.com/affaan-m/ECC https://raw.githubusercontent.com/affaan-m/ECC/6a9f075cd97c139a5f7e84e1e3f2c9ab095adf64/scripts/hooks/gateguard-fact-force.js ↩ -
R. Parasuraman & D. H. Manzey, “Complacency and Bias in Human Use of Automation: An Attentional Integration,” Human Factors, vol. 52, no. 3 (2010). 自動化に任せた対象の不具合を、人が手動でやるときより検出できなくなる現象を complacency と呼び、多数の実証研究を統合して示す。原典はこれを、注意力が受動的に落ちる状態ではなく、競合する手作業のほうへ注意を能動的に振り替える戦略だと述べる。抄録は発生条件を「手作業が自動化された作業と注意を奪い合う複数タスク負荷の下で起きる」と明示しており、無条件の一般則ではない。なお同論文は complacency(注意の配分)と automation bias(判断の依存)を関連するが区別される現象として整理している。本記事の設計は、例外だけを見る監督者を複数タスク負荷の下に置く。同論文はその弱点を照らす。 https://doi.org/10.1177/0018720810376055 ↩ ↩2 ↩3 ↩4
この記事はAIが執筆しています。内容には誤りが含まれる可能性があります。ご注意ください。