ai-bash-guard — хук для Claude Code: блокирует опасные команды
Перед выполнением bash-команды AI-агент проверяет её на деструктивные паттерны — рекурсивные удаления, force push в защищённые ветки, drop таблиц, утечки учётных данных — и блокирует выполнение с объяснением.
npx claude-code-templates@latest --hook security/ai-bash-guardЧто делает ai-bash-guard
Хук работает через PreToolUse с типом agent: это единственный паттерн, который может заблокировать выполнение инструмента через AI-рассуждение. Перед тем как bash-команда попадёт в терминал, Claude Haiku оценивает её по набору правил: запрещены rm -rf вне /tmp, git push --force в main/master/develop/production, DROP TABLE и DELETE без WHERE в production-базах, команды, пишущие переменные с KEY, TOKEN, SECRET или PASSWORD в файлы или по сети, а также dd, shred и mkfs на реальных устройствах.
Если команда совпадает с одним из этих паттернов, хук возвращает deny с объяснением, что попробовать вместо этого. Всё остальное проходит: удаления в /tmp, force push в личные ветки, DROP TABLE в тестовых базах. Timeout составляет 20 секунд, модель — Haiku.
Какие задачи решает
- Заблокировать рекурсивное удаление файлов вне временных папок
- Предотвратить force push в основные ветки репозитория
- Остановить удаление или очистку production-таблиц без условия
- Помешать случайной отправке учётных данных в файлы или сеть
- Предупредить о попытке перезаписи диска через dd, shred или mkfs
Примеры запросов агенту
- Напиши скрипт, который удаляет старые логи с помощью
rm -rf /var/logs/*— хук остановит команду и предложит альтернативу - Попробуй сделать force push в основную ветку — хук заблокирует и объяснит, как пушить в личную ветку
- Запусти
DROP TABLE usersв production-базе — хук перехватит и пусть переходишь в тестовое окружение
Как установить ai-bash-guard
1Через claude-code-templates
npx claude-code-templates@latest --hook security/ai-bash-guard2Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о ai-bash-guard
Как установить ai-bash-guard в Claude Code?
Запусти npx claude-code-templates@latest --hook security/ai-bash-guard, затем отредактируй .claude/settings.json для интеграции хука.
Что блокирует ai-bash-guard?
Рекурсивное удаление вне /tmp, force push в защищённые ветки (main, master, develop, production), DROP TABLE и DELETE без WHERE в production-базах, команды, пишущие ключи и токены в файлы, dd и mkfs на реальных устройствах.
Какие команды хук всегда пропускает?
Удаления в /tmp, force push в личные feature-ветки, DROP TABLE в test, dev или local базах, любые другие bash-команды, которые не совпадают с опасными паттернами.
Исходный текст
ai-bash-guard.json · MIT
{
"description": "AI-powered bash command security guard. Before any Bash command runs, a lightweight Claude subagent evaluates it for destructive or irreversible patterns — recursive deletes, force pushes to protected branches, database drops, and credential exposure — and blocks execution with a clear explanation if flagged. Uses PreToolUse with type:agent, which is the only hook pattern that can block tool execution via AI reasoning.",
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "agent",
"prompt": "You are a security guard for a developer's terminal. Evaluate the bash command provided in the tool input for destructive or irreversible risk.\n\nDENY the command if it matches ANY of these patterns:\n- Recursive deletion outside /tmp: rm -rf on non-temporary paths\n- Force push to protected branches: git push --force or -f targeting main, master, develop, or production\n- Destructive database operations without a WHERE clause: DROP TABLE, TRUNCATE, DELETE on production-named databases\n- Credential exposure: commands that write environment variables containing KEY, TOKEN, SECRET, or PASSWORD to files or network destinations\n- Disk-level destruction: dd, shred, or mkfs targeting non-loop devices\n\nALLOW everything else, including rm on /tmp, force pushes to personal feature branches, and DROP TABLE in databases named test, dev, or local.\n\nRespond ONLY with a JSON object in exactly this format:\n\nIf DENYING:\n{\"hookSpecificOutput\": {\"hookEventName\": \"PreToolUse\", \"permissionDecision\": \"deny\", \"permissionDecisionReason\": \"<one sentence: what is dangerous and what to do instead>\"}}\n\nIf ALLOWING:\n{\"hookSpecificOutput\": {\"hookEventName\": \"PreToolUse\", \"permissionDecision\": \"allow\"}}",
"timeout": 20,
"model": "haiku"
}
]
}
]
}
}
© davila7 · MIT · davila7/claude-code-templates