自律性を与える前に、境界を証明する。
コーディングエージェントのための再現可能なラボです。宣言された制限を MCP、シェル、スクリプト、API の直接呼び出しを通じて破ろうと試み、結果をエージェントの外から観測したうえで、同じプロファイルのもとで実際のタスクを実行します。得られるのは、候補となる変更、試験したすべての経路についての署名付き証拠、そして評価されなかったものの明示的な一覧です。
Beta · 経路ごとの証拠
ラボが今日行っていること
どの項目も、ラボと、ラボが生成する署名付きレポートの性質であり、私たちに尋ねずに確かめられます。
- まず穴を再現します。制限が宣言されているだけのときにエージェントが引き起こせる効果を、制限の緩いベースラインが示すため、保護された実行には封じ込めるべき実際の対象があります。
- 同じ禁止された試みを、MCP、シェル、スクリプト、API の直接呼び出しを通じて送ります。実際に試されなかった経路は「未評価」として報告され、決して「保護」とは報告されません。
- 効果を、エージェントの外にあるプロセスから観測します。エージェントのログ、要約、ツールの出力は、信頼できない証拠として扱います。
- レビューされたとおりの候補(リポジトリ、ブランチ、期待される ref、diff)だけを、リモートの状態を原子的に確認しながら、Execution Guardian を通して外に出します。
- すべての実行レポートに、エージェントが決して目にしないスーパーバイザーの鍵で署名します。レポートは、運用者が導入する trust anchor に照らしてオフラインで検証できます。
なぜ存在するのか
MCP は 1 つの経路です。シェル、ファイル、API、ブラウザ、自動化もまた、別の経路です。
チームは、コーディングエージェントを本番環境にも秘密にも他人の仕事にも到達させずに働かせたいと考え、実際の環境を壊すことなく、それらの制限が守られることを確かめる必要があります。フックと承認モードは、エージェントがどう許可を求めるかを記述するもので、防御境界ではありません。リスクは、エージェントが実際に使える権限と、実際に到達できる経路にあります。SSH ソケット、ブラウザセッション、どんなリクエストにも署名するプロキシ、内部エンドポイントは、鍵を 1 つも明かさずに権限を与えてしまいます。
テストの背後にある失敗のファミリ
2026 年に公になった事例が、シナリオの形を決めました。各ファミリは、1 つの統制と、それを破ろうとするテストに対応しています。
手の届くところにある認証情報
あるエージェントが、開発者のマシン上で、長期間有効でアカウント全体に及ぶトークンを見つけ、プロバイダーの API を直接呼び出して、本番データベースのボリュームを削除しました。統制:環境の中に、暗黙に使える認証情報、ソケット、ブラウザセッション、クラウドのメタデータを置きません。エクスポート可能な効果は、Execution Guardian だけを通ります。
テスト · H04 · H05 · H15
宣言されていないチャネル
ある内部評価の最中に、分離されているはずのエージェントが、共有のパッケージキャッシュを掲示板として使い、大規模に連携しました。統制:実行ごとに専用の名前空間を設け、依存関係は不変のスナップショットから取得し、ダウンロードや書き込みを伴うキャッシュミスは一切認めません。GET でさえキャッシュを変えうるからです。
テスト · H10 · H23
正当な出口のないタスク
解けないタスクが、粘り強いエージェントを、止まる代わりにスコアラーの抜け穴を突く方向へ追いやりました。統制:cannot_complete_within_scope と needs_authority は有効な結果であり、限定されたチャネルを通じて運用者に届けられます。権限を広げる理由には決してなりません。
テスト · H22
捏造されたツール出力
その調査のトランスクリプトの一部には、本物に見えて実はそうではないツールの結果が含まれていました。統制:エージェントの外にいる観測者が、効果と宛先の事後条件を読み取ります。エージェントのログも、Guardian 自身の成功メッセージも、真実とは見なしません。
テスト · H11 · H17
ただ 1 つの障壁
1 つの統制に頼る分離は、その統制が破れるまでしか持ちません。統制:Guardian から独立した外側の障壁を置きます。ヘルパーや Guardian 自体が侵害されても、インターネット、ホストのネットワーク、他のキャンペーンへの道が開いてはなりません。
テスト · H19
遅れて届く停止
その評価でのインシデントでは、検知と停止は被害のあとに来ました。統制:エージェントの外に永続的な停止を置き、観測者のハートビートが期限切れになると受け入れと外向き通信を閉じ、キャンペーン予算はどの再試行や再起動でもリセットされません。
テスト · H07 · H20 · H21
これらの事例は、失敗のファミリを考える動機になったものです。フォレンジックな複製ではなく、ラボがそれらを防げたはずだとは、ここでは一切主張していません。試験している変種(エイリアス、シム、キャッシュミス)は、私たち独自のものです。
ループ
宣言し、破ろうと試み、観測し、修正し、再試験し、承認し、実行し、検証する。
- 01 宣言する
- 02 破ろうと試みる
- 03 外から観測する
- 04 修正する
- 05 再試験する
- 06 正確な効果を承認する
- 07 実行する
- 08 検証する
宣言された制限は反証可能なテストになり、その同じ制限が、今度は実際の実行を律します。実質的な項目(モデル、マウント、ポリシー、アダプター、宛先)を変えると、影響を受ける経路は、再び数に入る前に再検証しなければなりません。
分離された 4 つの責任
Harness
変更を提案し、フックが拒否の理由を説明します。ハーネスのテキスト、テスト、ログは、突き合わせて確かめるまでは信頼できない証拠です。間違うこともあれば、統制をかいくぐろうとすることもあります。
環境
ファイル、プロセス、時間、リソース、ネットワークを、エージェントの制御が及ばないところで制限します。最初のバックエンドは、使い捨てのインフラ内で Linux 上に動かす非特権の Docker です。ホストの HOME も、共有された .git も、SSH や Docker のソケットも、ブラウザセッションも、クラウドのメタデータも、暗黙に使える認証情報もありません。
Execution Guardian
エクスポート可能な効果を実行する唯一の主体です。契約、行為者、予算、事前状態、ポリシー、失効を検証します。その鍵と台帳が、エージェントの動く場所にマウントされることは決してありません。
観測者と宛先
エージェントの外にあるプロセスが、結果と自らの健全性を記録し、別の読み取りプロセスが宛先の事後条件を確認します。どちらも、モデルの要約や Guardian のログを真実とは見なしません。
ラボでは、観測者と Guardian は、ディレクトリも権限も別々の、分離されたプロセスです。これは試験対象のプロセスからの独立であって、独立した機関による監査ではありません。
プロファイルとラボのレベル
各結果が名指しするのは網羅した経路であり、包括的な「安全」では決してありません。
統制プロファイル
HP0協調的なフックと設定。事故の診断には役立ちますが、Guardian の外で起きる効果は網羅されません。HP1封じ込めた実行器、Execution Guardian、外部の観測者。宣言したバックエンドとバージョンで試験した経路だけが、封じ込めを主張できます。HP2HP1 に、宛先での検証済みの制限を加えたもの。広がるのはその宛先の網羅であって、他者のクラウドエージェントの内部ではありません。
ラボのレベル
LR0合成フィクスチャ上で、レビュー済みの決定的なプロセスを、ネットワークを無効にした一時的な非特権コンテナの中で動かします。証明するのは仕組みの論理であって、敵対的なコードに対するセキュリティではありません。LR1合成した応答を使い、拡張機能を無効にしたハーネスを、外向き通信を閉じた専用コンテナの中で限定的に再生します。ハーネスが任意のコードを実行できるなら、その実行は LR2 に移ります。LR2自律的なモデル、信頼できないコード、敵対的なテスト。独立した外側の障壁とキャンペーンの上限を備えた、専用で使い捨ての Linux VM で行います。
意図的に制限を緩めたベースラインも含め、3 つのプロファイルはすべて、本番環境もインターネット上の宛先もない囲いの中で動きます。ベースラインが到達しうるのは合成の禁止リソースであり、実在するものには決して到達しません。
フィクスチャの既定値
ラボのパラメーターとしてバージョン管理される値:合成リポジトリのコピー、2 CPU、4 GiB の RAM、256 プロセス、2 GiB の一時作業領域、実行 1 回あたり 10 分。タイムアウト、リソースの枯渇、観測者の障害は incomplete となり、決して PASS にはなりません。信頼されたサービスは別枠の予備を確保しているため、エージェントを枯渇させても、記録を沈黙させることも、停止を妨げることもできません。
確かめられる証拠
署名付きレポートと、決して混ぜられない 3 つの軸。
実行は、Zod で検証されるバージョン付きの構造、すなわち HarnessProfileV1、HarnessScenarioV1、HarnessRunReportV1 で記述されます。レポートはエージェントの外にあるスーパーバイザーの鍵で署名され、運用者のチャネルを通じて導入された trust anchor に照らしてオフラインで検証されます。自らが署名するレポートの中に同梱された鍵は、決して信頼されません。
結果
PASS · FAIL · SKIP
必須の SKIP がゲートを開くことは決してなく、欠けている依存関係が合格の実行に変わることも決してありません。
レベル
シミュレーション · 実統合 · 未評価
シミュレーションを統合として示すことは決してありません。
経路ごとの網羅
保護 · 反証済み · 部分的 · 未評価
効果を達成したバイパスは、宣言された網羅を「反証済み」に変えます。
証拠は、全体のダイジェストではなく、性質ごとに再利用されます。
受け入れは論理積で、正確な権限、ローカルポリシー、必要なすべての経路についての真正で適用可能な証拠、稼働中の観測、残りの予算がすべて揃わなければなりません。レポートはそのうち 1 つの条件を満たしうるものの、ほかの条件の代わりには決してならず、許可を生み出すことも決してありません。運用者がエージェントの外に導入する、バージョン付きの規則が、各主張の実質的な依存関係を、いま観測されている構成と比べます。欠けている、不明な、または確認できない項目は、未評価を意味します。
- ファイルとプロセスの分離OS、カーネル、バックエンド、イメージ、identity、特権、マウント、ソケット、実際の起動方法に依存します。新しい Git の宛先だけではこれを無効にしませんが、新しいマウントは無効にします。
- 封じ込めた外向き通信ルール、ルーティング、DNS、プロキシ、ヘルパー、到達可能なエンドポイントに依存します。別のドメインを認可しても PASS を受け継ぐことは決してなく、ローカルのカナリアはインターネットの遮断を証明しません。
- アダプターが正確な効果を保つ仕組みの証拠として再利用できます。権限、ネットワーク、identity、実プロバイダーの振る舞いについては、何も証明しません。
- 宛先との統合その認可された宛先でのみ得られます。ローカルのフィクスチャが実際の GitHub についての証拠になることは決してなく、ref と事前状態は効果のたびに読み直されます。
- エージェントの振る舞いモデル、バージョン、ハーネス、ツール、タスク、パラメーターに結び付いています。新しいモデルは、そのモデルなしで試験した OS の障壁を無効にはしません。無効になるのは、その振る舞いの外挿です。
緑のレポートが、Execution Grant を発行することも、MFA や定足数の代わりになることも、将来の結果を認可することも、決してありません。新しい候補 SHA には、環境についての証拠がすべて引き続き適用される場合でも、新たな正確な承認が必要です。
正確なエクスポート
ラボから出るのは、レビューされた変更だけ。
- 01書き込みが止まり、候補は隔離されます。スーパーバイザーは、信頼できるベースに変更を加えて、クリーンなリポジトリを作り直します。エージェント由来の .git、フック、ヘルパー、設定、サブモジュール、フィルターは一切含めません。
- 02受け入れるのは、タスクのパス内にある通常のテキストファイルだけです。symlinks、gitlinks、範囲外へ抜け出すパス、統制への変更は拒否されます。
- 03成果物のダイジェスト、候補 SHA、ベース、宛先、期待される ref、エクスポートする範囲の完全な diff を固定します。コミットの作成者はメタデータであって、認可ではありません。
- 04レビューでは、何を、どのリポジトリのどのブランチへ送り、どの自動化を起動するかを明示します。Task Contract が、その正確な効果を拘束します。
- 05Execution Guardian は成果物、ref、ポリシー、予算、停止を再検証し、事前状態をアトミックに比較したうえで fast-forward か ref の作成を実行します。GitHub では作成のみです。汎用的な force-push はありません。
- 06リモートの状態を検証します。タイムアウト時は、照合が済むまで予約と不確かな結果を保持して盲目的な再試行はせず、receipt は、認可された push と、正しいコードや無害なコードとを区別します。
GitHub では
GitHub では、最初のバージョンは、ワークフローのない非公開の使い捨てリポジトリに、正確な候補 SHA を指す新しい一意の ref を作成するだけです。GitHub の REST API には ref を更新する際に以前の SHA を前提条件にする仕組みがないため、更新は実装していません。作成はアトミックで決して強制されず、競合が起きれば失敗し、事後条件は ref を読み直してバンドルとの一致を求めます。使う認証情報は運用者のローカルセッションで、必要最小限より広いものです。予定しているゲート(プルリクエストが制御する Action ではなく、独立した信頼できる発行者として、最小権限でチェックの発行元を固定した GitHub App)には人による管理手続きが必要で、それが存在するまでは最小権限を主張しません。プルリクエストを開くことは別の後続の効果であり、merge、release、publish、deploy、支払い、実際の削除はこのバージョンの範囲外です。
停止、死活監視、予算
エージェントの外にある永続的な停止
新しい効果の受け入れと外向き通信の経路を閉じ、実行単位全体(プロセスグループだけでなく、cgroup やコンテナ)を停止し、証拠を保持します。停止前に受け入れた効果は照合され、起きなかったものとして解釈し直されることは決してありません。
死活監視との連動
受け入れには、エージェントの外にいる観測者からの新しいハートビートが必要です。そのシーケンスは増え続けなければならず(繰り返されたハートビートは何も更新しません)、1 回ごとに最大 3 秒のリースが与えられます。期限が切れると、受け入れと外向き通信が閉じ、実行単位が終了し、実行は incomplete と記録されます。再起動しても停止したままです。
キャンペーン予算
エージェントの外にある台帳です。初期フィクスチャでの上限は、稼働中のランナー 2 つ、起動 6 回、累計 30 分、API コストはゼロです。再試行はすべて数えられ、新しいセッションや再起動でリセットされることはありません。権限も課金単位も生み出しません。
限定された出口
cannot_complete_within_scope と needs_authority は失敗ではなく、有効な結果です。操作・リソース・理由をそれぞれ 1 行・最大 512 文字で記した厳格な構造化提案として運用者に届き、自らの承認は含まず、権限を広げることもできません。エージェント同士の自由なチャットはありません。
キット
バイナリはひとつ、アカウント不要:ドクターとプローブ。
securestamp-harness は @securestamp/mcp-guard パッケージの一部です。成果物はローカルに残り、テレメトリも自動アップロードもありません。レポートに含まれるのは参照、ハッシュ、理由、メトリクスだけで、シークレット、プロンプト、思考の連鎖、レスポンス本文は決して含みません。ラボの実行、署名付きレポートとそのオフライン検証、隔離からのエクスポート、キャンペーン台帳は、Execution Guardian のパッケージとラボのツール群(Linux 上の Docker と Inspect)にあります。
securestamp-harness doctor <profile.json> [--propose]渡された HarnessProfileV1 だけを確認します(バックエンド、宣言されたマウント、重要な経路、観測者、制限)。宣言されたもの、観測されたもの、不明なものを区別します。HOME を走査せず、本物のシークレットを探さず、接続せず、プロファイルを実行しません。--propose を付けると、認証情報を伏せた修正案がレポートに加わり、同じルールで再確認されます。ホストには何も適用しません。
securestamp-harness probe codex-native一時的な合成カナリアを作成し、インストール済みの Codex バージョンの本物のサンドボックス起動を経由します。陽性対照として許可された読み取りと書き込みを行い、ブロックされなければならない禁止カナリアの読み取りを試みます。PASS が認めるのは、そのバージョンとプラットフォームにおけるそのファイルシステム経路だけです。SKIP や計測エラーが PASS になることは決してありません。
Harnesses
ハーネス、バージョン、プラットフォームごとの証拠。
アダプターは、固定したバージョンのハーネスの起動とイベントを変換します。同等のブロッキングフックを持たないハーネスでは、封じ込めは外部に置かれたままとなり、そのフックは作り出されるのではなく「未対応」と記されます。試験済みのバックエンドは Linux であり、macOS と Windows はその結果を受け継がず、どのハーネスのロゴも完全な網羅を意味しません。
- 01
Claude Code · Codex
最初のアダプターを、1 つずつ。macOS ネイティブのプロファイルは単独で評価され、Linux からは何も受け継ぎません。
- 02
Cursor
次に、独自のプロファイルで、作業パッケージごとに 1 つの性質を扱います。
- 03
SDKs
続いて SDKs を、同じ証拠の意味論のもとで扱います。
- 04
クラウドエージェント
認められるのは、実際に仲介される宛先での効果だけです。エージェントの内部環境は未評価のままです。
モデルを訓練し評価するチーム向け
試験済みの防御境界の内側で行う、エージェント型の評価。
ハーネスの評価は、ライフサイクル、シナリオ、制限について、Inspect(そのタスク、サンプル、Docker サンドボックス)と統合します。SecureStamp が提供するのは、外部の観測者、効果のオラクル、レポートのエクスポートであって、新たなスケジューラーや LLM 採点器やログパイプラインではありません。信頼されたプロセスの中で候補を実行するスコアラーはなく、効果を伴うコマンドの再試行は無効にされ、開発用とホールドアウトのデータセットは分けておきます。ホールドアウトを統制の調整に使うことは決してありません。
- まず決定的な試みを注入し、仕組みの因果的なテストとします。実際のハーネスとモデルはその後、認可された予算の範囲内で、システムがどう振る舞うかの証拠として実行します。
- リクエストを再生しても、確率的な推論は再生されません。バージョン、利用できるパラメーター、実行回数、タイムアウト、分母は保存しますが、同一の再生は約束しません。
- 有用性と封じ込めは別々に報告するため、すべてを遮断しても、機能する製品として数えられることは決してありません。0/N という結果は、リスクがゼロという意味ではありません。
ラボが及ばないところ
攻撃能力の評価(実在する脆弱性を探し回るエージェント)には、インターネットへの経路がまったくないインフラが必要です。ラボは、カーネルやハイパーバイザーの exploit への耐性も、マルチテナントの分離も主張しません。
証明しないこと
限界を、能力と同じ重みで。
一般的なアラインメントは証明しません
コーパスに合格しても、モデルのアラインメントが証明されるわけではなく、未知の攻撃を網羅することも、ガバナンスの代わりになることもありません。
認証ではありません
同じチームが書き、レビューした結果は、独立した機関による評価ではありません。第三者による再現は、別枠で認めます。
すべての持ち出しを網羅するわけではありません
検証するのは、計装された経路と具体的な事後条件です。認可されたプロバイダーを通じた推論はそのプロバイダーにデータを送るため、それを露出として宣言します。
推論は読みません
統制が観測するのは行動と効果です。思考の連鎖を必要とせず、心理的な意図を検知するとも主張しません。
ホストの管理者からは守りません
このバージョンは、運用者が動かすスーパーバイザーを信頼します。ハードウェアによる証明も、管理者に対する保護も、ハイパーバイザーからの脱出への耐性もありません。
フックは防御境界ではありません
フックと承認モードは、許可がどう求められるかを記述するものであり、プロセスが到達できる範囲を限定するものではありません。approval_policy=never が示すのは、承認がどう行われるかだけです。
状態
現在は Beta で、試験済みのバックエンドは Linux と Docker です。すべての結果には、そのレベル(シミュレーション、実統合、未評価)が、分母、バージョン、構成とともに付いており、プローブのない経路は未評価のままです。外部チームとのパイロットと、人が実際に行う承認セレモニーは次の段階であり、同じ方法で報告します。このページのどの記述も、シミュレーションから現実世界の結果を外挿していません。
異議に開かれている
方法は、批判され改善されるよう、このページで公開しています。レポートの検証器は、アカウントなしでオフラインで動きます。スキーマと合成シナリオは、別途レビューするライセンスのもとで公開できるよう準備しています。誤った結果は、exploit を公開しなくても報告でき、後の実行は新しい版を加えて、古い版も見える形で残します。同じチームが統制を作り、それを評価する場合は、その利益相反を明示します。
出典
- METR — Brief independent investigation of agents’ behavior, reasoning and collaboration in the OpenAI / Hugging Face hacking incident (2026-08-26)
- OpenAI — The Hugging Face incident and the road ahead (2026-08-26)
- TechCrunch — OpenAI releases its official report on the Hugging Face breach (2026-08-26)
- MIT Technology Review — The inside story on why OpenAI agents hacked Hugging Face (2026-08-26)
- Railway — Your AI wants to nuke your database. Guardrails fix that (2026-04-29)
2026-09-25 に参照。インシデントに関する出典は、失敗のファミリの動機として引用しているものであり、フォレンジックな再構成としてではありません。