#!/bin/bash
# PreToolUse hook - Block commands containing secrets
# Place in: .claude/hooks/security-check.sh
# Register in: .claude/settings.json

INPUT=$(cat)
TOOL=$(echo "$INPUT" | jq -r '.tool_name')

if [[ "$TOOL" == "Bash" ]]; then
    COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

    # Check for common secret patterns
    PATTERNS=(
        "password="
        "PASSWORD="
        "secret="
        "SECRET="
        "api_key="
        "API_KEY="
        "apikey="
        "token="
        "TOKEN="
        "aws_access_key"
        "AWS_ACCESS_KEY"
        "aws_secret"
        "AWS_SECRET"
        "private_key"
        "PRIVATE_KEY"
    )

    for PATTERN in "${PATTERNS[@]}"; do
        if echo "$COMMAND" | grep -qi "$PATTERN"; then
            echo "{\"decision\": \"block\", \"reason\": \"Potential secret detected: $PATTERN\"}"
            exit 2
        fi
    done

    # Check for hardcoded credentials in common formats
    # API keys (typically long alphanumeric strings)
    if echo "$COMMAND" | grep -qE "(sk-[a-zA-Z0-9]{20,}|pk_[a-zA-Z0-9]{20,}|[a-f0-9]{32,})"; then
        echo "{\"decision\": \"block\", \"reason\": \"Potential API key or hash detected\"}"
        exit 2
    fi
fi

# Allow the command
exit 0
