DCG: защита от опасных команд AI-агентов
Destructive Command Guard (dcg) — open-source хук на Rust, блокирующий опасные команды AI-агентов до их выполнения. 3200+ звёзд на GitHub.
ИИ-агент удалил ваши файлы. Что теперь?
AI-агенты вроде Claude Code, Gemini CLI и Aider иногда выполняют катастрофические команды — git reset --hard, rm -rf ./src или DROP TABLE users — уничтожая часы работы за секунды. Именно для этой проблемы был создан Destructive Command Guard — сокращённо dcg. Это высокопроизводительный open-source хук для AI-агентов, который перехватывает деструктивные shell- и git-команды до их выполнения и блокирует их с понятным объяснением и более безопасными альтернативами.
Как это работает
DCG — это Rust-хук типа PreToolUse, который перехватывает shell-команды до того, как AI-агенты их выполнят, блокируя деструктивные операции вроде git reset --hard, rm -rf, удаления баз данных и облачных ресурсов.
Ключевая особенность — трёхуровневый конвейер с SIMD-ускоренным быстрым отсевом: 95%+ команд проходят менее чем за 10 мкс. До дорогостоящего regex-сопоставления доходят только команды, содержащие опасные ключевые слова.
graph TD A["AI-агент выполняет команду"] --> B["Tier 1: Trigger Detection\n< 100 мкс"] B -->|"Нет опасных слов"| C["✅ Пропустить молча"] B -->|"Есть опасные слова"| D["Tier 2: Content Extraction\n< 1 мс"] D --> E["Tier 3: AST Pattern Matching\n< 5 мс"] E -->|"Безопасно"| C E -->|"Деструктивно"| F["🚫 Заблокировать"] F --> G["JSON-ответ агенту (stdout)"] F --> H["Человекочитаемое предупреждение (stderr)"]
Трёхуровневый конвейер — обнаружение триггера за < 100 мкс, извлечение содержимого за < 1 мс, AST-сопоставление за < 5 мс — перехватывает деструктивные паттерны, встроенные в python -c, bash -c, node -e и heredoc-блоки, включая рекурсивную оценку вложенных shell-команд.
Умный контекст: отличает данные от выполнения
Ключевое отличие от простого grep: dcg scan понимает, что "rm -rf /" в комментарии — это данные, а не код.
# Это БЕЗОПАСНО — поиск строки в логах
grep "rm -rf" logs.txt
# Это ЗАБЛОКИРОВАНО — реальное выполнение
rm -rf /
# Это ЗАБЛОКИРОВАНО — деструктивный скрипт внутри Python
python -c "import os; os.remove('important_data.sql')"
При блокировке агент получает JSON-отказ в stdout, а разработчик видит в терминале понятное объяснение:
════════════════════════════════════════
BLOCKED dcg
────────────────────────────────────────
Reason: git reset --hard destroys uncommitted changes
Command: git reset --hard HEAD~5
Tip: Consider using 'git stash' first.
════════════════════════════════════════
Поддерживаемые агенты и возможности
DCG работает с Claude Code, Codex CLI, Gemini CLI, GitHub Copilot, VS Code Copilot Chat, Cursor, Hermes Agent и Grok (xAI) — с более чем 50 модульными пакетами безопасности для git, баз данных, Kubernetes, Docker, AWS/GCP/Azure и других инструментов.
| Возможность | Описание |
|---|---|
| Zero-config защита | Блокирует опасные команды сразу после установки |
| 50+ Security Packs | БД, Kubernetes, Docker, AWS/GCP/Azure, Terraform |
| Sub-millisecond | SIMD-ускоренная фильтрация — незаметна в работе |
| Heredoc/Inline сканирование | Перехватывает python -c "os.remove(...)" |
| Smart Context | Не блокирует grep "rm -rf", блокирует rm -rf / |
| Scan Mode для CI | Pre-commit хуки и интеграция с CI/CD |
| Fail-Open дизайн | Не блокирует workflow при таймаутах и ошибках |
| Explain Mode | dcg explain "команда" — почему команда заблокирована |
Гибкая настройка под каждый агент
DCG автоматически определяет, какой AI-агент его вызывает — Claude Code, Codex CLI, Gemini CLI, Copilot, Cursor, Grok и другие — и применяет конфигурацию для конкретного агента, включая уровень доверия, дополнительные или отключённые пакеты и поведение белого списка.
# ~/.config/dcg/config.toml
# Доверяем Claude Code больше
[agents.claude-code]
trust_level = "high"
additional_allowlist = ["npm run build", "cargo test"]
disabled_packs = ["kubernetes"]
# Ограничиваем неизвестных агентов
[agents.unknown]
trust_level = "low"
extra_packs = ["strict_git", "database"]
disabled_allowlist = true
При блокировке команды dcg отображает короткий код, который можно передать в dcg allow-once <code>, чтобы разрешить единичное выполнение без постоянного ослабления защиты.
Linux / macOS / WSL:
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode
Windows (PowerShell):
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify
История проекта и статистика
Изначально созданный Джеффри Эмануэлем как Python-скрипт и позднее портированный на Rust Дарином Гордоном, dcg вырос в комплексную систему защиты с более чем 3200 звёздами на GitHub и активно поддерживается сообществом разработчиков.
Проект распространяется под лицензией MIT, написан на Rust для максимальной производительности и активно поддерживается — более 1754 коммитов.
«Расстояние между командой агента и её выполнением раньше было равно нулю. DCG превращает этот зазор в контрольную точку.» — из описания проекта
Что DCG не защищает
./deploy.sh, содержимое скрипта не проверяется.Значение для индустрии
AI-агенты становятся достаточно мощными, чтобы работать минутами и часами без постоянного контроля. Это делает старую модель безопасности — читать каждую предложенную shell-команду и нажимать «одобрить» — трудноподдерживаемой. DCG предлагает системный ответ на этот вызов: автоматический барьер между намерением агента и реальным выполнением команды.
По состоянию на июль 2026 года проект насчитывает 3,2K звёзд и 120 форков на GitHub и активно развивается. Рост интереса к подобным инструментам отражает более широкую тенденцию: по мере роста автономности AI-агентов вопросы безопасности выходят на первый план в профессиональных командах разработки.