Destructive Command GuardDicklesworthstone/destructive_command_guard・通称 dcg・GitHubスター5,081)は、AIコーディングエージェントの「暴走コマンド」を、シェルに届く一歩手前でブロックするためのRust製フックです。AIに仕事を任せていて背筋が凍った経験はないでしょうか。テストが通らないのを直そうとしたエージェントが、おもむろに git reset --hard HEAD~5 を叩き、午前中ずっと書いていた未コミットの変更が一瞬で消える。あるいは「不要な生成物を消しますね」と言いながら rm -rf ./src を実行する——。dcgはまさにこの種の事故を、実行される前に止めるために作られています。

この記事の主題は2つあります。1つ目は、dcgが実際にどう危険コマンドを止めるのか——PreToolUseフックの仕組みと、90を超えるパック、そして「既定ではどこまで守るのか」という実務的な線引きを、編集部が本物のバイナリを動かして検証した結果です。2つ目は、このプロジェクトのライセンスが標準的なMITではないこと。正式名称は「MIT License (with OpenAI/Anthropic Rider)」で、OpenAIとAnthropicには一切の権利を与えず、学習・評価(eval)での利用まで禁じるという、いま話題になりやすい「反AIベンダー条項」が付いています。誤解されやすい箇所なので、原文を読んで「誰が何をできて、誰が何を禁じられるのか」を正確に整理します。

まずは、dcgを実際にインストールして git reset --hard HEAD~5 をブロックさせた様子から。

AIエージェントが git reset --hard HEAD~5 を実行しようとし、dcg が実行前にBLOCKEDパネルを表示して停止させた様子
編集部が dcg v0.6.7(aarch64-apple-darwin・SHA256検証済み)を実機で動かした実際の出力。rule ID・理由・安全な代替はすべて dcg が返した本物。コマンドは実行「前」に停止している。
30秒でわかるポイント
  • 課題:AIエージェントが git reset --hardrm -rf を実行し、未コミットの作業やデータを数秒で失う事故が起きる。
  • 解決:dcgを各エージェントの「実行前フック」に噛ませると、危険コマンドを実行される前に検出してブロックし、理由と安全な代替を提示する。
  • 正体:Rust製の高速フック。Claude Code・Codex・Gemini・Cursor など幅広いエージェントに1つの仕組みで対応。90超のパックで git/k8s/docker/クラウド/DB などを網羅。
  • ライセンス標準MITではない。「MIT + OpenAI/Anthropic Rider」で、あなたには実質MIT/OpenAI・Anthropic本体にはゼロ権利(学習・evalも禁止)。作者は正直に「custom」と表記。
  • 注意fail-open設計=安全網であって完全な防壁ではない。実質1人開発(バス係数≈1)v0.6.x(pre-1.0)。既定で有効なのは3パックのみ。

なお、Claude Code そのものの設定・フック・CLAUDE.md・本番運用の全体像は Claude Code|2026年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引き にまとめています。本記事はその「安全フック」の一角を深掘りする位置づけです。

Destructive Command Guard(dcg)とは — AIエージェントの暴走コマンドを実行前に止める

dcgは、AIコーディングエージェントが提案したシェルコマンドを、実際に実行される前に評価し、破壊的だと判断したら止めるための小さなRust製プログラムです。作者の Jeffrey Emanuel 氏(GitHub: Dicklesworthstone)は、もともとこれを「AIエージェントは便利だが、ときどき数時間分の未コミット作業を破壊するコマンドを走らせる」という問題意識から、Python製の単純なフックとして書き始めました。初期のRust移植を Darin Gordon 氏(Dowwie)が担い、その後 Emanuel 氏がパックシステム・ヒアドキュメント走査・文脈分類などを大幅に拡張して現在の形になっています。

公式READMEは問題と解決をこう要約しています。問題:AIエージェント(Claude・Codex・Gemini・Copilotなど)は、ときに git reset --hardrm -rf ./srcDROP TABLE users のような壊滅的なコマンドを実行し、数秒で作業を破壊する。解決:dcgは、それらを実行「前」に横取りしてブロックし、明快な説明とより安全な代替を返す高性能フックである、と。

ここで大事なのは、dcgがエージェント本体を置き換えるものでも、賢いAIレビュアーでもないという点です。dcgは決定論的なパターンマッチャーで、正規表現+構文解析でコマンドを判定するだけ。だからこそサブミリ秒で動き、判断がブレず、モデルの気分に左右されない。「AIの暴走をAIで止める」のではなく、「AIの暴走を機械的なルールで止める」ツールだと理解すると位置づけが掴めます。

AIエージェント→PreToolUseフック→dcg評価→ALLOW/DENYの流れを示す図
dcgはエージェントとシェルの「間」に挟まるPreToolUseフック。危険コマンドは実行前に止まり、ブロック時は理由と代替をエージェントに返す。
💡 「実行前」であることが本質
一般的なアプローチは「壊れたら git で戻す」「バックアップから復元する」——つまり事後の対処です。dcgの価値は、そもそも破壊的コマンドを走らせないことにあります。未コミットの変更は git でも戻せません。fail-safe(壊れてから戻す)ではなく、fail-never(そもそも壊させない)を狙う設計だからこそ、フックという「実行直前」の位置に置かれています。

dcgはどう動くのか — PreToolUseフックがシェルの手前で横取りする

現代のコーディングエージェントの多くは「フック」という拡張点を持っています。エージェントがツール(Bashコマンドなど)を実行する直前に、外部プログラムへコマンド内容を渡し、その返り値で実行を許可するか拒否するかを決められる仕組みです。Claude Code ではこれを PreToolUse フック(ツール実行前フック)と呼びます。dcgは、この仕組みを使ったAIエージェント向けの安全フックの代表格で、rm -rf の防止をはじめとする破壊的コマンドのブロックに特化しています。

dcgはこのPreToolUseフックとして登録されます。Claude Codeなら ~/.claude/settings.json に、Bash ツールにマッチする dcg コマンドを1つ足すだけ。エージェントが git reset --hard を実行しようとすると、Claude Codeはまず dcg にそのコマンドを渡し、dcgが「deny(拒否)」を返せば、コマンドはシェルに届く前に止まります。

実機で dcg にフック入力(Claude Codeが渡すのと同じJSON)を食わせると、返ってくるのはこういう構造化データです(抜粋)。

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "deny",
    "permissionDecisionReason": "BLOCKED by dcg ... git reset --hard destroys uncommitted changes. Use 'git stash' first.",
    "ruleId": "core.git:reset-hard",
    "packId": "core.git",
    "severity": "critical",
    "allowOnceCommand": "dcg allow-once 713809"
  }
}

permissionDecision: "deny" がエージェントに「このコマンドは実行させない」と伝え、permissionDecisionReason に人間・エージェント双方が読める理由が入ります。severity(重大度)や ruleId(どのルールに当たったか)、allowOnceCommand(どうしても実行したいときの一時解除コマンド)まで返る点が親切です。

対応エージェントは幅広いが、強制力には濃淡がある

dcgの強みは「1つの仕組みで多くのエージェントを守れる」ことです。ただし、フックの実装はエージェントごとに違うため、どこまで確実にブロックできるか(強制力)には差があります。公式READMEの記述をもとに整理します。

エージェント 連携方法 強制力の目安
Claude Code ~/.claude/settings.json の PreToolUse / matcher Bash ハード(呼び出しを阻止)
Codex CLI 0.125.0+ ~/.codex/hooks.json の PreToolUse(インストーラが自動設定) ハード(一部 unified_exec 経路は未カバー)
Gemini CLI ~/.gemini/settings.json の BeforeTool / matcher run_shell_command ハード
GitHub Copilot CLI ~/.copilot/hooks/ にユーザーレベルで配置 ハード
Cursor IDE MCP+ルールで注入 アドバイザリ(無視されうる)
Grok(xAI)/ Antigravity(agy) ネイティブフック or Claude互換層 ハード
Aider git pre-commit フックのみ 限定的
Continue 検出のみ(自動設定不可) 保護なし

Cursor が「アドバイザリ(勧告)」に留まるのは、Cursorのアーキテクチャ上、MCPだけではツール呼び出しそのものを阻止できないためです。ここは statewright など他のガードレール系ツールと同じ制約で、Cursorではモデルがルールを無視する余地が残る点は正直に押さえておくべきです。

「grepの検索文字列」と「本当に実行するrm」を見分ける

dcgが単なる grep と決定的に違うのは、文脈を読むことです。rm -rf という文字列がコマンドに含まれていても、それが「実行される rm」なのか「grep の検索対象という単なるデータ」なのかを区別します。実機で確かめた挙動がこれです。

dcg test の実機出力。grep 内の rm -rf は ALLOWED、実際の rm -rf ./src は BLOCKED、kubectl delete namespace は既定で ALLOWED、パック有効化で BLOCKED になる様子
編集部が dcg v0.6.7 で実行した本物の判定結果。文脈解析で「データ」と「実行」を切り分ける一方、kubernetes などのパックは既定では反応しない(後述)。

さらに厄介な python -c "os.remove(...)"bash -c "git reset --hard" のようなインラインスクリプト・ヒアドキュメントも、dcgは三段構えのパイプラインで中身を覗きに行きます。速度を殺さないために、まず超高速な正規表現でヒアドキュメントの兆候だけを検知(Tier 1)、該当したら中身を抽出(Tier 2)、最後に tree-sitter による構文木マッチで危険パターンを判定(Tier 3)する構成です。bash -c "..." の中がさらにシェルスクリプトなら、内側のコマンドを取り出して再帰的に評価します。

flowchart TD A["コマンド入力
例: bash -c "git reset --hard""] --> B{"Tier 1: トリガ検知
RegexSet・<100μs"} B -->|"兆候なし"| P["ALLOW
(高速パス)"] B -->|"兆候あり"| C{"Tier 2: 中身を抽出
<1ms・上限50ms"} C -->|"失敗・タイムアウト"| F["fail-open
ALLOW+警告"] C -->|"成功"| D{"Tier 3: 構文木マッチ
tree-sitter・<5ms"} D -->|"一致なし"| P D -->|"危険と一致"| G["DENY
理由+代替を返す"]
💡 速度の作り込み
dcgは全Bashコマンドが通る以上、遅延がボトルネックにならないよう徹底しています。正規表現照合の前に、memchr クレートのSIMD(SSE2/AVX2/NEON)で「git も rm も含まないコマンド」を瞬時に振り落とし、ls -lacargo build はほぼゼロコストで通過。安全パターンに先に当てて早期リターンし、絶対上限200msを超えたら fail-open。編集部の実測(Apple Silicon・初回起動込み)でも dcg explain は約25msでした。

何をブロックするのか — 90超のパックと、既定の守備範囲という落とし穴

dcgは危険コマンドのパターンを「パック」という単位でカテゴリ分けしています。実機で dcg packs を数えると、登録されているパックは92(READMEの宣伝文句は「50+」)。データベース、Kubernetes、Docker、AWS/GCP/Azure、Terraform/Pulumi/Ansible、シークレット管理、CI/CD、メッセージング、監視、決済、検索エンジン、バックアップ、DNS、メール——と、実運用で「これを間違って消したら終わり」という領域をほぼ網羅しています。

ただし、ここに最も誤解されやすい落とし穴があります。

⚠️ 既定で有効なのは、たった3パック
設定ファイルなしの初期状態で有効なのは、最も復旧不能な事故に絞った3つだけです。
core.filesystem(temp外の rm -rf/常時ON・無効化不可)
core.git(未コミットを失う・履歴書き換え/常時ON・無効化不可)
system.diskmkfsddfdisk など/既定ON・opt-out可)
Windowsではこれに windows.filesystemwindows.system が加わります。kubernetes・docker・cloud・database は既定では反応しません。前掲の実機出力どおり、kubectl delete namespace prod は素の状態では ALLOWED です。守備範囲を広げるには、設定ファイルで明示的にパックを有効化する必要があります。

有効化は ~/.config/dcg/config.toml にパックIDを並べるだけです。カテゴリID(例 database)を書けば配下の全サブパック(database.postgresqldatabase.mysql …)が一括で有効になります。

# ~/.config/dcg/config.toml
[packs]
enabled = [
  "database.postgresql",  # DROP TABLE / TRUNCATE を止める
  "kubernetes",           # kubectl delete namespace など一括
  "containers.docker",    # docker system prune を止める
  "cloud.aws",            # aws ec2 terminate-instances を止める
  "infrastructure.terraform",  # terraform destroy を止める
]

エージェントごとに「信頼度プロファイル」を切ることもできます。Claude Codeには広めの許可リストと少なめのパックを、素性の知れないエージェントには追加パックと許可リスト無効化を——といった具合に、disabled_packsextra_packsadditional_allowlist で調整できます。組織固有の内製ツール向けに、YAMLでカスタムパックを書いて追加することも可能です。

パックのカテゴリ例 何を止めるか
core.git / strict_git reset --hard・強制push・履歴書き換え・stash破棄
core.filesystem temp外の rm -rf
database.* DROP DATABASETRUNCATEFLUSHALL(Redis)など
kubernetes.* kubectl delete namespacedrainhelm uninstall
containers.docker / compose docker system prunecompose down -v(ボリューム削除)
cloud.aws / gcp / azure terminate-instancesdelete-db-instance・RG削除
infrastructure.terraform / pulumi destroytaint-auto-approve
secrets.* / platform.github シークレット削除・リポジトリ削除・リリース削除

「MIT + OpenAI/Anthropic Rider」を正確に読む

ここが、この記事でいちばん慎重に書くべき箇所です。誤読すると「使えないツール」と誤解しかねないので、原文(LICENSEファイル)を読んだうえで、許可と禁止を正確に切り分けます。

まず事実確認から。dcgのライセンスは、ファイル冒頭が MIT License (with OpenAI/Anthropic Rider) で始まります。GitHubはこのライセンスを標準のどれとも判定できず、NOASSERTION(Other) と表示します。READMEのバッジは正直に License: custom と掲げ、末尾の License 節も「Custom source license based on MIT with an OpenAI/Anthropic rider」と自称しています。つまり作者は「これはMITだ」と偽ってはいません。素の標準MITではないが、その事実を隠してもいない——ここは、以前に扱った Square UI解説|shadcn/uiレイアウト20種を実機デモで全検証|MITから独自ライセンスへ が「open-source表記のまま再配布を禁じていた」のとは性格が違う点として、公平に押さえておきます。

肝心の「Rider(追加条項)」の中身です。原文を要約するとこうなります。

Restricted Parties(制限対象) とは、OpenAI, L.L.C./Anthropic, PBC/それぞれの関連会社(議決権50%超などで支配関係にある企業)/および、これらのために・利益のために・指示のもとに動く者(役員・従業員・委託先・代理人など)を指す。
・これら Restricted Parties には、このライセンス上いかなる権利も付与しない。Jeffrey Emanuel 氏の書面による事前許可がない限り、Restricted Party への許諾は無効。
・Restricted Party に対して/のために、ソフトウェアや派生物を提供・開示・配布・ホスティング・アクセス提供してはならない
・ここでいう「use(利用)」には、コピー・改変・実行・ベンチマーク・テスト・解析・インデックス化、およびデータセット・訓練コーパス・評価(eval)ハーネス・機械学習パイプラインへの取り込みが明示的に含まれる。
・Riderは派生物にも及び、再配布時はこのRiderを改変せず同梱しなければならない。違反すると許諾は自動的に終了する。

言い換えると、これは明確な「反AIベンダー」ライセンスです。狙いは「OpenAIとAnthropicが、この安全ツールを自社に取り込んだり、学習・評価データにしたりすること」を封じること。皮肉が効いているのは、dcgはまさにClaude Code(Anthropic)やCodex(OpenAI)にフックとして噛ませて使うツールなのに、そのライセンスは当のAnthropic・OpenAI本体を締め出している点です。

では、あなたはどうなのか。ここが最重要です。

✅ 結論:Claude Code / Codex のユーザーは Restricted Party ではない
Anthropicの製品(Claude Code)を使う開発者は、Anthropic「そのもの」でも、その代理として動く者でもありません。したがってあなたは Restricted Party に当たらず、dcgを実質MITと同じ条件で自由に使えます——個人でも商用でも無制限に利用し、改変し、再配布し、自作アプリに組み込んで売ることもできる。唯一の実務的な条件は、再配布するときにRider条項を改変せず同梱することだけです。禁じられているのは、あくまで OpenAI・Anthropic「本体」による利用・学習・evalであって、両社の製品を使うあなたの日常ではありません。
ライセンスの許可/禁止マトリクス。左=OpenAI/Anthropic本体は全面禁止、右=一般の開発者・企業は実質MITで全面許可
「MIT + OpenAI/Anthropic Rider」の許可/禁止。あなた(一般開発者・企業)には実質MIT、両社『本体』にはゼロ権利。

一点だけ、正確を期すために。標準MITは Open Source Initiative の定義(The Open Source Definition)を満たしますが、dcgのRiderは「特定の主体(OpenAI・Anthropic)を差別し」「利用分野(学習・eval)を制限する」ため、OSDの第5項・第6項(人・集団や利用分野を差別しない)に抵触します。したがって厳密には『オープンソース』ではなく、『ソースアベイラブル(source-available)』と呼ぶのが正確です。とはいえ、繰り返しになりますが、99%の利用者にとっての実挙動はMITと変わりません。(本記事は一般的な説明であり、法的助言ではありません。判断に影響する場面では自社の法務にご確認ください。)

dcgは使えるのか — ライセンス・活性度・バス係数・fail-openの正直な評価

「自分のエージェント環境に入れるべきか」を判断するために、良い点と、正直に受け止めるべき点を並べます。

dcgの実測スナップショット。★5,081、コミット構成は作者1762対dependabot8、90+パック、v0.6.x、実質1人開発の警告
使えるかどうかの判断材料(2026-07-18実測)。開発は活発だが実質1人プロジェクト。NOASSERTIONライセンス。安全網であって完全な防壁ではない。

良い点は明快です。導入が数分で済み、1つの仕組みでClaude Code・Codex・Geminiなど複数のエージェントを守れる。Rust製で体感遅延がほぼない。パックが実運用の勘所を広く押さえていて、危険度・ルールID・安全な代替まで返すので、ブロックされたエージェントが「なぜ止まったか」を理解して自分で軌道修正しやすい。開発も活発(最終コミット2026-07-15)です。

一方で、正直に受け止めるべき点が3つあります。

① バス係数がほぼ1。 contributors API実測でコミットの98%超が作者1人(1,762件)、他は dependabot ボットの8件のみ。初期移植は Darin Gordon 氏 が担いましたが、現状は事実上ソロプロジェクトです。ただしdcgは「フックとして薄く噛ませる」性質上、上流が止まっても手元のバイナリと設定は動き続けます。ランタイムやサーバー製品ほど「保守停止=自分のシステム停止」に直結しない点は、多少の緩和材料です。

② v0.6.x(pre-1.0)。 31リリースを重ねていますが、まだ1.0前です。パックIDや設定スキーマ、出力フォーマットが破壊的に変わる可能性は織り込んでおくべきで、フックコマンドやCI連携を作り込む場合はバージョンをピン留めするのが無難です。

③ fail-open は「安全網」であって「完全な防壁」ではない。 これが最も重要な誤解ポイントです。dcgは解析がタイムアウト・パース失敗した場合、ブロックせずに通す(fail-open)設計です。理由は「正当なコマンドを誤ってブロックする方が、危険なコマンドを1つ見逃すより業務を止める」という思想。さらに DCG_BYPASS=1dcg allow-once <code> といった意図的な回避手段も用意されています。公式ドキュメント自身、Codex連携の注記で「モデルはスクリプトをディスクに書き出してフックベースのブロックを迂回でき、unified_exec の全経路を捕捉できるわけでもないので、完全な強制境界ではなくガードレールとして扱うべき」と明記しています。つまりdcgは、うっかり事故(誤爆)を強力に防ぐ一方、悪意や執拗な回避に対する堅い境界ではない。多層防御の一枚として捉えるのが正しい使い方です。

なお高セキュリティ環境向けに、DCG_FAIL_CLOSED=1(パース不能な入力はブロック)や、ヒアドキュメント解析の fail-closed 化といった厳格モードへの切り替えは用意されています。用途に応じて締めることは可能です。

使う人 判定 コメント
個人開発者(Claude Code等を日常利用) ◎ 入れて損なし 数分で導入、誤爆防止の効果が大きい。既定3パックだけでも rm -rf/reset --hard 事故を防げる
少人数チーム ○ 推奨(要ピン留め) パックを有効化して守備範囲を広げる価値大。pre-1.0のためバージョン固定を
大企業・規制環境 △ 要評価 バス係数≈1・NOASSERTIONライセンスの社内審査が必要。境界防御は別途、dcgは誤爆抑止の一枚として
CIでの静的チェック用途 dcg scan が有効 コミット済みスクリプトの危険コマンドをSARIFで検出。pre-commit連携あり

既存の代替と何が違うのか — ネイティブ権限 / statewright との比較

「Claude Code には最初から Bash の許可/拒否ルールがあるのに、なぜ別ツールが要るのか」——これは当然の疑問です。結論から言えば、目的とレイヤーが違います

Claude Codeのネイティブなパーミッションは「このコマンド(パターン)を許可/拒否するか」をエージェントごと・手動で決める仕組みで、grep の検索文字列とインラインスクリプトの中身までは見ません。dcgはエージェント横断の1設定で、90超のキュレーション済みパックを持ち、文脈解析とヒアドキュメント走査まで行い、ブロック時に安全な代替を提示します。守る対象も方法も別物です。

もう一つ、当サイトで既に解説している Statewright完全解説|Rust製状態機械ガードレールがSWE-bench 2→10/10に変えた理由 とも、しばしば混同されますが機構が異なります。statewrightは状態機械でフェーズ(planning→implementing→testing)ごとに「呼べるツールそのものを制限」してエージェントの迷走を抑える設計。dcgは個々のコマンドを実行前にブロックする設計。前者は「そもそも危険な操作をさせない土俵づくり」、後者は「危険なコマンドが来た瞬間の水際ブロック」で、併用しても競合しません

観点 dcg Claude Code ネイティブ権限 statewright 手動レビュー
守り方 コマンドを実行前にブロック パターン許可/拒否リスト 状態機械でツール空間を制限 人間が都度承認
対応エージェント Claude/Codex/Gemini/Cursor 等 横断 そのエージェントのみ Claude/Codex/Cursor 等 何でも
危険コマンドの網羅 90+パックをキュレーション 自分で列挙 パック概念なし 人依存
文脈/インライン解析 あり(grepとrmを区別・heredoc走査) なし 対象外 人依存
導入の手間 フック1行+(任意で)パック設定 設定を手書き JSON/エディタで状態定義 ゼロ(ただし常時人手)
位置づけ 誤爆の水際ブロック 基本の許可制御 迷走そのものの抑制 最終防衛線

導入と確認 — コピペで動かし、効いているか確かめる

導入は数分です。公式の推奨はワンライナーのインストーラで、プラットフォームを自動判別してビルド済みバイナリを取得し、検出したエージェントのフックまで設定します。

# Linux / macOS / WSL:バイナリ取得+対応エージェントのフック自動設定
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh" | bash -s -- --easy-mode

インストーラを使わず手動でClaude Codeだけに噛ませたい場合は、~/.claude/settings.json に以下を足して Claude Code を再起動します(dcg はPATH上に置く)。

{
  "hooks": {
    "PreToolUse": [
      { "matcher": "Bash", "hooks": [ { "type": "command", "command": "dcg" } ] }
    ]
  }
}

Codex CLI(0.125.0+)は ~/.codex/hooks.json に同型の PreToolUse/Bash を、Gemini CLI は ~/.gemini/settings.jsonBeforeTool/run_shell_command を設定します(インストーラは検出して自動でやってくれます)。

導入したら、「本当に入っているか・効いているか」を自分の環境で確認しておきましょう。以下はすべて破壊的操作を伴わない読み取り専用コマンドです。

# 1) フックが正しく配線されているか診断(Claude設定・パック・スモークテスト)
dcg doctor

# 2) Claude Code のフック設定に dcg が入っているか
grep -n "dcg" ~/.claude/settings.json

# 3) 実行せずに「このコマンドはブロックされるか」を判定
dcg test "git reset --hard HEAD~5"     # → BLOCKED
dcg test 'grep -r "rm -rf" .'          # → ALLOWED(文脈解析)

# 4) なぜブロックされたか、根拠と代替をトレース表示
dcg explain "rm -rf ./build"

# 5) いま有効なパックの一覧(既定は core.git / core.filesystem / system.disk の3つ)
dcg packs

dcg doctor は「binary in PATH」「Claude Code settings」「hook wiring」「pattern packs」「smoke test」などを順に点検し、問題があれば具体的な直し方を提示します。もしブロックが厳しすぎる場面が出たら、DCG_BYPASS=1 <コマンド>(その1回だけ全解除)、dcg allow-once <コード>(ブロック時に表示される短いコードで一時解除)、dcg allowlist add <ルールID> -r "理由"(恒久的な許可)と、段階的な逃がし方が用意されています。

💡 まず既定+core だけで試す
最初から全パックを有効化すると誤爆が増えて「うるさい」と感じがちです。おすすめは、まず既定の3パック(git/fs/disk)だけで1〜2週間運用し、実際に事故りやすい領域(DB・k8s・クラウド)だけを後から [packs] enabled に足していく段階導入。dcg test で事前に自分の定番コマンドが誤爆しないか確かめてから広げると、摩擦が最小で済みます。

まとめ — Destructive Command Guard(dcg)を入れるべきか

Destructive Command Guardは、「AIエージェントに手を動かさせるほど、git reset --hardrm -rf の事故確率が上がる」という現実に対する、シンプルで効果の高い保険です。Rust製で速く、Claude Code・Codex・Geminiなどに1つの仕組みで噛ませられ、既定の3パックだけでも「最も復旧不能な事故」を実行前に止めてくれる。導入は数分、確認コマンドも揃っている——個人・少人数チームなら、入れて損はほぼありません

同時に、過大評価は禁物です。fail-openと回避手段がある以上、これはうっかり事故を防ぐ安全網であって、悪意ある回避を封じる完全な防壁ではない。実質1人開発(バス係数≈1)でpre-1.0という現実、そしてライセンスが標準MITではなく「反AIベンダーRider」付きのソースアベイラブルである点も、企業導入なら社内審査に載せるべきです。とはいえ、その線引きさえ理解すれば、あなたが使う分には実質MITで自由——「何ができて、何を過信してはいけないか」を掴んだうえで、多層防御の一枚として組み込むのが、dcgの一番賢い使い方です。

参照ソース

destructive_command_guard(Dicklesworthstone 公式リポジトリ) — スター・リリース・コミット等の実測、README全文
LICENSE(MIT License with OpenAI/Anthropic Rider) — 本記事のライセンス解説はこの原文に基づく
Claude Code Hooks 公式ドキュメント — PreToolUseフックの仕様
The Open Source Definition(Open Source Initiative) — 第5項・第6項(差別禁止)
Jeffrey Emanuel|元になったPythonフックのセットアップ手順 — dcgの起源