メインコンテンツへスキップ
まず npx cc-safety-net status で判定を確認し、次に npx cc-safety-net doctor で詳しいレポートを取得してください。多くの問題はここで見つかります。そのうえで、下から該当する症状を探してください。

まず診断を実行する

status は、ready または degraded の判定、有効な保護、未解決の問題を 1 件ずつ表示します。doctor は、各エージェントの連携の確認、ブロックのセルフテスト、ルールと policy.json の検証、更新の確認を行います。status と doctor を参照してください。

コマンドが検査されないまま実行される

ブロックされるはずのコマンドが、何のメッセージもなく実行されてしまう状態です。エージェントの連携が存在しないか、無効になっているか、読み込まれていません。
1

doctor を実行する

npx cc-safety-net doctor は、各エージェントの連携状態と、読み取った設定ファイルを報告します。
2

インストールを再実行する

エージェントごとのインストールにある、そのエージェント用のインストールコマンドを再実行します。管理対象のエントリが欠けていたり無効になっていたりすれば修復されます。認識できない設定やファイルがあると報告された場合は、ファイルを上書きせず、メッセージの指示に従ってください。
3

エージェント固有の原因を確認する

下の表を参照してください。
4

エージェントを再起動する

変更したら、エージェントのセッションを再読み込みするか再起動します。

コマンドの実行前に毎回数秒待たされる

正常なチェックは 1 秒を大きく下回る時間で終わります。数秒の遅延は解析ではなく、npx によるパッケージの解決が原因です。Antigravity CLI、Cursor、Devin CLI、Factory Droid、Grok Build、Hermes Agent、Kimi Code のグローバルフックは、呼び出しのたびに npx -y cc-safety-net を実行します。Claude Code のプラグインは同梱されたコピーを実行するため、この問題は起きません。
キャッシュが温まっていれば、1 つ目のコマンドは数百ミリ秒で終わるはずです。--prefer-offline のほうだけが速い場合、npx は npm レジストリの応答を待っています。これはネットワークかプロキシの問題です。そうでなければ、npm cache verify で肥大化または破損した npm のキャッシュを修復できます。

破壊的なコマンドがブロックされずに実行された

多くの場合、原因は文書化された許可か、想定より低い安全レベルです。次の順に確認してください。
  1. npx cc-safety-net explain "<the command>" を実行します。検査したルール、実際に適用されている安全レベル、そのレベルで無効になっているルールが表示されます。
  2. レベルが standard なら、standard で意図的に緩めている範囲に該当する可能性があります。コマンドが敵対的な文脈から来る可能性があるなら、strict か paranoid を使ってください。
  3. Claude Code では、自分で承認した可能性があります。Claude Code がブロックせずに確認を求める場合を参照してください。
  4. カレントディレクトリ配下の rm -rf のように、意図的に許可されているコマンドの可能性があります。ブロックされるコマンドを参照してください。
  5. CC Safety Net がルールの設定元を破棄すると、npx cc-safety-net status の判定は degraded になり、その設定元の拒否は適用されなくなります。設定の復旧を参照してください。
  6. status の Project policy の欄には、このプロジェクトでプロジェクトの policy.json が緩めた項目が並びます。報告される緩和を参照してください。
  7. CC Safety Net が中身を解析しないプロキシ経由でコマンドが実行された可能性があります。npx -y cc-safety-net rule wrapper add <command> でそのプロキシを登録してください。
  8. エージェントがそのツールやディレクトリをカバーしていない可能性があります。エージェント固有の制限を参照してください。
どれにも当てはまらない場合は、検出漏れとして公開の GitHub Issue で報告してください。そのまま動く攻撃コードではなく、コマンドの形式を説明します。すぐにブロックしたい場合は、カスタムルールを追加してください。

必要なコマンドがブロックされる

メッセージにはルールの名前が示されます。npx cc-safety-net explain "<the command>" で一致した理由を確認し、ブロックされたコマンドを許可するの手順でルールをオフにするか、パスを許可してください。ほかにも次の選択肢があります。
  • リンクされた git ワークツリーで作業しているなら、ワークツリーモードを有効にして、ローカル破棄のルールを緩めます。
  • より安全な書き方を使います。git push --force-with-lease と git clean -n は許可されています。
  • エージェントの外で、自分でコマンドを実行します。

拒否メッセージ

各項目には、エージェントが受け取るメッセージを引用しています。すべての ID は固定の拒否 ID に一覧があります。

派生コマンドの処理量の上限を超えた

ルールに一致したわけではありません。find -exec、xargs、ラッパーの中のシェルのワンライナーなど、派生するコマンドの入れ子が多すぎます。この上限を引き上げる設定はありません。単純な複数のコマンドに分けてください。

安全に解析できる上限を超えた

ルールに一致したわけではありません。パス、シェル関数、入れ子の heredoc が多すぎて解析できないコマンドです。この上限を引き上げる設定はありません。コマンドを単純にするか、分割してください。

解析が予期せず失敗した

ブロックの原因はコマンドではなく、内部の不具合です。コマンドを書き換えても解決しません。診断情報を集めて報告するの手順で報告してください。

ツール呼び出しが不正な形で届いた

エージェントが送った呼び出しにツール名がないか、コマンドまたは作業ディレクトリの引数が空白だったため、検査する対象がありませんでした。ID は tool-call.malformed です。エージェントは、引数をそろえて呼び出しを送り直せます。報告する必要はありません。

セッションの作業ディレクトリが使えない

セッションを開始したディレクトリがなくなったため、CC Safety Net はすべての呼び出しを拒否します。よくある原因は、削除された git ワークツリーです。セッションのディレクトリがワークスペースのルートの外にある場合も、似たメッセージになります。ワークスペース内の存在するディレクトリから、エージェントを起動し直してください。

呼び出しが指定した作業ディレクトリを指す拒否

1 つの呼び出しが、CC Safety Net の使えないディレクトリでの実行を求めました。Amp Code の dir、OpenCode の workdir、Kimi Code の cwd などです。ディレクトリがセッションのワークスペースの外にあることを示す別の文面もあります。セッションはそのまま使えます。ワークスペース内の存在するディレクトリを指定するか、存在しないディレクトリを先に作成してから、再試行してください。各エージェントが作業ディレクトリをどう解決するかは、そのエージェントのページにあります。

Claude Code が「could not verify this command」と確認を求める

プロンプトの見出しが BLOCKED by CC Safety Net ではなく CC Safety Net could not verify this command になっている場合、まだ何もブロックされていません。プロンプトを承認すると、コマンドが実行されます。Claude Code がブロックせずに確認を求める場合を参照してください。

ポリシーの提案を適用できるのはユーザーだけ

エージェントが policy apply を実行しようとしました。このブロックを解除する設定はありません。npx cc-safety-net policy apply <file> はターミナルで自分で実行してください。エージェントは policy apply を実行できないを参照してください。

カスタムルールが適用されない

CC Safety Net は検証に失敗したルールの設定元を破棄し、status は degraded になります。コマンドは引き続き実行されますが、その設定元のルールは適用されなくなります。
  1. npx cc-safety-net doctor を実行します。拒否されたファイルとその理由が表示されます。
  2. npx -y cc-safety-net rule list を実行し、各スコープが読み込んだ設定元とルールブックを確認します。別の名前のルールブックを編集しても効果はありません。また、rule.json の overrides のエントリでルールが無効になっている場合もあります。
  3. 修正のたびに npx -y cc-safety-net rule verify を実行します。エラーが残っていれば、成功とは報告せずにそのエラーで失敗します。
  4. 以前の .safety-net.json や ~/.cc-safety-net/config.json を使っていた場合は、npx -y cc-safety-net rule migrate を実行します。doctor は未移行のファイルを config.legacy-ignored として報告します。
ファイルの場所は設定ファイルの場所に、すべての失敗の一覧は設定の復旧にあります。

policy や rule のコマンドが、パスはユーザー設定だと報告する

プロジェクトスコープの policy コマンドや書き込みを伴う rule コマンドを、ユーザーの .cc-safety-net/ があるディレクトリ(通常はホームディレクトリ)で実行しました。rule のコマンドは、rule.json について同じメッセージを表示します。ユーザースコープが対象なら --global を付け、そうでなければプロジェクトのディレクトリに移動してください。policy が書き込むファイルを参照してください。

status が degraded と報告する

CC Safety Net が設定ファイルを拒否し、フォールバックを適用している状態です。これを理由に通常の作業が拒否されることはありません。
  1. npx cc-safety-net doctor を実行します。config.runtime-degraded の項目に、対象のファイルと修正方法が示されます。
  2. そのファイルを修正するか、npx -y cc-safety-net rule update で見つからないリモートの設定元を取り込み、npx -y cc-safety-net rule verify を実行します。
  3. policy.json は自分で修正します。拒否されたセクションの多くはより厳しい既定値に戻りますが、無効な safety.level は standard に戻るため、保護が弱くなります。
設定の復旧を参照してください。

doctor がルールブックのロックとキャッシュの残骸を報告する

config.v2-leftovers の項目は情報提供のためのもので、すべてのルールは引き続き適用されます。npx -y cc-safety-net rule sync を実行すると、ファイルを移行して削除します。ユーザースコープの場合は --global を付けてください。rule sync を参照してください。

Claude Code にステータスラインが表示されない

~/.claude/settings.json に、Claude Code のステータスラインを設定するの statusLine の項目があることを確認します。次に、npx -y cc-safety-net statusline --claude-code など、その項目のコマンドをターミナルで実行します。ここで失敗する場合、ステータスラインは空のままです。

更新が反映されない

update は、インストール済みの連携をすべて更新します。@latest は省略しないでください。バージョンを指定しない cc-safety-net では、キャッシュに残った古いコピーが実行されることがあります。結果は npx cc-safety-net --version で確認します。Claude Code では、自動更新を有効にすることもできます。update を参照してください。

診断情報を集めて報告する

JSON の出力には、環境、バージョン、フックの設定、セルフテストの結果が含まれます。絶対パスやプロジェクト名も含まれるため、貼り付ける前にトレースを共有する前にを読んでください。報告先は公開または非公開の報告を選ぶを参照してください。
最終更新日 2026年10月23日