git reset --hard、git checkout -- .、git clean -f、git stash clear、git push --force は、いずれもエージェントがすでに書き込みを許可されているファイルに作用します。そのため、書き込みをプロジェクトディレクトリに限定するサンドボックスからは、何も問題が見えません。OpenAI の Codex セキュリティドキュメントは、workspace-write 下のコマンドについて「can still mutate state and perform destructive operations」と述べています。Codex の権限に関する独立した分析(2026-04-20)は端的にこう記しています。「No command-level semantic blocking: the system cannot prevent git reset —hard」。Claude Code のサンドボックスドキュメントは書き込みを作業ディレクトリに限定しますが、そこはまさに未コミット作業が置かれている場所です。
このレイヤーを動かす価値がある理由は、ほかに 3 つあります。
- 確率的なチェックの下に置く、決定的なチェック。 Anthropic は、Claude Code の auto-mode 分類器について、実際の行き過ぎた操作に対する偽陰性率 17% を公表し、「not a drop-in replacement for careful human review」だとしています。deny ルールと hook は、判断任せにしない決定的なレイヤーです。Claude Code 2.1.251 に対して検証したところ、PreToolUse の deny は default、auto、bypassPermissions のいずれのモードでも発火しました(プロジェクトリポジトリの
tests/e2e-live/protection.test.ts)。これはバージョンごとの結果であって恒久的な保証ではないため、このスイートはリリースとホストの更新のたびに再実行します。 - 設定なしで使えるシークレット保護。 Claude Code のサンドボックスドキュメントは、既定の読み取り動作について「still allows reading credential files such as ~/.aws/credentials and ~/.ssh/」であり、「There is no built-in credential deny list」だと明記しています。他の CLI のネイティブ機能で同等の保護を得るには、CLI ごとにオプトインの設定を書く必要があります。CC Safety Net はインストールした時点から、これらのパスとプロジェクトの
.envファイルへのコンテンツアクセスを、シェルコマンドと read、edit、write、search の各ツールにわたってブロックします。 - 13 の CLI にまたがる 1 つのポリシーと 1 つの監査証跡。 5 つのベンダーは互換性のない 5 つの権限機構を提供しており、後から読める判断ログはありません。
rm -rf ~/ で数時間分の作業を消し去り、指示はそれを止められませんでした。Claude Code は現在、そうしたクリティカルパスに対する決定的なサーキットブレーカーを備えています。これは正しい修正で、だからこそこの事例をもう主役には置いていません。しかし、上に挙げた git コマンドにはそのようなブレーカーがありません。CLAUDE.md や AGENTS.md のルールはエージェントを導きますが、技術的に強制する力はありません。CC Safety Net は、その制限を実行前のチェックとして強制します。
インターセプトする操作
CC Safety Net はコーディングエージェントに組み込まれ、ツール呼び出しがマシンに届く前に動作します。 シェルコマンドと、ファイルの書き込み・編集・検索・patch の各操作を検査し、許可するか、明確な理由を添えてブロックするかを決めます。ブロックは通常のツール結果として返るため、エージェントはブロックされた操作を使わずにタスクを続行できます。 判定は表記ではなく意図に基づきます。git checkout -b feature はブランチを作成するため許可し、git checkout -- file は未コミットの変更を破棄するためブロックします。どちらも先頭の 2 語は同じです。
連携が転送するツール操作にも同じ検査がかかり、SSH キー、.env ファイル、クラウド資格情報ストア、コーディング CLI のトークンといった資格情報ファイルを保護します。CC Safety Net は、エージェントがファイルにアクセスする前に、一致する転送済みの読み取りと書き込みをブロックします。ツールの対象範囲は連携ごとに異なります。連携の対象境界とシークレット保護リファレンスを参照してください。
連携方式はエージェントごとに異なります。CC Safety Net を短命な subprocess として実行するエージェントもあれば、プロセス内に読み込むエージェントもあります。インストーラーは、使用するエージェントに合う連携を設定します。1 回のツール呼び出しのライフサイクルは、仕組みを参照してください。