CClaude Code Catalog
全Hooks

セキュリティシークレットスキャナー

Pre-Tool上級Hookタイプ: pre-tool-use

セキュリティシークレットスキャナーは、ファイル書き込みとgit commitをインターセプトして機密データパターンをスキャンします。AWSキー、GitHubトークン、秘密鍵、データベース接続文字列、JWTシークレットなど、数十種類の認証情報パターンをtrufflehogやgitleaksにインスパイアされた正規表現ルールで検査します。潜在的なシークレットが検出されると、操作をブロックし、一致した正確な行とパターンをハイライトします。これにより、開発における最も一般的なセキュリティインシデントである、シークレットの誤ったcommitを防止します。

セキュリティシークレットスキャン認証情報予防

Hookコード

#!/bin/bash # Security Secret Scanner Hook # Detects secrets and credentials before they're committed # Only check Write, Edit, and Bash (git commit) if [[ "$TOOL_NAME" != "Edit" ]] && [[ "$TOOL_NAME" != "Write" ]] && [[ "$TOOL_NAME" != "Bash" ]]; then exit 0 fi # For Bash, only check git commit if [[ "$TOOL_NAME" == "Bash" ]] && ! echo "$TOOL_INPUT" | grep -q "git commit"; then exit 0 fi # Secret patterns (regex) PATTERNS=( 'AKIA[0-9A-Z]{16}' # AWS Access Key 'ghp_[a-zA-Z0-9]{36}' # GitHub PAT 'sk-[a-zA-Z0-9]{48}' # OpenAI/Anthropic API Key 'sk-ant-api[0-9]{2}-[a-zA-Z0-9_-]{90,}' # Anthropic Key '-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----' # Private Key 'postgres://[^\s]+:[^\s]+@' # DB Connection String 'mongodb(\+srv)?://[^\s]+:[^\s]+@' # MongoDB URI 'xox[boaprs]-[0-9a-zA-Z-]+' # Slack Token 'eyJ[a-zA-Z0-9_-]*\.eyJ[a-zA-Z0-9_-]*\.' # JWT Token 'AIza[0-9A-Za-z_-]{35}' # Google API Key ) FOUND_SECRETS=0 scan_content() { local content="$1" local source="$2" for pattern in "${PATTERNS[@]}"; do MATCH=$(echo "$content" | grep -oE "$pattern" | head -1) if [ -n "$MATCH" ]; then echo "SECRET DETECTED in $source" echo " Pattern: $pattern" echo " Match: ${MATCH:0:12}...REDACTED" FOUND_SECRETS=$((FOUND_SECRETS + 1)) fi done } # Scan based on tool type if [[ "$TOOL_NAME" == "Edit" ]] || [[ "$TOOL_NAME" == "Write" ]]; then CONTENT=$(echo "$TOOL_INPUT" | jq -r '.new_string // .content // empty') FILE_PATH=$(echo "$TOOL_INPUT" | jq -r '.file_path // .path // "unknown"') scan_content "$CONTENT" "$FILE_PATH" elif [[ "$TOOL_NAME" == "Bash" ]]; then STAGED=$(git diff --cached 2>/dev/null) scan_content "$STAGED" "staged changes" fi if [ $FOUND_SECRETS -gt 0 ]; then echo "" echo "BLOCKED: $FOUND_SECRETS potential secret(s) found." echo "Remove secrets and use environment variables instead." exit 1 fi exit 0

このHookをClaude Code設定または.claude/settings.jsonに追加して有効化してください。

実行プレビュー

セキュリティシークレットスキャナー

セキュリティシークレットスキャナーについて

Claude Code Hooksは、Claude操作中の特定イベントに応じてカスタムシェルコマンドを自動実行します。セキュリティシークレットスキャナーは上級レベルのPre-Tool Hookで、開発ワークフローの重要なタイミングでタスクを自動化し、手動ステップを削減してチーム全体の一貫性を維持します。

関連Hooks