security-scanner — хук для Claude Code: проверка кода после правок
Хук запускает проверку безопасности каждый раз, когда Claude правит или создаёт файл. Ищет уязвимости и захардкоженные секреты.
npx claude-code-templates@latest --hook security/security-scannerЧто делает security-scanner
Хук висит на событии PostToolUse и срабатывает после Edit или Write. Как только файл изменён, по нему проходят три инструмента: semgrep с конфигом --config=auto, bandit для файлов .py и gitleaks в режиме detect --no-git. Плюс простая проверка через grep на строки вида password=, secret=, key=, token= со значением от восьми символов — если что-то нашлось, в stderr уходит предупреждение с путём к файлу.
Каждый инструмент вызывается только если он есть в системе: команды обёрнуты в command -v. Нет semgrep — этот шаг просто пропускается, ошибки не будет. Поэтому перед установкой стоит проверить, что нужные сканеры вообще стоят, иначе хук отработает вхолостую и вы решите, что код чистый.
Все вызовы заканчиваются на || true, так что хук не заблокирует работу Claude и не остановит сессию при находке. Это фоновая проверка, а не жёсткий гейт: результат вы увидите в выводе, но решение остаётся за вами.
Какие задачи решает
- поймать захардкоженный токен сразу после того, как агент записал его в файл
- прогнать изменённый Python-файл через bandit, не запуская его вручную
- проверить свежую правку на типовые уязвимости через semgrep
- найти секреты в файле, который ещё не попал в git
Примеры запросов агенту
- поправь конфиг в
config.pyи проверь, не утекли ли туда ключи - добавь обработку вебхука в
server.py - вынеси строку подключения из
db.pyв переменные окружения
Как установить security-scanner
1Через claude-code-templates
npx claude-code-templates@latest --hook security/security-scanner2Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о security-scanner
Как установить security-scanner в Claude?
Выполните npx claude-code-templates@latest --hook security/security-scanner, затем проверьте запись в .claude/settings.json.
Что делает security-scanner?
После каждой правки или записи файла запускает semgrep, bandit для Python и gitleaks, а также ищет в тексте строки с паролями, секретами, ключами и токенами.
Что нужно для работы хука?
Сканеры должны быть установлены в системе: хук вызывает их только при наличии в PATH. Если semgrep, bandit или gitleaks не найдены, соответствующий шаг пропускается.
Исходный текст
security-scanner.json · MIT
{
"description": "Scan code for security vulnerabilities and secrets after modifications. Uses multiple security tools to detect potential issues.",
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "if command -v semgrep >/dev/null 2>&1; then semgrep --config=auto \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi; if command -v bandit >/dev/null 2>&1 && [[ \"$CLAUDE_TOOL_FILE_PATH\" == *.py ]]; then bandit \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi; if command -v gitleaks >/dev/null 2>&1; then gitleaks detect --source=\"$CLAUDE_TOOL_FILE_PATH\" --no-git 2>/dev/null || true; fi; if grep -qE '(password|secret|key|token)\\s*=\\s*[\"\\x27][^\"\\x27]{8,}' \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null; then echo \"Warning: Potential hardcoded secrets detected in $CLAUDE_TOOL_FILE_PATH\" >&2; fi"
}
]
}
]
}
}
© davila7 · MIT · davila7/claude-code-templates