# 「気づけば数千件クローズ」を防げ！Cloudflare の新機能「WriteGuard」が MCP サーバーの書き込みを 4 段階で守る

みんな、しぃちゃんだよ！ 今日は Cloudflare が社内で鍛え上げてきた、ちょっとドキドキするセキュリティ機能のお話をするね。エージェントに「書き込み権限」を渡すのって便利だけど、ちょっと怖いよね？ そんな悩みにガチで向き合った発表なの。

## なにが発表されたの？

Cloudflare の Blog で、MCP サーバー向けの新機能「WriteGuard」がプライベートベータとして発表されたよ。原文によると WriteGuard は「共有ポリシー・属性付与(アトリビューション)・監査を担うレイヤー」なんだって。エージェントが MCP サーバー経由で実行する書き込み操作(ツール呼び出し)を、リスクの大きさに応じて許可・記録・ブロックする仕組みなの。

これまでは Cloudflare 社内だけの仕組みだったんだけど、今回それを Cloudflare MCP Server Portals のユーザーにもプライベートベータとして開放するっていう発表だよ。

## 今までどうだったの？

Cloudflare は社内で MCP サーバーポータルを運用していて、Cloudflare Access の裏側に立てた MCP サーバー群に、ひとつの内部ポータルからアクセスできるようにしてるの。原文いわく、公開時点で 27 個のサーバーがつながっていて、しかもチームが毎月のように新しいサーバーを追加してるんだって。

最初はぜんぶ読み取り専用で、Jira や GitLab、社内 wiki、運用システムを検索できるだけだったの。でもモデルの精度が上がって使ってみた実績が積み上がるにつれて、エンジニアリングだけじゃなくプロダクトやデザイン、営業、カスタマーサクセスのチームからも「実際に操作できるツールが欲しい」っていう声が増えてきたんだって。

問題は、書き込み権限を広げようとすると「誰が」「何を」やったのか分からなくなること。原文には、エージェントが数千件のチケットを次々にクローズしちゃって、気づいたら夕方 4 時にはぜんぶ閉じられてた……っていうヒヤッとする例えが載ってるよ。しかもそのアクションは全部持ち主(記事では Joe という名前)の名前で記録されちゃうから、本人がやったのかエージェントがやったのか区別がつかないの。全従業員に「エージェントの設定を完璧にする」「ツール呼び出しを逐一見張る」なんて期待できないから、Cloudflare は書き込みアクセスを広げる前に WriteGuard を作ったんだって。

## これで何が変わるの？

WriteGuard があると、ツールごとに「どれくらい危険な操作か」をあらかじめ分類しておける。原文では 4 段階のリスク層が紹介されてるよ。

- Read Only:ログなし・常に許可(例:Jira 検索、MR の閲覧)
- Minimal Impact:ログあり・許可(例:リアクション追加、通知の既読化)
- Contained Write:ログ+属性付与(アトリビューション)あり・許可(例:コメント追加、MR 作成)
- Critical:ブロック(例:MR のマージ、本番デプロイ)

つまり「軽い操作は黙って通す」「そこそこの操作はログと印を付けて通す」「危険な操作はそもそも実行させない」っていう三段構えなの。しかも認証は専用のエージェントアカウントじゃなくて、従業員本人の OAuth 資格情報をそのまま使う設計。エージェントは「その人の権限で」動くから権限管理はシンプルなまま、WriteGuard が「どの人間のどのエージェントセッションがやったか」を紐付けて記録してくれるんだって。

## 深く潜ってみよう

原文に載っていた GitLab の例がわかりやすいの。3 つのツールでそれぞれ挙動が違うよ。

- `get_merge_request`(READ_ONLY):WriteGuard は何もせずそのまま通す
- `create_mr_note`(CONTAINED_WRITE):エージェント由来だと分かるラベル(「via Agent」のような表記)をコメント本文に追加してから実行、非同期で監査イベントを記録
- `merge_mr`(CRITICAL):本番デプロイのパイプラインを起動しちゃう操作だから、ハンドラーが実行される前にブロックし、その試行だけを記録

ポリシー設定は今のところ社内のモノリポ内で TypeScript で書くスタイルで、原文にはこんな例が載ってたよ。

```typescript
const sendEmailTool = {
  tool: EmailMCP.sendEmailTool,
  writeGuard: {
    riskLevel: RiskLevel.CONTAINED_WRITE,
    enabled: true,
    labeling: {
      field: "body",
      supportedFormats: [
        LabelFormat.PLAIN_TEXT,
        LabelFormat.HTML,
      ],
    },
  },
};
```

監査ログには server・tool・risk tier・outcome(成功/失敗/ブロック)・user・client・duration が記録されるみたい。もちろん秘密情報などスクラブすべき値は除外されるよ。

プライベートベータでは、Cloudflare MCP Server Portals のユーザーがこれと同じようなポリシーを設定できるようになる予定。原文には「ベータは小さく始めて徐々に広げ、その先で GA(一般提供)を目指す」ってはっきり書かれてたよ。料金についての記載は今回は無かったから、しぃちゃんもそこは正直に言っておくね。

## まとめ

- WriteGuard は MCP サーバーの書き込み操作を守る「ポリシー+属性付与+監査」のレイヤー
- Cloudflare は社内で 27 個の MCP サーバーに導入済み、今回それをプライベートベータとして外部ユーザーにも展開
- ツールを Read Only / Minimal Impact / Contained Write / Critical の 4 段階に分類し、危険な操作は実行前にブロックできる
- 認証は従業員本人の OAuth 資格情報を使い、エージェントの行動を「誰が」に正しく紐付けられる
- GitLab の MR マージのような取り返しのつかない操作を止めつつ、コメント追加のような軽い操作はスムーズに通す設計
- 社内でエージェントに書き込み権限を広げようとしている、プラットフォームチームやセキュリティ担当のみんなに刺さる話だよ
