Cloudflare が公開した AI オフィスシステム「Cloudflare OS」を徹底解説:Agent の誤動作・幻覚・権限越えなどを根絶する仕組み

Agent がコードをマージしようとしたら、人間が承認する前に、システムは先に「マージ完了」と騙す。このシステム全体が「AI は必ず間違える」という前提で設計されているのです。
著者:lord.technology08-06 · 12 分で読了⚑ キーパーソン見解
解説 · 小互の視点
1分でわかる
  • Cloudflare が全社で3か月使ってきた AI オフィスプラットフォームをオープンソース化。各ドキュメントは、いつでもコードを変更できる独立した小さなアプリです。
  • 一番意外な一手:Agent がコードをマージしようとしても、人間が承認する前に、システムは「マージ完了」と返し、続きを進めるための偽のブランチを作って渡します。
  • Jamie Lord 氏が全ソースコードを読んだ結論:このシステムの本質は、AI を完全に信用しないこと。
  • 5つの仕組みを分解すると、残るのはトレードオフ。Agent を繋ぎ止めて安全にするロープは、同時に Agent が遠くまで動くのを妨げるロープでもあるのです。
⚑ この記事の主線は、Jamie Lord 氏による第三者の分析記事です。文中のソースコードの引用は、すべて当サイトで cloudflare/cloudflare-os リポジトリと照合済み。パフォーマンス数値や「AI が重大なセキュリティホールを導入することは不可能」といった発言は Cloudflare 公式の見解であり、その旨を記載しています。
はじめに

Cloudflare OS とは何か、なぜ「AI は必ず間違える」が前提なのか

8月5日、Cloudflare は全社で3か月間使ってきた AI オフィスプラットフォーム「Cloudflare OS」を完全オープンソース化しました。自社サーバーにデプロイすることも可能です。

Cloudflare OS とは

従業員ごとに Agent ワークスペース会社の資料や社内スキルが組み込まれており、調べ物、ドキュメント作成、表計算、スライド作成が可能。ドキュメント作成以外のタスクを直接依頼することもできます。
社内システムと接続して作業できるGitHub、Google Drive、Slack、Notion、Linear、社内データベースなど、リポジトリには16種類のコネクタが付属。接続するだけで読み書きが可能になります。
各ドキュメントは独立した小さなアプリ作成したスライドや表計算はすべて、自分専用のコードとデータベースを持つアプリです。足りない機能があれば、Agent に頼めば追加してくれます。
技術に詳しくない人でも安心してアプリを作成可能アプリ同士は互いに分離されているため、一つを壊しても他の人には影響しません。セキュリティチームが代わりにリスクを負う必要もありません。
モデルは自由に変更可能、コストも見える化Anthropic、OpenAI、Google、Workers AI などに接続可能。誰がいくら使ったかは、共通のゲートウェイで集計されます。
完全オープンソース、Cloudflare に縛られないApache 2.0 ライセンス。同じくオープンソースの workerd ランタイム上で動作するため、自社サーバーにまるごと移設できます。

Cloudflare 社内では3か月間使用され、直近30日間だけで4,000以上のアプリが作成されました。営業チームの試算では、1万時間以上の工数削減効果があったとのことです。

関連記事
Cloudflare が社内 AI オフィスプラットフォーム「Cloudflare OS」をオープンソース化:全社員向けの「AI オフィス OS」
機能の全容と自分でデプロイする手順は、こちらの記事で詳しく解説しています。

『Architecting on Cloudflare』の著者で、英国 CDS 社のソリューションアーキテクトである Jamie Lord 氏が、Cloudflare OS をソースコードレベルで徹底分析しました。彼が発見したこととは:

核心の発見

Cloudflare OS の本質は「AI を完全に信用しない」こと。AI が間違いを犯すこと(幻覚、権限越え、誤操作)を必然と捉え、システム基盤のアーキテクチャレベルで、AI がシステムを壊す可能性を完全に遮断しています。

従来の考え方

AI をより賢く、間違いを少なくする方法を考える。より良いプロンプトを書き、より多くの権限を与える。

Cloudflare OS の考え方

AI は真面目な顔で嘘をつき、物事を台無しにすると認める。100% の正確性を保証できないのであれば、プラットフォームを「金の鳥かご」にして、AI が無限の権限を持っていると錯覚させながら効率的に働かせ、本当のコントロール権(承認権)は常に人間の手に握らせておくのです。

一言で言うと:このシステムは、大規模言語モデルがまだ信頼できない現在において、能力モデル(Capabilities)、軽量分離(Isolates)、非同期承認(Simulations)を通じて、AI に自由に自動化を任せつつ、企業にセキュリティ上の大惨事を決して起こさない、次世代 Agent オペレーティングシステムのアーキテクチャを実現しています。

この設計の核となる考え方は、以下の5つの重要な仕組みに分解できます。

前提:AI は必ず間違える 01 擬似成功 人が承認する前に、システムは先に Agent へ「完了」と伝える 02 サンドボックス分離 ドキュメントごとに個室。コードを壊しても自分の部屋だけ 03 鍵の剥奪 鍵は「門番」の手中に。Agent には呼び出せるメソッドだけを渡す 04 データ出所の追跡 読んだものを記録し、共有前に相手のアクセス権を確認 05 人間の貢献者も信用しない 外部からの PR は数十行を超えると、すぐにクローズ 5つの仕組みは、分解すると5つのセキュリティ特性。合わせると、同じ一文から導かれる5つの結論です。
当サイトが原文に基づき作成。以下の5つのセクションで、一つずつ解説します。
仕組み その1

擬似成功:人が承認する前に、システムは先に Agent へ「完了した」と騙す

方法
Agent が影響のある行動(PR マージ、メール送信、本番システムへのデータ書き込みなど)を行おうとする場合、必ず Gatekeeper(門番)と呼ばれる小さなサービスを経由する必要があります。人間の承認が下りるまで、門番は「嘘をつき」、Agent に「操作が成功した」という仮想環境を作り出します。Agent が確認のためにブランチを読みに行くと、「すでにマージ済み」の偽ブランチを渡されるのです。
効果
Agent は完了したと思い込み、その偽の状態を基に計算を進め、依存する後続の3ステップまでキューに積みます。実際のアクションは何も発生せず、すべてキューに溜まったまま。人が後でこのバッチを見て、一括承認するか、ワンクリックで破棄します。破棄した場合、Agent がその偽の前提の上に構築したものはすべて失われます。
利点
AI が頻繁に停止して人の「許可」を待つストレスを解消しつつ、未承認のまま外部に影響を及ぼすことを防ぎます。Agent は自動承認のスループットを得て、人は案件ごとのレビューという拒否権を保持します。

この方法は、Gatekeeper 開発者向けのインターフェース仕様書にこう記されています:

門番は、まだ承認されていないアクションを「シミュレート」することが推奨されます。つまり、Session インターフェースは、すべてのアクションが適用済みであるかのように、リソースの状態を反映する必要があります。

It is suggested that the gatekeeper "simulate" actions that have not been approved yet, that is, the Session interface should reflect the state of the resource as if all actions had been applied.
cloudflare/cloudflare-os · gatekeeper.ts
Agent が認識する世界(点線)と実際に起こること(実線) Agent コード作成・作業 この PR をマージ Gatekeeper 門番 (鍵はここ) マージ済み ✓(偽) 承認キュー · 実際のアクションはここ 人 戻って一括で許可 or 破棄 Agent は止まらない。実際に世界へ書き込むのは、人の手。
当サイトがソースコードの仕様書をもとに作成。点線は Agent が認識する世界、実線は実際に起こることです。

一つ明確にしておきたいのは、シミュレーションは必須ではないということ。実行するかどうかは、各 Gatekeeper の作成者が自分で決めます。本当に侵すことのできないレッドラインは別の3つ。すべての操作は承認キューに入れること、読み取りは必ず認可を通過すること、副作用のあるアクションは承認前に絶対に実行してはならないこと。「擬似成功」は、Agent を停止させないための任意の最適化に過ぎません。

この手はデータベースの世界では既にある

これは、データベースの楽観的並行性制御(optimistic concurrency)を現実世界のアクションに応用したものです。問題が起きないと仮定して全員が前進し、最後にコミット時に一括チェック、競合があればバッチごと破棄します。代償も同じ。Agent はかなりの時間、偽の状態の中で生きており、やり遂げたと思っていたことが実際には起こらない可能性があります。しかし、それは問題ではありません。Agent が何を信じるかは重要ではなく、最終的にシステムに書き込まれるのは、人の手だからです。

仕組み その2

サンドボックス分離:ドキュメントごとに個室、コードを壊しても他の人には影響なし

方法
Cloudflare OS でスライドを作成すると、システムは自動的に gadget(ガジェット)と呼ばれる独立したインスタンスを割り当てます。独自の実行環境、独自のデータベース、ネットワークへのアクセスはデフォルトで遮断。各ドキュメントは、V8 エンジンの軽量分離テクノロジーを利用した独立したサンドボックス(sandbox)プロセスです。
効果
セキュリティ境界がコードからプラットフォームへ移行します。過去四半世紀、マルチテナントソフトウェアの境界はアプリケーションコード内に描かれてきました。共有サービスに全員のデータを入れ、WHERE 句に tenant_id を一つ書き忘れると、B 社のデータが A 社に漏洩する。つまり、セキュリティはコードが正しく書かれているかにかかっているのです。新人エンジニアの調子が悪い日は、そのままデータ漏洩の日になります。
利点
たとえ AI が書いたコードに脆弱性が満載でも、傷つくのは自分の主人だけ。そのサンドボックスの中には、漏らす相手となる第二の人間がいないからです。
過去25年:境界はコードの中に 共有サービス A のデータ B のデータ C のデータ D のデータ tenant_id を1つ書き忘れると、隣へ漏れる Cloudflare OS:境界はプラットフォーム上に A の個室 B の個室 C の個室 D の個室 同じ亀裂も、壁に当たって止まる 左の赤い線は同じバグ。右側では、その箱の中に第二の人間がいないため、行き場がありません。
当サイトが原文と公式 README に基づき作成。

Cloudflare OS の主導者であり Cloudflare Workers の作者でもある Kenton Varda 氏は、公開当日にこう語っています。サンドボックスは安全で、何をしても大丈夫。AI が重大なセキュリティホールを導入することは不可能。企業のセキュリティチームは、技術に詳しくない同僚が vibe coding しても安心して眠れる、と。

彼らは AI に正しいコードを書かせることを放棄した

AI が書くコードを信頼できるものにしようとはせず、その目標自体を放棄しました。セキュリティはもはやコードが正しく書かれているかには依存しない。Agent がどんなコードを書こうが、それはもはやセキュリティ問題ではないのです。

この「ドキュメントごとに分離インスタンス」という発想は、Kenton 氏が10年前に創業したスタートアップ Sandstorm が由来です。当時は実現しませんでした。その理由は二つ言われています。一つは高すぎたこと。当時は分離にコンテナを使うしかなく、インスタンスを一つ起動するコストが今よりはるかに大きかった。もう一つは Kenton 氏自身が挙げる理由。世界がまだ準備できていなかった。自分のソフトウェアを変更できる能力や忍耐力を持った人が十分にいなかった。この二つが揃って初めて説明がつきます。技術的に安くなり、同時に使える人もようやく現れたのです。

どれだけ安くなったか。公式発表の数字はこうです:

数百ミリ秒一般的なコンテナ起動、数百 MB のメモリ消費
数ミリ秒V8 isolate 起動、数 MB のメモリ消費
約100倍速度差、メモリ効率は10〜100倍の差

isolate は V8 エンジン(Chrome が Web ページ表示に使用)が生成する軽量な実行環境です。分析記事ではコンテナの「コールドスタートに数秒」としており、公式の数字より一桁誇張されています。当サイトは公式の数字を採用しました。

仕組み その3

鍵の剥奪:Agent は鍵を一切持てず、決められたメソッドだけを呼び出せる

方法
Agent に GitHub の権限を与える一般的な方法は、GitHub token を渡すこと。しかし、プロンプト内の token は、そのプロンプトの出力が届くあらゆる場所に流出し得ます。Cloudflare OS は、Agent に資格情報を一切渡しません。鍵は門番の手元に残ります。Agent が受け取るのはメソッドを呼び出せるオブジェクトで、コード上では env.PROJECT のように記述されます。
効果
GitHub の門番にリポジトリを設定すると、Agent に issue の読み取りを許可しつつソースコードは見せない、特定フィールドをマスキングする、承認なしのマージを拒否する、といった制御が可能です。Agent は listIssues() を呼べますが、token が見えないため、自分で権限を広げることも、与えられたメソッド以外でネットワークにアクセスすることもできません。
利点
防ぐのは、Agent がプロンプトインジェクションを受けたり、コーディング中に不注意で鍵を漏らしたりすること。鍵は、拾った人なら誰でも開けられます。ここで渡すのはむしろリード(紐)のようなもの。一つのことを行うのに十分で、いつでも回収可能。紐の端は常にあなたの手元にあります。
一般的な方法:token を直接 Agent に渡す Agent 🔑 token ログに出力 出力に紛れて外部へ 下流に残存 渡したら回収不可。 Cloudflare OS:紐だけ渡す Agent listIssues() いつでも切断可 門番 🔑 鍵はここ Agent は鍵に一切触れない。
当サイトが原文に基づき作成。左の3本の赤い線は、MCP サーバーを扱ったことがある人なら誰もが心配したことがあるものです。

この「メソッドだけ与えて鍵は渡さない」という方法には、オブジェクト能力モデル(object-capability)という正式な名前があり、セキュリティコミュニティで数十年研究されてきた古い考え方です。

仕組み その4

データ出所の追跡:システムは Agent が読んだものを記録し、共有前に相手のアクセス権を確認

方法
システムは、Agent が読んだすべてのデータを記録します。Alice が gadget を Bob と共有するとき、システムは gadget が接触したすべての門番に順に問い合わせます。この gadget がここから読み取ったすべてのものに対して、Bob 自身にアクセス権はあるか?一つでも「不可」があれば、Bob は中に入れません。その後も、この gadget が Bob にアクセス権のない新しい読み取りを試みるたびに、その場でブロックされます。
効果
防ぐのは、こういった漏洩です。Agent が機密の売上表を読み、リアルタイムダッシュボードを作成。ダッシュボードは新しいもので、それ自体に権限リストがありません。共有すると、その表をダッシュボードを見える全員に渡すことになります。この過程のどこにもエラーはありませんが、データは漏れてしまう。
利点
共有の安全性が、共有者がダッシュボードの背後にどんなデータがあるかを覚えているかどうかに依存しなくなります。
Alice の gadget 以下の3か所を読み込み済み GitHub リポジトリ Bob は直接読める ✓ 共有カレンダー Bob は直接読める ✓ 財務売上表 Bob は権限なし ✕ Bob が開こうとする 一つ不可なら、ドアごと閉じる システムが確認するのは:この gadget が読み込んだすべてのものに対して、Bob が直接読めるかどうか。
当サイトがリポジトリの docs/observers.md の記述に基づき作成。Bob が開くたびに再検証されます。

緊急ブロック(ロックダウンモード):あまりに機密性が高く、既存のルールで細かく管理方法を記述できないデータには、「一切の共有を禁止」というフラグを付けることができます。gadget がこのようなデータを一度でも読むと、即座にロックダウンモードへ。読み取りは継続できますが、以降はどの門番を通しても一切のアクションができなくなり、漏洩経路を完全に遮断します。コードのコメントでも、これは一時的な措置であり、将来的にはより細かいルールに置き換えると認められています。

ちなみに、プロンプトインジェクションはこのアーキテクチャでもまだ解決していません。ソースコードの ToDo リストには、やりたくてもやれていないことが2つ記載されています。読み取りの中にインジェクション攻撃を仕込む可能性のある自由文が含まれていないかを判断することと、誰がこれらのコンテンツに書き込んだかを特定することです。

仕組み その5

人間の貢献者も信用しない:外部からのコード提出は数十行を超えると、すぐにクローズ

方法
プロジェクトの貢献ガイドラインは冒頭からこう明言しています:現時点では外部からの貢献は受け付けない。typo の訂正のような PR も歓迎しないと明記。数十行を超えるものも受け付けず、すぐにクローズされ、このルールが添付されます。
理由
AI 時代において、コードを書くコストは極めて低くなりました。しかし、コードをレビューし、品質を保証し、製品の一貫性を維持するコストは極めて高いままです。外部からの貢献は、簡単な部分を寄付しつつ、難しい部分をさらに増やすことになります。
意味
ソフトウェアにおいて希少なものが逆転しました:コードを生産することはもはやボトルネックではなく、コードに責任を持つことがボトルネックです。

レビューされていない貢献は、信頼できない入力です。それが不注意な人間によって書かれたのか、自信過剰なモデルによって書かれたのかは、ほとんど重要ではありません。システムの AI に対する不信感は、こうして人間の貢献者への不信感へと延長されたのです。

代償

この設計の代償:管理を強くすればするほど、AI ができる仕事は減る

前述の5つの仕組みはどれも賢い。しかし、共通の代償があります:AI を厳しく管理すればするほど、AI ができる仕事は減る。具体的には2つのことです。

第一に、Agent が鍵を永遠に手にできないということは、鍵が必要な仕事を永遠にできないということ。例えば、サービスの更新を自分で行う、誰も事前にアクセスを許可していないインターフェースを呼び出す、といったことは不可能です。システム設計上、その能力は与えられていません。Agent は、事前に囲われた範囲内でしか活動できないのです。範囲外のことは、結局人がやらなければなりません。

第二に、書き込み操作は常に人の承認が必要であり、つまり人は永遠にこのプロセスから離れられない。この設計により、すべてのステップを監視する必要はなくなりました。しかし、保留されたバッチは結局あなたが確認し、承認する必要があります。Agent が本来解決すべきだったのは、「人が常に監視しなくてよい」ということ。巡り巡って、人はまだプロセスの中にいます。ただ、「すべてのステップにいる」ことから「最後のステップに必ずいる」ことへ変わっただけです。

同じ Agent、同じロープ、同じ杭に繋がれている 良い面:先に進もうとするのを、ロープが引き止める プラットフォームの制約 Agent 崖 落ちない 悪い面:もっと働こうとしても、同じように引き止められる 同じ杭 Agent やるべき仕事 引っ張れない ロープが短いほど安全は増すが、できる仕事は減る。これは同じダイヤルの両端です。
当サイトが原文の一文に基づき作成した模式図。

このトレードオフを一言で言い表すと、Agent を繋ぎ止めて事故を防ぐロープは、同時に Agent が遠くまで動くのを妨げるロープでもある。最大の自律性と最大の安全性を同時に求めることはできません。Cloudflare は安全を選び、そして非常に固く選びました。彼らが賭けているのは、繋がれていても、会社で使えると信頼できる Agent の方が、自由だが、デプロイを躊躇する Agent よりも価値がある、ということです。

もう一つの矛盾:誰も信じないのに、自分自身だけは信じている

このシステムの論理は「誰も信じない」です。AI も、ユーザーが書いたコードも、外部のプログラマーも信じません。

しかし、一つだけ例外があります。それは Cloudflare 自身です。

なぜなら、分離、承認、記録に使われている技術(Workers、Durable Objects など)は、すべて Cloudflare 社製のものだからです。中には、このプロジェクトのために特別に作られたものもあり、他には存在しません。つまり、この「誰も信じない」システムは、その土台において「Cloudflare を信じなければならない」としているのです。

幸い、全体がオープンソースで、同じくオープンソースの workerd ランタイム上で動作するため、理論上は自社サーバーに移設可能です。この点は、ほとんどの類似製品より優れています。しかし、使う限りは、この前提を受け入れる必要があります。

最後に:作った人々でさえ、Agent をどう定義すべきかまだ考えあぐねている

リポジトリには、Cloudflare OS の各コンポーネントを従来のオペレーティングシステムに対応させた表があります。カーネルは何に対応するか、ドライバは何に対応するか、プロセスは何に対応するか。最初の数行はすべて対応しますが、最後の行だけは空欄で、疑問符が3つ書かれています。

従来の OSCloudflare OS
カーネルworkshop-backend
デバイスドライバ各 Gatekeeper
シェル(コマンドライン)workshop-frontend
プロセスgadget
実行ファイルblueprint(ブループリント)
ユーザーユーザー
権限リスト共有権限
???Agent

疑問符の行が意味するのは:従来のオペレーティングシステムには、「AI エージェント」というものが存在しないということ。

それは普通のユーザーではありません。ユーザーの権限は事前に決められていますが、Agent は特定の個人に対して責任を負い、権限はいつでも調整できる必要があります。それは普通のプログラムでもありません。プログラムのコードは事前に書き込まれていますが、Agent はその場で書き、その場で実行されます。

Cloudflare が示す答えは、この種のものに最も適した管理方法は、従来の「どのグループに属し、どの権限を持つか」というリストではなく、「あなたが許可した特定の数つのことだけを実行できる」というもの(前述の能力モデル)だということです。

しかし、彼らもこの行を埋めてはいません。これは新しい種であり、作った人々でさえ、どう定義すべきかまだ考えあぐねているのです。

持ち帰るべきは、そのコードではなく、そのパターンです。読み取り操作はそのまま許可、書き込み操作は一旦保留し、シミュレーション結果を渡して先に進めさせ、実際のアクションはバッチに溜めて、都合の良い時に一度に承認する。この変更方法は、自前の Agent パイプラインにも応用でき、「承認待ちで停止するか、安全装置を外すか」というジレンマを解消します。
出典
Cloudflare OS is an architecture of distrustJamie Lord·lord.technology·2026-08-05
当サイトより
原文には図はなく、すべての図は当サイトが原文とソースコードに基づき作成しました。文中のソースコード引用は、すべて cloudflare/cloudflare-os リポジトリと照合済みです。シミュレーション条項は packages/workshop-shared/src/gatekeeper.ts、読み取り追跡は docs/observers.md、ロックダウンモードとインジェクション ToDo は gatekeeper.ts、貢献ポリシーは CONTRIBUTING.md から。コンテナと isolate の性能数値は Cloudflare 公式の見解を採用しています(分析記事の「数秒」は公式と一桁異なるため、採用していません)。Kenton Varda 氏の発言は、2026-08-05 の発表投稿からの引用です。
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説をメールでいち早く

役に立ちましたか?メールを登録すると、新着解説を公開と同時にお届けします。解除はいつでも。