Skip to main content
破壊的コマンドの保護は、未コミットの作業、stash した変更、リモートの履歴、その他のデータ、ディスクを破壊しうるコマンドをブロックするコマンド解析のステージです。すべてのブロックは、ブロックメッセージ、監査ログexplain --jsonruleId フィールドで、以下のルール ID のいずれかを示します。 このページでは、すべての組み込みルール ID、ブロックする内容、有効になる条件を示します。ブロックメッセージからルールを調べ、無効にするかどうかを判断するために使ってください。各ルールの境界と具体例についてはブロックされるコマンドを、destructive_command_protection スキーマについてはポリシーを、独自のルールを追加するにはカスタムルールを参照してください。 登録済みのルールは 59 個です。そのうち 6 個は致命的な操作に対するルールで、無効にできません。それ以外のすべてのルールは、ルール単位の override を受け付けます。

組み込みルールを許可する

致命的でないすべてのルールに、同じ 3 つの手順が適用されます。
  1. ルール ID を取得します。ブロックメッセージに表示されるほか、対象のコマンドそのものに対して explain を実行し、ruleId を読み取ることもできます。
  2. policy.jsondestructive_command_protection.overrides に、その ID を値 "off" で追加します。ユーザーファイルはすべてのプロジェクトに、プロジェクトファイル .cc-safety-net/policy.json はそのプロジェクトだけに適用されます。既存のファイルにマージしてください。以下は完全な例です。
  3. もう一度 explain で確認します。そのコマンドの判定は allowed になり、status に override が表示されます。
override はルール全体を無効にするものであり、特定のコマンド 1 つだけを許可するものではありません。"on" はその逆で、安全レベルが無効にしているルール(standard モードでの rm.recursive-force-paranoid など)を有効にします。再帰削除をパス単位で除外するには destructive_command_protection.allow_paths を使います。Allow path を参照してください。登録されていない ID は policy check で拒否されます。

致命的な操作に対するルール

6 個のルールは致命的(catastrophic)としてマークされています。これらは destructive_command_protection.enabled: false"off" の override も無視するため、どのポリシーでも、どの安全レベルでもブロックします。対象は、rmfind、PowerShell による / またはホームディレクトリの再帰削除と、Git メタデータの削除です。以下の表では 致命的 と表示しています。

表の読み方

有効になる条件は、どの安全レベルまたは機能がそのルールを有効にするかを示します。すべてのレベルは standard、strict、paranoid のすべてを意味します。機能に紐づくルールは、安全レベルと safety.overrides のどちらで設定されたかにかかわらず、その機能が有効なときに有効になります。例は、そのルールを発火させる最短のコマンドです。各境界がどこにあるかは、ブロックされるコマンドのリファレンスを参照してください。

Git のルール

ファイルシステムのルール

PowerShell のルール

実行のルール

最終更新日 2026年9月17日