すべての投稿に戻る
公開日 · 著者 Renaud Deraison

なぜ Bromure Agentic Coding はサンドボックスではないのか

サンドボックスは、コーディングエージェントを動かす価値そのものである速さを、開発者に手放すよう求めます — すべての依存関係を事前に承認し、ドメインの許可リストを保守し、組織が精査していないパッケージには決して触れない。だから開発者はそれをオフにします。Bromure Agentic Coding はその取引を拒みます。エージェントが何をするかを制約するのではなく、ハイパーバイザーに一本の硬い線を引き、その内側では何でもできるようにします。これは、なぜ境界がサンドボックスに勝るのかという基礎となる主張であり、その境界が真実にする3つの保証 — 盗む認証情報がない、広いトークンをワイヤで絞る、サプライチェーン攻撃をtarballが着地する前に止める — についての話です。そして、線がいまや真実にする4つ目についても — エージェントが読むコンテンツの中のプロンプトインジェクションを、モデルがそれに従う前に捕らえるのです。

サンドボックスはある取引を持ちかけます。コーディングエージェントを 有用にしているものの一部を手放せば、その見返りに安全に保ってあげよう、 と。開発者は毎回その取引を拒みます — サンドボックスをオフにするか、 そもそもオンにしない — そしてそれは正しいのです。エージェントの仕事は、 雑然とした、精査されていない領域を速く進むことです。Bromure Agentic Coding はそれを制約しません。ハイパーバイザーに一本の硬い線を引き、 その内側では好きなことを何でもできるようにします。

これは基礎となる記事です — 一度書いて、ほかの記事が指し示すための もの。インシデントについての記事ではありません。なぜ私たちが Bromure Agentic Coding をこのように作ったのか、そしてなぜ「これはサンドボックス だ」が私たちが訂正し続けている説明なのかについてです。

開発者はシステム管理者ではない。

コーディングエージェントをあなたのマシンに置く理由は速さです — 具体的な 種類の速さ。夜の11時に、社内の誰も精査していないパッケージを引いてきて、 あるアイデアが成り立つかを確かめる。ライブラリを試し、その例を動かし、 合わなければ捨てる。これは人から矯正して取り除くべき欠陥ではありません。 それこそがワークフローであり、エージェントを持つに値する理由のすべて なのです。

ですから、各依存関係を事前に承認させたり、エージェントが到達してよい ドメインのリストを誰かに保守させたりするモデルはどれも、それが守ろうと しているものと戦争状態にあります。それは、自分が展開された目的である 活動そのものを遅らせます — そして出荷の邪魔をする統制には、ただ一つの 運命があります。それはオフにされます。開発者が仕事を片付けるために オフにする統制は、最初から統制ではなかったのです。

「プライベートで精査済みのミラーを動かせ」も、同じように的を外して います。実験にとって重要なパッケージとは、まだ誰も精査していないもの だからです。承認済みの依存関係のミラーは、昨日のアイデアのミラーです。

ですから問題は、開発者が精査されていないコードに触れるのをどう止めるか ではありません。彼らは触れなければならない。それが仕事だからです。 問題は、彼らのキーチェーンを取引の一部にすることなく、そのすべてに 自由に触れさせるにはどうするか、です。

本番のために作られたサンドボックスは、作業台に合わない。

最初に手が伸びるのはネットワークサンドボックスです — 堅牢化された コンテナ、NVIDIA のもの、出回っている Docker-Compose のレシピ。形は いつも同じです。エージェントが到達してよいホストを列挙し、残りを拒否 する。エージェントが既知の、狭い仕事を持つときは、これは見事に機能 します。3つの内部サービスと1つのモデルエンドポイントと話す本番エージェント は、許可リストの後ろで永遠に暮らせます。リストが短く、変わらなくなる からです。

アイデア出しには短いリストがなく、変わり続けることが決して止まりません。 実験が到達するかもしれないあらゆるレジストリ、CDN、Git ホスト、一度 きりの API のホワイトリストを保守したい人はいません — それは決して 終わらず、毎日午後ごとに膨らみ、正当なものをブロックした日が、開発者が 自分の手で詰まりを解消するためにそれを無効化する日です。許可リストは 間違っていません。スコープがすでに既知のエージェントを守ります。 作業台の価値のすべては、スコープがまだ既知ではないことなのです。

具体的なある午後を取り上げましょう。ある開発者が、数十メガバイトにまで 膨らんだ Node の設定ファイルを抱えていて、使っている YAML パーサーが それで詰まります。候補はいくつかあります — js-yamlyamlyaml-js — そして 40 MB のファイルをヒープを吹き飛ばさずに耐えられるのはどれかを 知る唯一の方法は、3つすべてをインストールして、それぞれにファイルを 投げつけることです。3つのライブラリをベンチマークするために プライベートミラーに入れてもらおうとチケットを切るのは、まさに逆さま です。開発者は先にテストして、勝者をミラーに昇格させたいのであって、 その逆ではありません。事前精査は、実験がくぐり抜けるために存在する ゲートそのものなのです。

その下には、もっと静かな問題があります。これらのツールはエージェントを 本番で — 展開され、スコープされ、監督された状態で — 堅牢化します。 しかしサプライチェーンの侵害は、開発者のラップトップに、実験の最中に 着地します。~/.aws~/.npmrc に本物の認証情報がある状態で。 開発者がそこに置くからです。このモデルは攻撃のない場所で最も強く、 攻撃のある場所では存在しないのです。

いたちごっこのサンドボックスは、第2ラウンドで負ける。

もう一つの本能は、エージェントをホスト上に残したままプロセスを 牢に入れることです — claude プロセスが ~/.ssh~/.aws を読むのを ブロックする。隙がないように感じます。エージェントの仕事はコードを 書くことであり、そのコードは同じマシンで動く、と思い出すまでは。

エージェントがプロジェクトの足場を組みます。それからあなたが — または エージェントが、あるいは別のツールが — それが書いたばかりのリポジトリで npm install を走らせます。その npm install は牢に入れられた プロセスではありません。その postinstall フックは、ラップトップ上の ほかのどのプログラムとも同じように ~/.aws/credentials を読みます。 なぜなら、それはまさにそういうものだからです。あなたが走らせるほか すべてと、一つのファイルシステムと一つのキーチェーンを共有する、 別のプログラムなのです。

あなたのラップトップ — 一つのファイルシステム、一つのキーチェーンプロセスの牢claude✗ read ~/.ssh✗ read ~/.awsブロック済み — 隙がなく見える./repo — エージェントが書いたばかりpackage.json "postinstall": "node x.js"第2のシェル — 牢の外$ npm install postinstall を走らせる牢が名指ししていない別プロセスキーチェーン~/.aws/credentials~/.ssh/id_rsa~/.npmrc本物のトークン✗ 牢はこの経路を拒否本物の認証情報を読む — 誰も牢に入れなかった
いたちごっこの穴。プロセスの牢は claude プロセスがキーチェーンに触れるのをブロックします(破線の経路、拒否)。しかしエージェントの実際の出力 — postinstall フックを持つリポジトリ — は、牢がその名を聞いたこともない兄弟プロセスで動きます。第2のシェルを開いて npm install を走らせれば、その postinstall は ~/.aws/credentials を自由に読み、流出させます。一つのホストでは、あらゆるプロセスが一つのファイルシステムと一つのキーチェーンを共有するからです。牢は間違ったものの周りに境界を引いたのです。危険は決して名前のついたプロセスではなく、共有されたマシンだったのです。

牢は一つのプロセスの周りに境界を引きました。危険は決してそのプロセス ではなく、マシン上のあらゆるプロセスが一つのファイルシステムと一つの キーチェーンを共有していることでした。だからあなたはパッチを当てます — シェルも牢に入れ、次に node、次にパッケージマネージャ — すると 攻撃者は、あなたが鍵をかけ忘れたドアを見つけ続けます。一つのホストでは、 同じ秘密への別のプロセス、別の経路がいつもあるからです。それがゲーム であり、胴元にはいつも別のドアがあるのです。

線は一度だけ、ハイパーバイザーで引く。

Bromure は、境界を一段下げることでこのゲームを止めます。エージェント、 それが生み出すシェル、それがインストールするパッケージ、そしてそれら パッケージが走らせるあらゆるコードは、すべてプロファイルごとの Linux VM の中で暮らします。あなたの本物の認証情報は、決してそこに入りません。

違いは、線の種類です。プロセスの牢はプロセスについてのポリシーで あり、兄弟プロセスがそれをかわします。VM の境界はゲストとホストの間の 壁であり、ハイパーバイザーによって強制されます — 一つの VM が別の VM の メモリを読むのを止めるのと同じ壁です。それを越えるためのシステムコール は存在しません。内側のコードは、あなたのキーチェーンへたどり着く推論を することができません。キーチェーンが、その世界にそもそも存在しない からです。

そしてその線の内側で、あなたは自由です。精査されていないパッケージを インストールする。その postinstall を走らせる。エージェントにシェルの 設定を書き換えさせ、ディスクを埋めさせ、ツールチェーンを壊させる。VM は 使い捨てで、重要なものは何も持っていませんでした。その自由こそが眼目 です — まさにサンドボックスが奪い、きれいな境界が取り戻すもの。作業台を 役に立たなくすることで安全を得るのではありません。価値あるものが そもそも部屋になかった場所に作業台を変えることで、安全を得るのです。

その同じ線こそ、3つの保証が、エージェントが覆せる助言であることを やめ、その下で強制される事実になる場所です — VM が外に対してすること すべてが、それを越えなければならないからです。

線が真実にする3つのこと。

プロファイルごとの VM — 何でもインストール、何でも実行、何でも破壊エージェント · 生成したシェル · npm / pip · 信頼できない postinstall コードファイルシステムはスタブのみ — aws_secret = stub-… _authToken = stub-… id_rsa = stub-…ここに本物は何もない、だから盗む価値も何もないパッケージを取得認証情報を使用push / drop / deleteハイパーバイザーの境界 — 内側のコードが越えられない唯一の線① 悪意あるパッケージをブロックスキャン:OSV + socket.devクールダウン:< 2日は保留悪意ある tarball は着地しない② 盗む認証情報がないstub-token ⇄ real tokenワイヤで入れ替えホストの掃討はダミーを見つける③ 変更の前に確認読み取りは通過 · 書き込みは停止ホスト上でプロンプトそのままの呼び出しが見えるホスト — 本物のトークン、ブローカーの後ろに~/.aws · ~/.ssh · ~/.npmrc — 決して VM に入らず、ワイヤでのみ、許可した呼び出しにのみ入れ替えられる
一つの境界、3つの統制、エージェントの下で強制される。VM の内側では、エージェントは何でも好きなことをします。しかしあらゆる横断はハイパーバイザーが仲介します。パッケージの取得はスキャンされ(OSV + socket.dev)、クールダウンより新しければ保留されます。認証情報の使用は、ホストのプロキシがワイヤで本物のトークンと入れ替え、また戻すスタブに出会います。状態を変える書き込みは、ホスト上のプロンプトのために一時停止します。本物のキーチェーンは線の下にあり、決して VM に入りません。エージェントはそのどれも迂回できません。境界を越える経路が、それを通る以外に存在しないからです。

盗む認証情報がない — 秘密は最初から部屋になかった。

本物のトークンはホストに留まります。VM が手にするのはスタブです。 構文的には妥当だが、その中身は公開インターネット上では何の意味も持たない 認証情報ファイル。エージェントが本物のトークンを必要とする正当な 呼び出しをするとき、ホストのプロキシがワイヤでスタブを本物の秘密に 入れ替え、レスポンスからそれを再び抜き取ります。侵害された依存関係が ~/.aws/credentials~/.npmrcid_rsa を求めてファイルシステムを 掃討しても、見つかるのはダミーです。これがトークンスワップです。 認証情報は存在し、エージェントはそれを本来の用途に使い、盗まれうる複製は、 エージェントの世界が届くどこにも存在しないのです。

広いトークンを絞る — 使用の前に確認、変更の前に確認。

本物のトークンは、たいていタスクよりも広い権限を持っています。ブローカー は付与を短命でスコープ付きに保ち、そして — 元を取る部分ですが — 読み取り と書き込みを別々に扱います。読み取りは通過します。状態を変える呼び出し — git pushDROP TABLE、AWS の Terminate* — は境界で一時停止し、 ホスト上であなたに尋ねます。エージェントが書いた要約ではなく、そのままの 操作を示して。

それは、広いトークンが意味することを変えます。本番を削除できる トークンも、人間が正確な呼び出しを見て「はい」と言ったときにだけそれを 実行できる。認証情報に印字されたスコープが、被害半径であることをやめる のです。エージェントは自分自身を事前承認できず、モードを格下げできず、 付与を読むこともできません — 決定は線の向こう側で暮らしているからです。 あるエージェントが本番データベースを9秒で削除したとき、 原則は同じでした。コマンドを実行したがるものが、それが安全だと判断する ものであってはならないのです。

最初に気づく者になるな — サプライチェーンをドアで止める。

毒入りパッケージを止める最良の瞬間は、それが着地する前です。あらゆる 取得は境界を越えるので、プロキシはそれをスキャンします — 既知の CVE に はOSV、データベースがまだ捕まえていないものにはsocket.devを。 不正なインストールスクリプト、タイポスクワット、1時間前に公開された 侵害。そしてクールダウンを強制します。直近2日間(調整可能)のあらゆる リリースは、エコシステムが追いつくまで、ただインストールできません。 ワームの活動窓のすべては、公開取り下げの間の隙間です。1日経った パッケージを拒むことは、炭鉱のカナリアになることを拒むことです。 postinstall フックは取り込みの途中で tarball から剥ぎ取られ、ハッシュ が固定されてインストールが依然として検証を通るようにされます — だから 着地するパッケージは不活性のまま着地します。これらのどれも、開発者に 何かを精査するよう求めません。彼らは好きなものを引いてくる。境界は、 それを待ち受けるものなのです。

他のすべてが力尽きるところ

多くのツールは1つの層しか守りません。 Bromure はそのすべてを守ります。

隔離、エージェントからシークレットを遠ざける、その使い方を絞り込む、サプライチェーンをスキャンする、プロンプトインジェクションを食い止める——たいていはどれか1つに絞られます。よく使われるツールに同じ脅威モデルを当てはめ、それぞれがどこで止まるのかを並べました。

保護
Dev ContainerVS Code
nonokernel sandbox
agent-vaultoctokraft
Agent VaultInfisical
Docker SandboxesmicroVM
BromureAgentic Coding
隔離の境界
被害範囲が止まる場所
同じコンテナ、カーネル共有
カーネル許可リスト、独自カーネルなし
エージェントはその場で実行
プロキシのみ、エージェントは隔離されない
microVM、独自カーネル
ハードウェア VM、独自カーネル
シークレットをエージェントから遠ざける
本物の認証情報を読めてしまうか?
SSH エージェントと git 認証情報を転送
鍵ファイルを遮断、一部は仲介
パイプで注入、読み取り経路なし
プロキシが通信上で付与
ホストプロキシがヘッダを注入
通信上でスタブと交換
認証情報の範囲と承認
利用ごとの制限・読み取り専用・期限・承認
利用ごとの絞り込みなし
承認フロー + 送信フィルタ
シークレットごとの TTL、シェルを遮断
エンドポイントごとの送信フィルタ
ドメイン許可リスト、VM 内のコードはなお使える
宛先ごとの承認 + TTL
サプライチェーンのスキャン
悪意ある/脆弱なパッケージを捕捉
レジストリのスキャンなし
署名のみ、パッケージスキャンなし
対象外
対象外
パッケージスキャンなし
Age-gate、OSV、socket.dev
プロンプトインジェクション検出
信頼できない内容とルールファイルをスキャン
PromptGuard + ModernBERT
監査証跡
エージェントが何をしたかを記録
コンテナのログのみ
改変不能なローカル監査
リクエストのログ記録
リクエストのログ記録
セッション全体のトレース、暗号化
サプライチェーン目録(Enterprise)
取得した全パッケージの記録
全依存関係と判定、検索可能
トークン使用量(Enterprise)
どのファイルが最もトークンを消費するか
ファイル・リポジトリ・モデル別
完全 — 標準搭載・強制 部分的 — 限定的または任意 なし — 未対応

トークンを隠すことと、その利用を統制することは別物です。Docker Sandboxes は生の値を VM の外に保ちますが、そのプロキシはサンドボックスが送るあらゆる外向き通信にその認証情報を付与します。そのため、脇でこっそり入り込んだ改ざん済みパッケージは、その値を一度も見ることなく、許可リスト上のサービスに対してそれを使えてしまいます。実行前にパッケージをスキャンし、利用のたびに承認・読み取り専用・TTL でゲートし、エージェントが回避できない単一の境界で5つの制御をすべて強制するのは Bromure だけです。

各プロジェクトの公開ドキュメント(2026年6月時点)に基づきます。ここでの agent-vault は octokraft/agent-vault(パイプ方式のシークレット注入)を指し、Infisical の Agent Vault(HTTP 認証情報プロキシ)とは別物です。Docker Sandboxes は実験的プレビューで、仲介された認証情報は VM 内のあらゆるものから使える状態のままです。フリート全体のパッケージ目録とトークン使用量の集計は Bromure Enterprise Manager が提供します。これらのツールは変化が速いため、古い点があれば教えてください。

4つ目のこと:データの中の指示は、命令ではない。

上の3つの保証は、表に出しておく価値のある一つの前提を共有して います。どれも、何かを奪うコードから守るものだ、ということです — 認証情報、トークン、新しい tarball が実行を手にする機会。何も 奪わない攻撃があります。ただエージェントに何をすべきかを伝える だけです。エージェントが読む README に埋もれた一行、取得した ページの中の文字列、ツールの出力に含まれる一文、エージェントが 常時の命令として扱う CLAUDE.md に隠された指示 — モデルはそれを コンテキストとして取り込み、指示として従ってしまいます。ファイルを 漏らせ。チェックを弱めろ。テストを飛ばせ。サンドボックスはこの どれについても意見を持ちません。監視している壁を何も越えなかった からです。指示はデータとして、エージェントが読むはずだった コンテンツの中に届いたのです。

しかし、それは線を越えました — モデルが目にするものは、すべて 越えるのです。だから 2.4.0 以降、境界がそれを 先に読みます。オンデバイスで、ホスト側で。ローカルの PromptGuard 分類器が、モデルへ流れる信頼できないコンテンツ — ファイルの 読み込み、Web の取得、ツールの出力 — を、そこにあるべきではない 指示についてスコアリングします。そしてエージェントが疑いもなく 従うルールファイル — CLAUDE.mdAGENTS.mdGROK.md — には、 より厳格な二重のパスが入ります。不可視 Unicode、双方向テキストの トリック、「以前の指示を無視せよ」式のメタ指示を探す決定論的な スキャンに加えて、キーワードフィルタが見逃す冷静な言い回しの悪用を 捕らえる、ファインチューニング済みの ModernBERT 分類器です。牙の 鋭さはプロファイルごとに選べます。Security Log にログする、 確認してフラグの立ったテキストを見る、あるいはモデルが毒された スパンを見る前にリクエストをブロックする。何も Mac の外には 出ません。

この配置は、ほかの3つと同じ論法です。すでにインジェクションを 呑み込んだエージェントに、それを報告させることは信頼できません — インジェクションの最初の指示は、たいていこのことには触れるなの 何らかの変奏だからです。検知器はエージェントに尋ねません。線の 向こう側、エージェントの説得が届かない場所で、トラフィックを 読むのです。

線があなたを救わないところ。

境界は特定の形であって、魔法の言葉ではありません。正直な縁を4つ。

プロファイルは長命なので、永続性は永続する。

Bromure のプロファイルは使い捨てのディスクではありません。自分自身を 起動パスに書き込むペイロードは、次のセッションで目覚めうる — ホスト キーを持たないゲストと、短命で、プロンプト付きで、スコープされた トークンしか話さないブローカーへ。何もない部屋にいる存在ですが、 それでも存在は存在です。

あなたが承認した書き込みは、起きる書き込みだ。

プロンプトは、エージェントがあなたに告げなかった呼び出しを捕まえます。 それはあなたの diff を読みません。git push を承認すれば Bromure は それを転送します — 原理的には、あなたが気づかなかった毒入りの ワークフローも含めて。それは決定をあなたに移し、実際の操作を示します。 それを読むのは、依然としてあなたの仕事です。

クールダウンは窓であって、壁ではない。

2日は、観測された公開から取り下げまでの隙間に合わせて調整されています。 辛抱強い攻撃者は、侵害されたバージョンの上にクールダウンを越えて 座り続け、3日目にインストール可能になりえます。それは当日のワームを 飢えさせますが、単に古くなっただけのパッケージを保証しはしません。 socket.dev と OSV は依然として自分の役割を果たさなければなりません。

ブローカーを意図的にスコープせよ。

隔離は被害を封じ込めます。スコープは、それがどれだけ大きくなりえた かを決めます。リポジトリを読むだけのプロファイルは、それを書ける トークンを持つべきではありません。決して公開しないものは、公開 トークンを持つべきではありません。線は秘密を VM の外に保ちます — そもそもどの秘密が存在するかは、依然としてあなたの判断です。

私たちが守る線。

これが約束です。開発者は、キーチェーンを守るために、システム管理者に なる — 許可リストを保守し、すべての依存関係を事前に承認し、エージェントを 動かす価値であった速さを手放す — 必要があってはなりません。サンドボックス は安全を有用性との取引にし、開発者は賢明にも有用性を選び続けます。境界は その取引を拒みます。内側では何でもしてよい。内側は使い捨てだから。 そして重要な4つのこと — あなたの認証情報、トークンのスコープ、あなたに 届くパッケージ、あなたのモデルに届く指示 — は、内側のコードが言い争えない線で決められます。

だからこそ「これはサンドボックスだ」は、私たちが訂正し続ける説明なの です。サンドボックスはエージェントを制約します。Bromure は境界を制約し、 エージェントを自由にします。Bromure Agentic Coding は 無料で、オープンソースで、本日出荷されました。