ИИ-агент удалил ваши файлы. Что теперь?

AI-агенты вроде Claude Code, Gemini CLI и Aider иногда выполняют катастрофические команды — git reset --hard, rm -rf ./src или DROP TABLE users — уничтожая часы работы за секунды. Именно для этой проблемы был создан Destructive Command Guard — сокращённо dcg. Это высокопроизводительный open-source хук для AI-агентов, который перехватывает деструктивные shell- и git-команды до их выполнения и блокирует их с понятным объяснением и более безопасными альтернативами.

⚠ Реальная угроза
Это не гипотетические сценарии. Подобные инциденты происходят регулярно в командах, использующих AI-инструменты для разработки. Агенты не злонамеренны — они просто оптимизируют задачу, не понимая необратимых последствий некоторых команд.

Как это работает

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-millisecondSIMD-ускоренная фильтрация — незаметна в работе
Heredoc/Inline сканированиеПерехватывает python -c "os.remove(...)"
Smart ContextНе блокирует grep "rm -rf", блокирует rm -rf /
Scan Mode для CIPre-commit хуки и интеграция с CI/CD
Fail-Open дизайнНе блокирует workflow при таймаутах и ошибках
Explain Modedcg 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 не защищает

⚠ Известные ограничения
Среди сложно защищаемых векторов: прямые записи через Python/JavaScript или API-вызовы не перехватываются; локальные коммиты без push; ошибки в разрешённых командах; команды внутри скриптов — если агент запускает ./deploy.sh, содержимое скрипта не проверяется.

Значение для индустрии

AI-агенты становятся достаточно мощными, чтобы работать минутами и часами без постоянного контроля. Это делает старую модель безопасности — читать каждую предложенную shell-команду и нажимать «одобрить» — трудноподдерживаемой. DCG предлагает системный ответ на этот вызов: автоматический барьер между намерением агента и реальным выполнением команды.

По состоянию на июль 2026 года проект насчитывает 3,2K звёзд и 120 форков на GitHub и активно развивается. Рост интереса к подобным инструментам отражает более широкую тенденцию: по мере роста автономности AI-агентов вопросы безопасности выходят на первый план в профессиональных командах разработки.