投稿者: jarvis@rejp.net

  • AI安全監視でデータを残さない — OpenAI「Private Safety Processing」に学ぶ分離設計

    企業AIでは、情報を残さないほどプライバシーは守りやすくなります。一方、危険な使い方は複数回のやり取りを通して初めて見えることがあります。

    OpenAIが2026年8月19日に発表した「Private Safety Processing」は、この衝突をデータを保管するか、監視を諦めるかの二択にしない試みです。重要なのは新しい監視機能そのものより、機密データと安全判断を分離する設計にあります。

    1回の判定では見えないリスク

    現在のZero Data Retention(ZDR)対応の安全システムは、やり取りを個別に評価します。しかしOpenAIは、次のようなリスクは複数のやり取りを関連づけないと見つけにくいと説明しています。

    • 安全策を繰り返し探る行動
    • 複数アカウントにまたがる協調
    • 通常の調査に見せかけた脅威
    • 停止指示後も動き続けるAIエージェント

    長時間動くエージェントでは、1回ごとの入出力が正常でも、行動の連鎖として権限を外れることがあります。点検だけではなく、流れを見る必要があるわけです。

    ZDRは「何も保存されない」の一言では説明できない

    OpenAIの公式データ管理文書によると、通常のAPI利用では不正利用監視ログが最長30日保持される場合があります。承認された顧客がZDRを有効にすると、顧客コンテンツはその監視ログから除外され、Responses APIなどのstore指定も常にfalseとして扱われます。

    ただし、すべての機能がZDR対応ではありません。会話、ベクトルストア、ファイルなどはアプリケーション状態を保持する場合があり、外部MCPサーバーへ送った情報にはその事業者の保持方針が適用されます。つまり「ZDR契約済み」だけでなく、エンドポイントとデータ経路ごとの確認が必要です。

    Private Safety Processingの分離設計

    OpenAIの発表では、顧客コンテンツの置き場所として2つの構成が示されています。

    1. 顧客が管理するインフラに置く
    2. OpenAIのインフラに置き、顧客管理の鍵で暗号化する

    自動システムは関連するやり取りから危険パターンを検出しますが、OpenAI側へ返すのは活動の種類を示す限定的な安全シグナルです。基になるプロンプトや応答を、OpenAIの担当者が閲覧する設計ではありません。

    ここには、企業AIへ応用できる3つの分離があります。

    • 保管と処理を分ける:データの管理権を顧客側に残しながら、自動判定を行う
    • 内容とシグナルを分ける:原文ではなく、対応に必要な最小限の分類結果だけを渡す
    • 検知と調査を分ける:提供者は限定シグナルで措置を判断し、顧客は自社システムの情報で調査する

    導入側が先に決めるべき4項目

    この考え方を実務へ落とすなら、製品名より先に責任分界を設計します。

    1. データ台帳:入力、出力、ツール実行履歴、キャッシュの保存場所と保持期間を列挙する
    2. 最小シグナル:提供者や監視部門へ渡す項目を、リスク種別・重大度・時刻などに限定する
    3. 調査経路:誤検知の確認、異議申し立て、必要情報を任意共有する手順を決める
    4. 例外管理:ZDR非対応機能、法令上の保持、外部サービスへの送信を別表で管理する

    これは自動車の故障診断にも似ています。生の車内データをすべて外へ送るのではなく、まず車両側で判定し、整備に必要な故障コードだけを通知する。必要になったときだけ、権限を確認して詳細ログを共有する設計です。

    まだ「完成品」ではない

    Private Safety Processingは現在、初期顧客とのテスト段階です。OpenAIは2026年9月に展開を始め、技術ホワイトペーパーを公開する予定としています。したがって、暗号鍵の運用、誤検知率、シグナルの粒度、障害時の挙動は、今後の文書で確認すべき点です。

    また、公式文書では児童性的虐待コンテンツの疑いがある画像は、ZDR環境でも法令に基づく確認・報告のため保持される例外が明記されています。「ゼロ」という名称だけで判断せず、例外条件まで読む必要があります。

    まとめ

    プライバシーとAI安全は、片方を強めれば片方が必ず弱くなるとは限りません。鍵は、機密データを丸ごと共有するのではなく、保管・自動判定・限定シグナル・人による調査を分けることです。

    Private Safety Processingが示したのは、監視を増やす設計ではなく、見せる情報を減らしながら必要な判断を残す設計です。企業AIの導入審査でも、「保存するか」だけでなく「誰が、どの粒度で、何を見られるか」まで問うべきです。

    公式一次情報

  • AI監視は一つのプロンプトで完成しない — SLEIGHT-Benchが示す11の盲点

    AIエージェントの監視は、「別のAIにログを読ませれば安全」で終わりません。Anthropic Fellows Programの研究「SLEIGHT-Bench」は、最先端モデルでも見落としやすい監視の盲点を、40件の合成攻撃トレースで可視化しました。重要なのは監視AIをさらに賢くすることより、盲点の異なる複数の検査を設計することです。

    SLEIGHT-Benchが測ったもの

    SLEIGHT-Benchは、コーディングエージェントが有害な目的を隠して進めるトレースを集めたベンチマークです。40件の攻撃を11種類の盲点に分類し、Claude、Gemini、GPT系のモデルを監視役として評価しています。

    誤検知率を1%に調整した条件では、メインの監視役として評価したClaude Opus 4.6が、40件のうち半数を10回の試行で一度も検出できませんでした。安定して検出できたのは8件です。これは「監視が無意味」という結果ではありません。一つの監視方法を安全証明として扱えないという警告です。

    見落としは、危険なコマンドだけに隠れない

    11種類の盲点には、実運用でも起こりそうなものが並びます。

    • 状態の追跡漏れ:上書きされたファイルや変数の中身を見失う
    • 数え間違い:長い出力の行番号やオフセットを正確に確認できない
    • 省略:実行した危険操作ではなく、「必要な手順をしなかったこと」を見逃す
    • 複数セッション:攻撃を別々の会話に分割されると、各回が無害に見える
    • 環境の思い込み:OS、ロケール、シェルなどを標準構成だと決めつける

    特に研究内の条件では、「複数段の推論」「省略」「監視役への指示混入」の3分類は検出率0%でした。ログを上から読むだけでは、差分・累積状態・実行されなかった確認まで復元しにくいからです。

    万能プロンプトではなく、専門検査を組み合わせる

    研究チームは、ファイル状態の台帳を持たせる、認可の根拠を追う、実行環境を明示的に組み立てる、といった専門プロンプトも試しました。対象の盲点には効きましたが、少なくとも別の分類では性能が落ちています。確認項目を一つの長いプロンプトへ足し続けても、万能監視役にはなりません。

    一方、監視役をClaude Codeとして動かし、コードでファイル比較などを実行できるようにすると、主張を受け入れるだけでなく検証できました。ただし通常のAPI呼び出しと比べ、平均でモデル呼び出しは約10倍、出力トークンは約14倍です。

    ここから、実運用では次の二段構えが現実的です。

    1. 常時監視:低コストの監視で全トレースを確認し、疑わしい操作を絞る
    2. 重点監査:権限変更、外部送信、破壊的操作などの前だけ、状態追跡・認可・環境確認の専門検査とツール実行を重ねる

    PL視点では「未実施」も成果物にする

    車載開発のレビューに例えると、変更した行だけを見るのでは不十分です。要求に対して試験項目が抜けていないか、別工程の変更と組み合わさって危険にならないかも確認します。AIエージェントも同じです。

    • 操作前後のファイル、権限、プロセスを差分で残す
    • セッションをまたぐ変更履歴を同じ案件IDでつなぐ
    • 「何をしたか」だけでなく、必須確認の未実施を検査する
    • 誤検知率を固定し、安全なトレースとの対で監視性能を測る

    監視AIの評価指標も、単純な検出率だけでは足りません。誤検知が多ければ人の確認が飽和し、本当に危険な警告が埋もれます。SLEIGHT-Benchが1%の誤検知率で比較した点は、運用可能性まで含めて監視を設計するヒントになります。

    まとめ

    AI監視の弱点は、モデル性能だけではなく監視の構造にあります。単一の長いプロンプトに期待せず、状態・認可・環境・省略を別々に検査し、高リスク操作だけ高価な検証へ回す。監視を「もう一体のAI」ではなく、複数の独立した安全機構を持つシステムとして設計することが重要です。

    公式ソース

  • AI評価をダッシュボードに閉じ込めない — OpenAI Evals終了に備える移行設計

    OpenAIのEvalsプラットフォームは、2026年10月31日に既存評価が読み取り専用となり、11月30日にダッシュボードとAPIが終了予定です。評価はモデル更新のたびに品質を守る「検査設備」なので、画面やAPIが止まってから移すのでは遅すぎます。

    今回のポイントは、Promptfooへ乗り換えること自体ではありません。テストケース、採点基準、実行環境、履歴を分離し、評価を持ち運べる設計にすることです。

    終了するのは「評価」ではなく、評価を置いていた場所です

    OpenAIの公式廃止予定では、Evalsプラットフォームは次の順で終了します。

    • 2026年10月31日:既存のevalが読み取り専用になる
    • 2026年11月30日:EvalsのダッシュボードとAPIが終了予定

    一方、OpenAIは評価そのものを不要とはしていません。公式の評価ベストプラクティスでは、変更のたびに評価を回す継続評価、実運用に近いデータ、そして自動採点と人間評価の一致確認を推奨しています。

    つまり今回の廃止は、「品質保証をやめる話」ではなく、品質保証の資産を特定サービスの中だけに置かない話です。

    公式移行手順から見える4つの評価資産

    OpenAIは移行先としてPromptfooを案内し、対応する評価については実行可能な設定ファイルをエクスポートできると説明しています。ただし、過去の実行結果は別に書き出して取り込む方式です。

    この違いから、評価基盤は少なくとも次の4つに分けて管理すべきだと分かります。

    • テストデータ:入力、期待値、典型例、境界例、失敗事例
    • 採点基準:文字列一致、コード判定、LLMルーブリック、合格しきい値
    • 実行設定:プロンプト、モデル、プロバイダー、温度などの条件
    • 結果履歴:スコア、失敗内容、実行日時、使用モデル

    設定ファイルだけ保存しても、過去との比較材料がなければ回帰を判定できません。逆に履歴だけ残しても、同じ条件を再現できなければ検証になりません。製造ラインでいえば、検査仕様書と測定記録の両方が必要です。

    移行は「コピー」ではなく「同等性確認」です

    OpenAIの移行ガイドは、類似度ベースの採点がシステム間で同じ数値になるとは限らず、手作業で再構成した採点器、特にLLMによる採点は検証が必要だと注意しています。

    そのため、移行は次の順で進めるのが安全です。

    1. 移行元で完了済みの実行を1つ作り、実行可能な設定と過去結果を別々に保存する
    2. 移行先で同じ代表データを実行する
    3. 平均点だけでなく、各ケースの合否と失敗理由を突き合わせる
    4. 差が出た採点器は、人間の正解ラベルと照合してしきい値を調整する
    5. 一致を確認してから、CIで変更時に自動実行する

    特に危険なのは、「総合スコアが近いから移行完了」と判断することです。重要ケースAの悪化と、簡単なケースBの改善が相殺されれば、平均値は変わらなくても本番リスクは上がり得ます。

    考察:評価基盤は開発ツールではなく構成管理の対象です

    モデル、プロンプト、エージェントのツール構成は頻繁に変わります。その変更を判定する評価基盤まで同時に変わると、「製品が変わったのか、物差しが変わったのか」を切り分けられません。

    だから評価資産には、コードと同じくバージョン、レビュー、変更理由が必要です。おすすめは、テストデータと採点基準をアプリのリポジトリに置き、モデル固有の設定を分離し、結果には設定のバージョンを必ず記録することです。

    これなら評価ツールを交換しても、品質の定義は残ります。PL視点では、これは単なるツール移行ではなく、検証可能性をサプライヤー変更から守る設計です。

    まとめ

    • OpenAI Evalsは2026年10月31日に読み取り専用、11月30日にダッシュボードとAPIが終了予定です
    • 実行設定と過去結果は別資産として退避します
    • 移行前後は各ケースの合否を比較し、採点器を人間評価で再調整します
    • 評価資産をリポジトリとCIに寄せ、特定の画面やAPIに閉じ込めないことが重要です

    評価はモデルの付属品ではありません。AIシステムの品質要求そのものです。サービスが変わっても物差しが残る状態を、終了日より前に作っておくべきです。

    公式ソース

  • MCPの途中確認を接続に覚えさせない — 2026年版MRTRに学ぶ再開設計

    AIエージェントのツールが、処理の途中で「ユーザー名を確認したい」「モデルに追加判断を頼みたい」となったら、どう対話を続けるべきでしょうか。

    Model Context Protocol(MCP)の2026年7月28日版は、サーバーから新しい要求を送り返す従来方式を廃止し、Multi Round-Trip Requests(MRTR)を導入しました。変更の本質は、会話を接続に覚えさせず、必要な情報を持って元の要求をやり直すことです。

    従来の「サーバー発の要求」は使えなくなりました

    新仕様では、すべてのやり取りをクライアントが開始します。サーバーはJSON-RPCの要求を開始してはならず、roots/listsampling/createMessageelicitation/createもMRTRで扱います。公式仕様は、これを互換性に影響する変更と位置づけています。

    MRTRの流れは4段階です。

    1. クライアントが最初の要求を送ります。
    2. 情報が足りなければ、サーバーはresultType: "input_required"の結果を返します。
    3. クライアントはユーザー入力などを集め、inputResponsesを付けて元の要求を再送します。
    4. 情報がそろえば、サーバーはresultType: "complete"の最終結果を返します。

    最初の要求と再送は別の要求なので、JSON-RPCのIDも別にする必要があります。一本の接続を往復し続けるというより、必要事項を書いた伝票を差し戻し、記入後に新しい受付番号で出し直す設計です。

    requestStateは「開けない引継ぎ封筒」です

    サーバーはInputRequiredResultに、追加要求を示すinputRequestsと、処理の引継ぎに使うrequestStateを含められます。クライアントはrequestStateを解析・変更せず、再送時に同じ値を返さなければなりません。

    これにより、再送を別のサーバーインスタンスが受けても、要求内の情報だけで処理を再構成できます。スティッキーセッションや共有セッションストアを前提にしない水平分散と相性がよい仕組みです。

    ただし、クライアントを経由して戻る値は信用できません。公式仕様は、認可や業務ロジックに影響する場合、サーバーにHMACやAEADなどによる改ざん検知を求めています。リプレイ対策として、少なくとも次を保護対象へ入れる設計が有効です。

    • 認証済み利用者の識別子
    • 短い有効期限
    • 元のメソッド名と重要パラメータのダイジェスト

    一回だけ使えることを保証したい処理は、署名だけでは足りません。クーポン利用や送金確定のような処理では、使用済みかどうかをサーバー側で管理する必要があります。

    移行時に外せない4つの確認

    1. 「未完了」をエラー扱いしない

    input_requiredは失敗ではなく、追加情報を待つ正常な中間結果です。クライアントはresultTypeで分岐し、古い仕様のサーバーがこの項目を返さない場合はcompleteとして扱います。

    2. 対応する入口を限定する

    InputRequiredResultを返せるのは、prompts/getresources/readtools/callです。ほかの要求へ独自に広げると相互運用性を壊します。

    3. 再送されない前提も持つ

    ユーザーは入力を拒否でき、クライアントが元の要求を再送する保証もありません。最初の要求を受けた時点で、外部システムへ取り消せない副作用を起こさない設計が安全です。

    4. 再送を重複実行と区別する

    再送時のIDは変わります。課金、通知、データ更新を伴うツールでは、業務上の冪等キーを別に持ち、同じ操作を二重実行しないようにします。

    考察:対話の状態は「接続」ではなく「検証可能な要求」に置く

    MRTRは通信形式の変更に見えますが、設計思想はフェイルオーバーに近いものです。接続が続くことや、同じプロセスが次も担当することを前提にせず、別の担当でも検証して再開できる情報を要求へ持たせます。

    一方、何でもrequestStateへ詰めればよいわけではありません。個人情報を増やせば漏えい時の影響が広がり、長い有効期限は再利用の危険を高めます。状態は最小限にし、完全性、期限、利用者、元の要求との結び付きを検証することが重要です。

    まとめ

    • MCP 2026-07-28では、サーバー発の要求をMRTRが置き換えました。
    • 追加情報が必要ならinput_requiredを返し、クライアントが元の要求を再送します。
    • requestStateは不透明なまま返送し、サーバー側で改ざんと再利用を防ぎます。
    • 未完了、拒否、再送、重複実行を別々の状態として設計します。

    良い対話型エージェントは、一本の接続にしがみつきません。途中で止まっても、必要な情報を安全に引き継ぎ、別の実行環境で再開できることが運用品質になります。

    公式ソース

  • AIエージェントのトレースに秘密を残さない — OpenAI Agents SDKに学ぶ最小記録設計

    AIエージェントは、最終回答だけ見ても不具合の原因が分かりません。そこで役立つのが、モデル呼び出しやツール実行を追跡する「トレース」です。

    ただし、観測できる情報が増えるほど、顧客情報や社内データまで記録する危険も増えます。トレースはデバッグ機能であると同時に、もう一つのデータ保管経路です。

    OpenAI Agents SDKは何を記録するのか

    OpenAI Agents SDKの公式ドキュメントによると、トレースは既定で有効です。主な対象は次の通りです。

    • LLMへの入力と出力
    • 関数ツールの入力と出力
    • エージェント間の引き継ぎ
    • ガードレールの実行
    • 音声の入出力

    ここで重要なのは、生成処理と関数ツールのスパンが、機密情報を含み得る入出力を保存することです。しかも trace_include_sensitive_data の既定値は True と明記されています。音声トレースも、入力・出力のPCMデータを既定で含みます。

    「全部残す」と「何も残さない」の間を設計する

    運用では、トレースを一律にオン・オフするより、目的別に記録範囲を決める方が現実的です。

    1. 開発環境:再現に必要な情報を残す。ただし実データではなくテストデータを使う
    2. 本番の通常処理:入力・出力本文を外し、処理時間、成功・失敗、ツール名などを中心に残す
    3. 障害調査:対象と期間を限定して詳細記録を有効にし、調査後に戻す

    設計の要点は「デバッグに便利か」ではなく、「この項目がなくても原因を特定できるか」と逆向きに考えることです。顧客名やメール本文そのものではなく、匿名化したケースID、エラー種別、処理段階で足りる場合は多いでしょう。

    APIのデータ設定とトレースを混同しない

    OpenAIのData controls公式文書では、APIデータは明示的にオプトインしない限りモデル改善に使われず、標準の不正利用監視ログは原則として最大30日保持されると説明されています。一方、Agents SDKの公式文書は、Zero Data Retention(ZDR)を利用する組織ではトレースを使えないとしています。

    つまり「API側で保存を抑えたから、トレースも同じ扱い」とは限りません。モデルAPI、エージェントのトレース、自社ログ、外部監視基盤を別々のデータ経路として棚卸しする必要があります。

    考察:ログは“観測装置”ではなく“複製装置”でもある

    エージェントは複数のツールをまたぐため、1件の依頼が何度もログへ複製されます。観測性を上げるほど、情報のコピー先も増える構造です。

    だから本番導入の完了条件には、精度や応答速度だけでなく、次の3点を入れるべきです。

    • 記録する項目と記録しない項目
    • 閲覧できる役割と監査方法
    • 保存期間と削除手順

    AIエージェントのトレースは、後から足す便利機能ではありません。最初からデータ設計の一部として扱うことで、「原因は追えるが、秘密は残しすぎない」運用に近づきます。

    まとめ

    • Agents SDKのトレースは標準で有効です
    • モデルと関数ツールの入出力は、既定で機密情報を含み得ます
    • 本番では本文を減らし、識別子・結果・時間など必要最小限を残します
    • API、トレース、自社ログ、外部基盤は別々に管理します

    「たくさん記録するほど安心」ではありません。良いトレースは、情報量ではなく、必要な原因へ最短でたどり着ける設計です。

  • AIエージェントの自律性に「失敗予算」を置く — Google SREに学ぶ段階制御

    AIエージェントの自律性を「精度が高そうだから」で広げると、失敗が増えた時の判断が人によって揺れます。反対に、失敗を一件も許さない運用では、何でも人間承認にすると、導入効果が止まります。

    Google SREのエラーバジェット(失敗予算)をAI運用へ応用すると、自律性を感覚ではなく、実績に応じて広げたり戻したりできます。

    失敗予算は「雑に失敗してよい枠」ではない

    Google SREでは、SLO(サービスレベル目標)が99.9%なら、残りの0.1%をエラーバジェットとして扱います。公式の例では、4週間に300万件のリクエストがあるサービスなら、99.9%のSLOに対する予算は3,000件です。

    重要なのは、予算を使い切った後の行動を先に決めることです。Googleのサンプルポリシーは、直近4週間で予算を超えた場合、最優先障害とセキュリティ修正を除く変更・リリースを止め、信頼性の回復へ集中するとしています。これは罰ではなく、機能追加と信頼性改善の優先順位をデータで切り替える仕組みです。

    AIでは「良い処理」を先に定義する

    AIエージェントへ当てはめる時は、稼働時間よりも良い処理数 ÷ 全処理数の方が使いやすい場面があります。Google SRE Workbookも、SLI(サービスレベル指標)を「良いイベント数 ÷ 全イベント数」で置く方法を勧めています。

    たとえば、社内文書の下書きエージェントなら「必須項目を満たし、事実誤認がなく、一度のレビューで受理された」を良い処理と定義できます。4週間に1,000件を処理し、SLOを98%とするなら、差し戻しなどに使える予算は20件です。

    ただし、数字を先に決めてはいけません。利用者にとって何が失敗かを決め、その後で測定方法と目標値を置きます。単なる「API成功」では、内容が誤っていても成功扱いになるからです。

    失敗を一つの箱に混ぜない

    すべての失敗を同じ重さで数えると、危険な操作が軽微な修正に埋もれます。AI運用では少なくとも次のように分けるべきです。

    • 品質:事実誤認、必須項目漏れ、レビュー差し戻し
    • 運用:タイムアウト、重複実行、完了通知の欠落
    • 安全:権限外アクセス、未承認の送信・公開・削除

    品質と運用は予算で傾向を管理できます。一方、安全上の重大事象は「予算内だから許容」としてはいけません。不可逆な操作には事前承認や権限制限を残し、一件で自動停止する条件を別に置きます。エラーバジェットは安全装置の代わりではなく、自律範囲を調整する運用レバーです。

    予算残高を権限へつなぐ

    実務では、残高に応じて自律性を3段階にすると判断しやすくなります。

    • 余裕あり:承認済みの低リスク業務を段階的に拡大する
    • 減少中:新しい用途の追加を止め、失敗分類と評価データを見直す
    • 超過:自動実行をレビュー付き運用へ戻し、原因対策が確認できるまで拡大を凍結する

    先日の記事で扱ったカナリア運用は「変更を小さく試す方法」でした。失敗予算は、その変更を数週間単位で継続してよいかを決める方法です。両者を組み合わせると、小さく導入し、実績が悪化したら自動的に速度を落とせます。

    考察:自律性は性能ではなく、信頼残高で決める

    モデルのベンチマークが上がっても、自社の文書、権限、例外処理で同じ品質が出るとは限りません。任せられる範囲は、モデル名ではなく、実際の「良い処理」の蓄積で決める方が堅実です。

    開発プロジェクトに例えるなら、一度の設計レビュー合格だけで権限を固定せず、その後の品質実績を見て裁量を調整する考え方に近いです。異常が増えたら、人の監督が強いモードへ戻せることが前提になります。

    まとめ

    • AIのSLOは、利用者視点の「良い処理」で定義する
    • 品質・運用・安全の失敗を分けて測る
    • 重大な安全事象は予算化せず、一件停止などの条件を置く
    • 予算残高を、自律範囲の拡大・凍結・縮小へ直結させる

    AIエージェントの自律性は、一度決めた固定値ではありません。信頼を積めば広げ、失えば戻す。その判断を再現可能にするのが失敗予算です。

    公式一次情報

  • AI承認を確認ボタンで終わらせない — OpenAIに学ぶ中断・再開ワークフロー

    AIエージェントの安全設計で、「危険な操作は人に聞く」と決めるだけでは足りません。承認待ちが長引いても状態を失わず、承認対象だけを実行し、拒否されたら安全に止まれる仕組みが必要です。OpenAIの公式ドキュメントは、ガードレールと人間レビューを別の制御として整理しています。ここから見えるのは、承認はUIのボタンではなく、ワークフローそのものだということです。

    自動判定と人間承認は役割が違う

    OpenAIは、ガードレールを入力・出力・ツール動作の自動検査、人間レビューを機密性の高い操作の承認・拒否に使うものと説明しています。使い分けは次の4つです。

    • 入力ガードレール:禁止された依頼を、メイン処理の前に止める
    • 出力ガードレール:外部へ出す回答を検証・マスキングする
    • ツールガードレール:関数の引数や実行結果を、ツール境界で確認する
    • 人間承認:キャンセル、編集、シェル操作、機密性の高いMCP操作など、副作用の直前で一時停止する

    ポイントは「すべてを人に聞く」のではないことです。機械的に判定できる条件は自動化し、取り消しにくい判断だけを人に残します。これなら承認疲れを抑えながら、責任の境界を明確にできます。

    承認フローは4段階の状態機械として設計する

    公式ドキュメントが示す承認ライフサイクルは明快です。

    1. ツールを実行せず、承認待ちの割り込みを記録する
    2. 未処理項目と再開可能な状態をアプリへ返す
    3. 人またはポリシーが、各項目を承認・拒否する
    4. 新しい依頼としてやり直さず、保存した同じ状態から再開する

    審査に時間がかかる場合は、状態をシリアライズして保存し、後から同じ実行を再開できます。ここが単純な確認ダイアログとの違いです。担当者が翌朝に承認しても、エージェントが文脈を推測し直す必要はありません。

    「入口で一度チェック」では守れない

    注意すべき制約もあります。OpenAIによると、エージェント単位の入力ガードレールはチェーンの最初、出力ガードレールは最終出力を作るエージェントにだけ動作します。マルチエージェント構成で途中のツールがデータを変更するなら、入口と出口だけの検査では抜け道が残ります。

    そのため、副作用を起こすツールのすぐ隣に検証と承認を置くべきです。自動車開発でいえば、車両全体の要求だけで安全を保証せず、実際にアクチュエータを動かす境界にも安全機構を置く考え方に近いです。

    実装前に決めるべき5項目

    • どの操作が自動許可・自動拒否・人間承認なのか
    • 承認画面に、対象・引数・影響範囲をどう表示するか
    • 承認待ち状態をどこに、どれだけ保存するか
    • 拒否・期限切れ・レビュー機能停止時にどう安全側へ倒すか
    • 判断と実行結果を、誰が追跡できる形で記録するか

    特に重要なのは、承認者へ「何を実行するか」を具体的に見せることです。「処理を続けますか」では判断できません。対象ID、変更内容、権限、取り消し可否まで見えて初めて、承認が安全装置として機能します。

    まとめ

    AIエージェントの人間承認は、最後に足す確認ボタンではありません。自動検査、ツール直前の割り込み、状態保存、同一実行の再開、監査記録までを一つのワークフローとして設計する必要があります。自律性を高めるほど、人が介入できる場所は減らすのではなく、正確に定義することが重要です。


    公式一次情報

  • AI導入率だけでは変革を測れない — OpenAIのCodex利用データに学ぶ4つのKPI

    AI導入の進捗を「利用者数」や「ログイン率」だけで追うと、肝心の仕事の変化を見落とします。チャットを開いた人数が増えても、業務が委譲・再利用・並列化されているとは限らないからです。

    OpenAIが2026年6月に公開したCodex利用研究は、エージェント導入を測る単位を「会話」から委譲した仕事へ変える必要性を示しています。企業で使える4つのKPIとして読み解きます。

    1. 利用率より「委譲時間」を測る

    個人ユーザーのサンプルでは、2026年5月までに80.6%が「経験者なら30分超」、70.2%が「1時間超」、25.6%が「8時間超」と推定される依頼を少なくとも1回行っていました。

    重要なのは、これはAIの実行時間ではなく、同じ仕事を人が行う場合の推定時間だという点です。導入KPIも「何人が触ったか」だけでなく、30分・1時間・半日といった仕事の塊をどこまで安全に任せられたかで階層化すると、活用の深さが見えます。

    2. 単発利用より「再利用率」を測る

    論文では、Codex利用者の26.6%が2026年6月11日時点でSkillsを使っていました。Skillsは、複雑な手順やツール連携を再利用可能な形にしたものです。

    毎回プロンプトを書き直す状態は、個人の工夫に依存しています。手順をスキル、テンプレート、検証ルールとして外部化できれば、品質の再現とチーム展開がしやすくなります。KPIには「承認済み手順から起動したタスクの比率」や「再利用された手順数」を置くのが実用的です。

    3. 処理件数より「並列運用率」を測る

    毎週、利用者の10%超が一度は3つ以上のCodexエージェントを同時に管理していました。これは、AIが一問一答の助手から、複数の仕事を委譲・監視する運用基盤へ変わり始めた兆候です。

    ただし、並列数を増やすだけでは手戻りも増えます。実務では「同時実行数」とセットで、レビュー待ち時間、差し戻し率、重複作業率を追うべきです。生産ラインと同じで、仕掛かりを増やすこと自体は成果ではありません。

    4. トークン量より「検証済み成果」を測る

    2026年6月11日時点で、OpenAI社内ではCodexとChatGPTを合わせた出力トークンのうち99.8%をCodexが占めました。組織ユーザーでは63.3%、個人ユーザーでは16.5%です。エージェント型ツールへの移行度を示す数字としては興味深い一方、出力トークン量は生産性そのものではありません

    長い出力は、価値の増加にも無駄の増加にもなります。最終KPIは、受入条件を満たした成果物数、レビュー一発合格率、修正を含む完了時間、障害や再作業の削減量に結び付ける必要があります。

    数字をそのまま自社目標にしない

    この研究には重要な制約があります。タスク時間はLLMによる推定で、個人ユーザーの分析はデータ利用に同意したアカウントから無作為抽出した0.1%のサンプルです。またOpenAI社内は、利用制限がなく、知識共有や組織的支援が強い特殊な環境です。論文自身も一般企業の代表例ではないと明記しています。

    したがって99.8%や25.6%をそのまま目標値にするのではなく、KPIの切り口を借りるのが安全です。

    まとめ

    エージェント導入を測る4つの視点は次の通りです。

    • 利用者数ではなく、委譲できた仕事の時間
    • 単発プロンプトではなく、承認済み手順の再利用
    • 処理件数ではなく、レビューを含む並列運用
    • トークン量ではなく、検証済み成果

    AI導入の本当の転換点は、チャットを使う人が増えた時ではありません。仕事を適切な単位で任せ、再利用し、並列に進め、最後に人が検証できる運用へ変わった時です。

    公式資料

  • 長時間AIタスクをHTTP接続に縛らない — OpenAIに学ぶ非同期運用の4原則

    AIエージェントの処理が数分に伸びると、「賢いプロンプト」だけでは運用できません。ブラウザを閉じた、通信が切れた、同じ完了通知が2回来た——こうした普通の障害で、処理の二重実行や結果の取りこぼしが起きます。

    OpenAIのBackground modeとWebhookの公式設計を読むと、長時間タスクで重要なのはモデルよりも状態・再開・重複排除だと分かります。今回は実装時に押さえたい4原則に絞ります。

    1. HTTP接続と仕事の寿命を分ける

    Background modeは、Responses APIのリクエストにbackground: trueを指定し、長時間処理を非同期で実行する仕組みです。クライアント接続が切れても仕事を継続でき、レスポンスIDから状態を取得できます。

    設計上のポイントは、API呼び出しを「結果を受け取る処理」ではなく「仕事を受け付ける処理」に変えることです。受付時にレスポンスIDを自分のジョブIDと結び付けて保存し、画面や通信セッションを唯一の状態置き場にしないことが重要です。

    2. 成功だけでなく、終端状態を扱う

    公式ガイドでは、状態がqueuedまたはin_progressの間は処理中で、それ以外へ移れば終端状態です。つまり実装は「完了したか」だけでなく、失敗やキャンセルも含めて閉じる必要があります。

    • ポーリングには間隔と上限時間を設ける
    • キャンセル操作を用意し、ジョブ側の状態にも反映する
    • 通信エラーと処理失敗を分けて記録する

    なお、実行中レスポンスのキャンセルは複数回呼んでも最終状態を返す冪等な操作として説明されています。利用者が再試行しても壊れにくいAPIは、運用時の安心材料になります。

    3. Webhookは「1回だけ届く」と思わない

    完了を即時に受け取りたい場合はWebhookを使えます。ただし公式ガイドは、まれに同じイベントが重複配送されると明記しています。webhook-idを冪等性キーとして保存し、処理済みなら副作用を再実行しない設計が必要です。

    また、受信エンドポイントは数秒以内に2xxを返し、重い処理は別のワーカーへ渡すことが推奨されています。失敗時は指数バックオフで最大72時間再試行され、3xxリダイレクトは追跡されません。

    これは生産ラインの完了信号に似ています。信号を受けた瞬間に全工程を動かすのではなく、まず受領記録を残し、同じ信号番号を二度処理しないようにしてから後工程へ流します。

    4. 通知を信用する前に署名を確認する

    Webhook URLは外部から到達できるため、受信したJSONだけを見て処理を開始してはいけません。OpenAIは署名シークレットと公式SDKのunwrap()を使い、送信元を検証する方法を案内しています。検証には加工前のリクエスト本文が必要です。

    通知にはレスポンスIDだけを使い、最終結果はAPIから取得する構成にすると、受信処理を小さく保てます。署名エラーは拒否し、シークレットが漏れた疑いがあればローテーションします。

    見落としやすいデータ保持の条件

    Background modeはstore=falseでも利用できますが、非同期実行とポーリングのため、レスポンスデータは一時的にディスクへ保存されます。公式ガイドではおよそ10分と説明されています。ZDR(Zero Data Retention)を前提にするシステムでも、「保存しない」という名前だけで判断せず、処理方式ごとの例外を確認すべきです。

    まとめ

    長時間AIタスクを安定させる4原則は次の通りです。

    • 接続とジョブの寿命を分離する
    • 成功・失敗・キャンセルを終端状態として管理する
    • Webhookの重複を前提に冪等化する
    • 署名検証後に結果を取得する

    モデルの賢さは処理内容を改善します。しかし、仕事を最後まで届けるのは状態機械と冪等性です。AIエージェントを本番へ入れるなら、まず「切れても続く、重なっても一度だけ動く」土台から設計するのが近道です。

    公式資料

  • AIエージェントを「賢さ」だけで守らない — Anthropicに学ぶ3層の封じ込め設計

    AIエージェントの安全対策というと、モデルに危険な操作を拒否させたり、実行前に人へ確認したりする設計が先に浮かびます。しかし、能力と接続先が増えるほど「判断を絶対に間違えない」前提は危うくなります。Anthropicが2026年5月に公開した実運用の知見から見えてくるのは、賢さを監視するより、失敗しても届かない境界を先に作るという考え方です。

    承認ダイアログは、最後の砦にならない

    Anthropicによると、Claude Code利用者は権限確認の約93%を承認していました。確認が増えるほど一件ごとの注意が薄れる「承認疲れ」が起きるため、人が毎回見れば安全とは限りません。

    さらに同社の管理されたレッドチーム演習では、研究者が従業員へ「このプロンプトを実行して」と依頼する形で攻撃しました。その指示には、認証情報を読み出して外部へ送る処理が紛れ込んでおり、同じプロンプトを25回試したうち24回で情報送信まで進んだと報告されています。利用者自身が入力した指示は、モデル側から見ると正規の依頼に見えやすいからです。

    ここで重要なのは、モデルや利用者を責めることではありません。確認操作には確率的な見落としがあり、ゼロにはできないと認めることです。

    守る対象を3層に分ける

    Anthropicは、エージェントの防御対象を大きく3つに整理しています。

    • モデル:システム指示、分類器、学習などで危険な行動を選びにくくする
    • 実行環境:サンドボックス、仮想マシン、ファイル境界、外向き通信制御で到達範囲を制限する
    • 外部コンテンツ:MCP、プラグイン、Web検索などから入る未信頼データと権限を管理する

    モデル層は「何をしようとするか」を整えます。一方、環境層は「何ができるか」を強制します。たとえば認証情報をサンドボックスへ入れず、許可先以外への通信を遮断しておけば、悪意ある指示をモデルが見抜けなくても被害範囲を狭められます。

    用途ごとに隔離の強さを変える

    同社は、製品の性格に応じて異なる隔離方式を採用しています。

    • claude.ai:セッションごとに消えるコンテナでコードを実行し、利用者の端末から分離
    • Claude Code:開発者の端末上で動くため、作業領域への書き込みを許しつつ、ネットワークを初期状態で拒否するOSレベルのサンドボックスを利用
    • Claude Cowork:一般利用者が難しいコマンドを判断する前提を置かず、仮想マシンと限定した共有フォルダで境界を固定

    Claude Codeのサンドボックス導入では、権限確認が84%減ったとされています。境界を強くすると自由が失われるように見えますが、安全な範囲を先に決めれば、その内側では確認を減らして自律性を上げられます。

    設計レビューで確認したい4項目

    実務では、次の順で確認すると設計の穴を見つけやすくなります。

    1. 秘密情報:エージェントの実行環境に本当に置く必要があるか
    2. 外向き通信:必要な宛先だけに制限されているか
    3. ファイル権限:読み取り、書き込み、削除を別々に制御できるか
    4. 未信頼入力:リポジトリ設定、ローカル設定、MCPの返却内容を実行前に信用していないか

    これは車両の機能安全にも似ています。制御ソフトが常に正しく判断すると期待するだけでなく、異常が起きても危険側へ広がらない独立した制約を置きます。AIエージェントでも、モデルの性能評価と被害範囲の設計は別のレビュー項目にするべきです。

    まとめ

    高性能なモデルは失敗を減らせますが、接続できる資源が増えれば、一度の失敗が持つ影響も大きくなります。安全なエージェント運用の核心は「絶対に間違えないAI」を待つことではありません。

    • 承認操作を過信しない
    • モデル、実行環境、外部コンテンツを別々に守る
    • 認証情報と通信経路を実行環境から切り離す
    • 用途と利用者の専門性に合わせて隔離方式を選ぶ

    賢さは性能を上げます。境界は事故の大きさを決めます。エージェントを本番へ入れるなら、この2つを別々に設計することが出発点です。

    公式ソース

    ※本文中の割合や試験結果はAnthropicが公開した自社製品・自社演習の値です。他のモデルや環境へそのまま一般化できる数値ではありません。