8月17日、Help Net Securityが「Hazmat: Open-source containment for AI agents」と題した記事を公開した。AIコーディングエージェントを自分のマシン上の別アカウントで隔離して実行するオープンソースツール「Hazmat」を詳しく紹介した内容だ。
Claude CodeやCodexをそのまま起動すると、エージェントはあなた自身のユーザー権限で動く。つまり、SSHキー、クラウドの認証情報、長年積み上がってきたホームディレクトリの設定ファイル群——すべてにアクセスできる状態だ。
AIコーディングエージェントが急速に普及する中、このリスクはあまり議論されてこなかった。エージェントはユーザーの指示に従って動くだけでなく、MCPサーバーや外部ツール呼び出しを通じてサードパーティのコードも実行する。悪意あるプロンプトインジェクションや、依存パッケージへの細工(いわゆるAIエージェントを標的にしたサプライチェーン攻撃)によって、エージェントが認証情報を外部へ送信させられるシナリオは、すでにセキュリティ研究者から警鐘が鳴らされている。にもかかわらず、多くの開発者はエージェントをそのままフルアクセス権限で走らせている。
Hazmatは、このリスクに正面から対処するツールだ。
エージェントに「自分の家」だけ渡す
Hazmatの基本的な仕組みはシンプルだ。AIコーディングエージェントをマシン上の別アカウントで動かし、指定したプロジェクトディレクトリだけを渡す。SSHキーや認証情報フォルダはそのセッションから届かない場所に置かれる。
対応しているハーネス(エージェントの起動ラッパー)は以下の通りだ:
- Claude Code
- Codex
- OpenCode
- Cursor Agent
- その他複数、および自作スクリプト
起動前に「何を触れるか」を確認する
Hazmatで特徴的な設計が、セッション開始前の条件表示だ。エージェントが何かをする前に、1つのコマンドでそのセッションの条件一覧が出力される。
表示される内容:
- エージェントが書き込めるディレクトリ
- 読み取り専用でアクセスできるパス
- ネットワークやサービスへのアクセス可否
- バックアップが実行されるかどうか
この出力が「エージェントが何に触れるかを確認できる最後の機会」だと記事は明記している。その後は人間が監視しない状態で処理が進む。確認して納得してから走らせるという、シンプルだが重要な一拍が設計に組み込まれている点が、他のエージェント実行環境との明確な違いだ。
macOSおよびLinuxでの対応状況
macOSでは、起動時に以下の4ステップが順番に実行される:
- プロジェクトのバックアップ
- そのセッション専用のサンドボックスポリシーをビルド
- エージェントアカウントへ切り替え
- ハーネスを起動
この時点ですでにファイアウォールルールが有効になっている。
Linuxについては、ネイティブ実装が用意されており標準的な方法で動作する。一方、AppleのコンテナツールをバックエンドとするLinux向け実装も存在するが、こちらは現時点では実験的フラグの後ろに置かれており、安定版ではない。つまり、Linuxユーザーはネイティブ実装を使うのが現状の推奨となる。
1分で試せるデモ
境界が実際に機能するかは、付属のデモスクリプトで確認できる。スクリプトは使い捨てプロジェクトを作成し、ネットワークをオフにしてから、隔離された単一コマンドを実行する。そのコマンドはプロジェクト内にファイルを書き込み、かつ本物のホームディレクトリにある秘密鍵へアクセスしようとする。
結果:ファイルへの書き込みは成功し、秘密鍵は読み取り不可。終了後の比較ではプロジェクト内に1ファイルが増えただけで、他は何も変わっていない。
形式仕様で設計を検証
コードの約5.5%がTLA+で書かれた形式仕様だ。TLA+はシステムがどう振る舞うべきかを数学的に記述し、機械的にチェックできる仕様記述言語で、分散システムの設計検証などに使われる(AmazonがDynamoDBやS3の設計検証に活用したことで知られる)。
ただし、記事は正直にこう注記している——検証されたのはあくまで「紙の上の隔離モデル」であり、実際にインストールするGoバイナリは別の実装であり、それ自体に固有のバグがある可能性がある。形式仕様は設計の正しさを担保するが、実装の正しさを自動的に保証するものではない。この点を過信しないよう記事が明示している姿勢は誠実だ。
試す前に把握しておくこと
HazmatはGitHubで無償公開されている。AIコーディングエージェントが開発ワークフローに深く入り込んでいる今、エージェントが「あなたと同じ権限で動いている」という前提を一度疑う価値はある。Hazmatはその問いへの一つの実践的な回答だ。
詳細はHazmat: Open-source containment for AI agentsを参照していただきたい。