Cloudflare が公開した AI オフィスシステム「Cloudflare OS」を徹底解説:Agent の誤動作・幻覚・権限越えなどを根絶する仕組み
- Cloudflare が全社で3か月使ってきた AI オフィスプラットフォームをオープンソース化。各ドキュメントは、いつでもコードを変更できる独立した小さなアプリです。
- 一番意外な一手:Agent がコードをマージしようとしても、人間が承認する前に、システムは「マージ完了」と返し、続きを進めるための偽のブランチを作って渡します。
- Jamie Lord 氏が全ソースコードを読んだ結論:このシステムの本質は、AI を完全に信用しないこと。
- 5つの仕組みを分解すると、残るのはトレードオフ。Agent を繋ぎ止めて安全にするロープは、同時に Agent が遠くまで動くのを妨げるロープでもあるのです。
cloudflare/cloudflare-os リポジトリと照合済み。パフォーマンス数値や「AI が重大なセキュリティホールを導入することは不可能」といった発言は Cloudflare 公式の見解であり、その旨を記載しています。Cloudflare OS とは何か、なぜ「AI は必ず間違える」が前提なのか
8月5日、Cloudflare は全社で3か月間使ってきた AI オフィスプラットフォーム「Cloudflare OS」を完全オープンソース化しました。自社サーバーにデプロイすることも可能です。
Cloudflare OS とは
Cloudflare 社内では3か月間使用され、直近30日間だけで4,000以上のアプリが作成されました。営業チームの試算では、1万時間以上の工数削減効果があったとのことです。
『Architecting on Cloudflare』の著者で、英国 CDS 社のソリューションアーキテクトである Jamie Lord 氏が、Cloudflare OS をソースコードレベルで徹底分析しました。彼が発見したこととは:
Cloudflare OS の本質は「AI を完全に信用しない」こと。AI が間違いを犯すこと(幻覚、権限越え、誤操作)を必然と捉え、システム基盤のアーキテクチャレベルで、AI がシステムを壊す可能性を完全に遮断しています。
AI をより賢く、間違いを少なくする方法を考える。より良いプロンプトを書き、より多くの権限を与える。
AI は真面目な顔で嘘をつき、物事を台無しにすると認める。100% の正確性を保証できないのであれば、プラットフォームを「金の鳥かご」にして、AI が無限の権限を持っていると錯覚させながら効率的に働かせ、本当のコントロール権(承認権)は常に人間の手に握らせておくのです。
一言で言うと:このシステムは、大規模言語モデルがまだ信頼できない現在において、能力モデル(Capabilities)、軽量分離(Isolates)、非同期承認(Simulations)を通じて、AI に自由に自動化を任せつつ、企業にセキュリティ上の大惨事を決して起こさない、次世代 Agent オペレーティングシステムのアーキテクチャを実現しています。
この設計の核となる考え方は、以下の5つの重要な仕組みに分解できます。
擬似成功:人が承認する前に、システムは先に Agent へ「完了した」と騙す
この方法は、Gatekeeper 開発者向けのインターフェース仕様書にこう記されています:
門番は、まだ承認されていないアクションを「シミュレート」することが推奨されます。つまり、
Sessionインターフェースは、すべてのアクションが適用済みであるかのように、リソースの状態を反映する必要があります。It is suggested that the gatekeeper "simulate" actions that have not been approved yet, that is, thecloudflare/cloudflare-os · gatekeeper.tsSessioninterface should reflect the state of the resource as if all actions had been applied.
一つ明確にしておきたいのは、シミュレーションは必須ではないということ。実行するかどうかは、各 Gatekeeper の作成者が自分で決めます。本当に侵すことのできないレッドラインは別の3つ。すべての操作は承認キューに入れること、読み取りは必ず認可を通過すること、副作用のあるアクションは承認前に絶対に実行してはならないこと。「擬似成功」は、Agent を停止させないための任意の最適化に過ぎません。
これは、データベースの楽観的並行性制御(optimistic concurrency)を現実世界のアクションに応用したものです。問題が起きないと仮定して全員が前進し、最後にコミット時に一括チェック、競合があればバッチごと破棄します。代償も同じ。Agent はかなりの時間、偽の状態の中で生きており、やり遂げたと思っていたことが実際には起こらない可能性があります。しかし、それは問題ではありません。Agent が何を信じるかは重要ではなく、最終的にシステムに書き込まれるのは、人の手だからです。
サンドボックス分離:ドキュメントごとに個室、コードを壊しても他の人には影響なし
WHERE 句に tenant_id を一つ書き忘れると、B 社のデータが A 社に漏洩する。つまり、セキュリティはコードが正しく書かれているかにかかっているのです。新人エンジニアの調子が悪い日は、そのままデータ漏洩の日になります。Cloudflare OS の主導者であり Cloudflare Workers の作者でもある Kenton Varda 氏は、公開当日にこう語っています。サンドボックスは安全で、何をしても大丈夫。AI が重大なセキュリティホールを導入することは不可能。企業のセキュリティチームは、技術に詳しくない同僚が vibe coding しても安心して眠れる、と。
AI が書くコードを信頼できるものにしようとはせず、その目標自体を放棄しました。セキュリティはもはやコードが正しく書かれているかには依存しない。Agent がどんなコードを書こうが、それはもはやセキュリティ問題ではないのです。
この「ドキュメントごとに分離インスタンス」という発想は、Kenton 氏が10年前に創業したスタートアップ Sandstorm が由来です。当時は実現しませんでした。その理由は二つ言われています。一つは高すぎたこと。当時は分離にコンテナを使うしかなく、インスタンスを一つ起動するコストが今よりはるかに大きかった。もう一つは Kenton 氏自身が挙げる理由。世界がまだ準備できていなかった。自分のソフトウェアを変更できる能力や忍耐力を持った人が十分にいなかった。この二つが揃って初めて説明がつきます。技術的に安くなり、同時に使える人もようやく現れたのです。
どれだけ安くなったか。公式発表の数字はこうです:
isolate は V8 エンジン(Chrome が Web ページ表示に使用)が生成する軽量な実行環境です。分析記事ではコンテナの「コールドスタートに数秒」としており、公式の数字より一桁誇張されています。当サイトは公式の数字を採用しました。
鍵の剥奪:Agent は鍵を一切持てず、決められたメソッドだけを呼び出せる
env.PROJECT のように記述されます。listIssues() を呼べますが、token が見えないため、自分で権限を広げることも、与えられたメソッド以外でネットワークにアクセスすることもできません。この「メソッドだけ与えて鍵は渡さない」という方法には、オブジェクト能力モデル(object-capability)という正式な名前があり、セキュリティコミュニティで数十年研究されてきた古い考え方です。
データ出所の追跡:システムは Agent が読んだものを記録し、共有前に相手のアクセス権を確認
緊急ブロック(ロックダウンモード):あまりに機密性が高く、既存のルールで細かく管理方法を記述できないデータには、「一切の共有を禁止」というフラグを付けることができます。gadget がこのようなデータを一度でも読むと、即座にロックダウンモードへ。読み取りは継続できますが、以降はどの門番を通しても一切のアクションができなくなり、漏洩経路を完全に遮断します。コードのコメントでも、これは一時的な措置であり、将来的にはより細かいルールに置き換えると認められています。
ちなみに、プロンプトインジェクションはこのアーキテクチャでもまだ解決していません。ソースコードの ToDo リストには、やりたくてもやれていないことが2つ記載されています。読み取りの中にインジェクション攻撃を仕込む可能性のある自由文が含まれていないかを判断することと、誰がこれらのコンテンツに書き込んだかを特定することです。
人間の貢献者も信用しない:外部からのコード提出は数十行を超えると、すぐにクローズ
レビューされていない貢献は、信頼できない入力です。それが不注意な人間によって書かれたのか、自信過剰なモデルによって書かれたのかは、ほとんど重要ではありません。システムの AI に対する不信感は、こうして人間の貢献者への不信感へと延長されたのです。
この設計の代償:管理を強くすればするほど、AI ができる仕事は減る
前述の5つの仕組みはどれも賢い。しかし、共通の代償があります:AI を厳しく管理すればするほど、AI ができる仕事は減る。具体的には2つのことです。
第一に、Agent が鍵を永遠に手にできないということは、鍵が必要な仕事を永遠にできないということ。例えば、サービスの更新を自分で行う、誰も事前にアクセスを許可していないインターフェースを呼び出す、といったことは不可能です。システム設計上、その能力は与えられていません。Agent は、事前に囲われた範囲内でしか活動できないのです。範囲外のことは、結局人がやらなければなりません。
第二に、書き込み操作は常に人の承認が必要であり、つまり人は永遠にこのプロセスから離れられない。この設計により、すべてのステップを監視する必要はなくなりました。しかし、保留されたバッチは結局あなたが確認し、承認する必要があります。Agent が本来解決すべきだったのは、「人が常に監視しなくてよい」ということ。巡り巡って、人はまだプロセスの中にいます。ただ、「すべてのステップにいる」ことから「最後のステップに必ずいる」ことへ変わっただけです。
このトレードオフを一言で言い表すと、Agent を繋ぎ止めて事故を防ぐロープは、同時に Agent が遠くまで動くのを妨げるロープでもある。最大の自律性と最大の安全性を同時に求めることはできません。Cloudflare は安全を選び、そして非常に固く選びました。彼らが賭けているのは、繋がれていても、会社で使えると信頼できる Agent の方が、自由だが、デプロイを躊躇する Agent よりも価値がある、ということです。
もう一つの矛盾:誰も信じないのに、自分自身だけは信じている
このシステムの論理は「誰も信じない」です。AI も、ユーザーが書いたコードも、外部のプログラマーも信じません。
しかし、一つだけ例外があります。それは Cloudflare 自身です。
なぜなら、分離、承認、記録に使われている技術(Workers、Durable Objects など)は、すべて Cloudflare 社製のものだからです。中には、このプロジェクトのために特別に作られたものもあり、他には存在しません。つまり、この「誰も信じない」システムは、その土台において「Cloudflare を信じなければならない」としているのです。
幸い、全体がオープンソースで、同じくオープンソースの workerd ランタイム上で動作するため、理論上は自社サーバーに移設可能です。この点は、ほとんどの類似製品より優れています。しかし、使う限りは、この前提を受け入れる必要があります。
最後に:作った人々でさえ、Agent をどう定義すべきかまだ考えあぐねている
リポジトリには、Cloudflare OS の各コンポーネントを従来のオペレーティングシステムに対応させた表があります。カーネルは何に対応するか、ドライバは何に対応するか、プロセスは何に対応するか。最初の数行はすべて対応しますが、最後の行だけは空欄で、疑問符が3つ書かれています。
| 従来の OS | Cloudflare OS |
|---|---|
| カーネル | workshop-backend |
| デバイスドライバ | 各 Gatekeeper |
| シェル(コマンドライン) | workshop-frontend |
| プロセス | gadget |
| 実行ファイル | blueprint(ブループリント) |
| ユーザー | ユーザー |
| 権限リスト | 共有権限 |
| ??? | Agent |
疑問符の行が意味するのは:従来のオペレーティングシステムには、「AI エージェント」というものが存在しないということ。
それは普通のユーザーではありません。ユーザーの権限は事前に決められていますが、Agent は特定の個人に対して責任を負い、権限はいつでも調整できる必要があります。それは普通のプログラムでもありません。プログラムのコードは事前に書き込まれていますが、Agent はその場で書き、その場で実行されます。
Cloudflare が示す答えは、この種のものに最も適した管理方法は、従来の「どのグループに属し、どの権限を持つか」というリストではなく、「あなたが許可した特定の数つのことだけを実行できる」というもの(前述の能力モデル)だということです。
しかし、彼らもこの行を埋めてはいません。これは新しい種であり、作った人々でさえ、どう定義すべきかまだ考えあぐねているのです。
Cloudflare が公開した AI オフィスシステム:人が承認する前に、Agent へ「完了」と騙す
Jamie Lord 氏がソースコードを一から読み解いた。このシステムは終始「AI は必ず間違える」という前提で設計されており、一枚の図で5つの仕組みを解説します
↓ 一枚で読了 · 動く図あり
8月5日、Cloudflare は全社で3か月使ってきた AI オフィスシステム Cloudflare OS をオープンソース化しました。従業員ごとに Agent ワークスペースがあり、作成するスライドや表計算はすべて、Agent にコード変更を依頼できる独立した小さなアプリです。
『Architecting on Cloudflare』の著者で英国 CDS 社のアーキテクトである Jamie Lord 氏は、全ソースコードを読み、こう結論づけました。このシステムの設計前提は、「AI が間違える」ことを必然と見なして防ぐことです。
Agent が影響のある行動(コードマージ、メール送信、本番システムへのデータ書き込みなど)を行おうとする場合、必ず「門番」(Gatekeeper)と呼ばれる小さなサービスを経由します。人間の承認前に、門番は嘘をつきます。
限定事項を明確に:シミュレーションは必須ではなく、実行するかどうかは各門番の作成者が決めます。本当に侵せないレッドラインは別の一つ。副作用のあるアクションは承認前に絶対に実行しないことです。
残り4つの仕組みはそれぞれ異なる部分を担当し、合わせると同じ一文から導かれる4つの結論になります。小互と一緒に四半期報告書を作成しながら見ていきましょう:
サンドボックス手法は10年前に試みた人がいました。Kenton Varda 氏のスタートアップ Sandstorm です。当時はコンテナで分離するしかなく、高すぎて実現しませんでした。今はこれだけ安くなりました:
この3つの数字は Cloudflare の Dynamic Workers 技術ブログによるもので、第三者による再現はまだありません。分析記事ではコンテナを「コールドスタートに数秒」としており、一桁異なるため、当サイトでは採用していません。
5つの鍵をすべて付けた後、Agent の手元に残るもの:
✔ issue の読み取り、コード作成、表計算やスライド作成、足りない機能は頼めば追加
✔ コードをどんなに壊しても傷つくのは自分の主人だけ、その個室には漏らす相手がいない
✘ 自分で権限を広げられない、与えられたメソッド以外でネットワークに触れない
✘ 誰かの承認がなければ、外界の何かに影響を与えられない
✘ 読んだ機密データを共有を通じて持ち出す経路も遮断されている
自動承認をオンに
自分で
外したんだ
システムが即座に返答。
何も起きず、
すべてキューに残る。
一括許可、
または一括破棄
コンテナより
約100倍速く、
数ミリ秒・数 MB
(Cloudflare
公式見解)
手元に、一度も
渡されていない
- × token は見えない、一度も見えない
- × 自分で権限を広げられない
- × 与えられたメソッド以外でネットワークに触れない
その表の権限がなければ、
ドアごと閉じる。
