Dicklesworthstone/destructive_command_guard

A fast Rust safety hook that blocks destructive shell, git, and filesystem commands before AI coding agents run them. 50+ security packs (databases, Kubernetes, Docker, cloud, Terraform), heredoc/inline-script scanning, CI scan mode, and explain mode; works with Claude Code, Codex, Gemini, Copilot, Cursor, and more.

Destructive Command Guard (dcg)

概要

Destructive Command Guard (dcg) は、AI駆動のコーディングアシスタント(Claude、Codex、Gemini、GitHub Copilot、Cursorなど)とシェルとの間に配置される高性能なフックです。アシスタントがコード、データ、またはインフラストラクチャを削除または破損させる可能性のあるコマンドを実行しようとすると、dcgがそのリクエストをインターセプトし、広範な安全ルールライブラリ(packs と呼ばれます)に基づいて評価を行い、明確な説明とともにブロックするか、実行を許可します。

なぜ重要なのか

AIコーディングエージェントは、コードの自動作成や実行にますます利用されるようになっています。git reset --hard、rm -rf /、aws ec2 terminate-instances といった誤ったコマンドを1つ実行するだけで、数時間の作業が失われたり、本番サービスが停止したりする可能性があります。dcgは、これらのエージェントに対してゼロ構成の保護を提供し、ファイルシステム、バージョン管理システム、またはクラウドプロバイダーに到達する前に破壊的なコマンドを捕捉します。

主な機能 (READMEより)

機能 内容
幅広いエージェントサポート Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI、VS Code Copilot Chat、Cursor、Hermes Agent、Posit Assistant、Grok (xAI)、Oh My Pi などをサポート。
モジュール式「パック」 ファイルシステム、Git、データベース、Docker、Kubernetes、AWS/GCP/Azure、Terraformなどをカバーする50以上の事前定義済みルールパック。パックはエージェントごと、またはグローバルに有効/無効化可能。
サブミリ秒のレイテンシ SIMDアクセラレーションによる正規表現フィルタリングにより、ユーザーはガードの存在を意識することなく利用可能。
Heredoc / インラインスクリプトスキャン python -c、シェルスクリプト、またはheredoc内に隠された危険なコマンドを検出。
スマートなコンテキスト検出 コマンドのように見えるデータ(例: grep "rm -rf")と、実際の実行可能コマンドを区別。
リッチなターミナルUI stderr に理由とより安全な代替案を表示する人間が読みやすい拒否パネル。
機械可読な出力 フックプロトコルを期待するエージェント(例: Codex)向けに stdout にJSON拒否ペイロードを出力。
説明モード dcg explain "<command>" で、なぜそのコマンドがブロックされるのかを表示。
CI / プリコミットスキャン dcg をスキャンモードで実行し、コードレビュー中に危険なコマンドを捕捉可能。
バイパス & 許可リスト DCG_BYPASS=1 による一時的なバイパス、ワンタイム許可コード、または永続的な許可リストエントリ。
エージェント固有のプロファイル エージェントごとに異なる信頼レベルとルールセットを設定可能(例: Claudeには寛容に、未知のエージェントには厳格に)。
クロスプラットフォームインストーラー Linux/macOS用のワンライナー curl インストーラー、Windowsネイティブ用のPowerShellインストーラー(署名検証オプション付き)。

仕組み (概要)

  1. インストール – インストーラーがバイナリ(dcg または dcg.exe)を配置し、ターゲットAIエージェントの設定ディレクトリにフックファイルを登録します(例: ~/.claude/settings.json)。
  2. 呼び出し – エージェントがコマンドを実行しようとすると、フックが呼び出されます。フックはコマンド文字列といくつかのメタデータを受け取ります。
  3. 評価 – dcgは、コンパイルされた正規表現を使用して、有効なパックとコマンドを照合します。パックはカテゴリごとにグループ化されています(例: core.filesystem、database.postgresql)。
  4. 判定 – ルールの重大度(critical、high、medium など)に基づいて、以下のいずれかの結果となります:
    • deny – コマンドをブロックし、ヒント付きのカラーパネルを表示し、エージェントにJSON拒否レスポンスを返します。
    • ask – エージェントのプロトコルがサポートしている場合、人間のレビューを要求します。
    • warn / log – コマンドの実行を許可しつつ、イベントを記録します。
  5. 出力 – stderr に人間向けのメッセージ、stdout に機械向けのJSONを出力します。
  6. 設定 – ユーザーは ~/.config/dcg/config.toml を編集して、追加パックの有効化、ポリシーの調整、エージェントごとのプロファイル設定を行います。

想定されるユーザー

  • 開発者:Claude、Copilot、GeminiなどのLLMベースのコーディングアシスタントを利用しており、誤操作による破壊的なコマンドに対する安全策を求めている方。
  • チーム:AIエージェントをCIパイプラインに統合している場合。dcgをプリコミットフックとして実行し、危険なコマンドのコミットを防止できます。
  • Ops / DevOpsエンジニア:AIエージェントを使用してクラウド、コンテナ、Kubernetesを管理しており、誤った terraform destroy、kubectl delete、aws ec2 terminate-instances などから保護が必要な方。

はじめ方 (READMEより)

# ワンライナーインストール (Linux/macOS/WSL)
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode

インストーラーはプラットフォームを検出し、可能な場合は署名を検証し、dcg を PATH に追加し、自己テストを実行し、サポートされているすべてのエージェントに対してフックを設定します。

インストール後、デフォルト設定で最も壊滅的なコマンド(core.filesystem、core.git、system.disk、およびWindows固有のパック)は既に保護されています。保護を強化するには、~/.config/dcg/config.toml を編集してください:

[packs]
enabled = [
  "database.postgresql",
  "containers.docker",
  "cloud.aws",
]

制限事項と考慮事項 (READMEより)

  • コアパック(core.filesystem、core.git)は常に評価されます。これらは無効化できませんが、ルールごとにポリシーを緩和することは可能です。
  • このフックは、Claudeスタイルのフックプロトコルをサポートするエージェントでのみ機能します。それ以外の場合は、検出のみのモードにフォールバックする可能性があります。
  • バイパスメカニズムが存在しますが、悪用するとリスクが再導入される可能性があるため、慎重に使用してください。
  • 多くのパックを追加するとメモリ使用量が増加する可能性がありますが、SIMDエンジンによりレイテンシはサブミリ秒に保たれます。

要約: dcgは、AIコーディングアシスタントが発行するコマンドをインターセプトし、包括的なルールセットと照合して、不可逆的な損害を引き起こす可能性のある操作をブロックするRustベースの安全層です。ユーザーが意識することのない高速な動作を実現しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト