# Gitleaks Configuration for BreakPilot
# https://github.com/gitleaks/gitleaks
#
# Run locally: gitleaks detect --source . -v
# Pre-commit: gitleaks protect --staged -v

title = "BreakPilot Gitleaks Configuration"

# Use the default rules plus custom rules
[extend]
useDefault = true

# Custom rules for BreakPilot-specific patterns
[[rules]]
id = "anthropic-api-key"
description = "Anthropic API Key"
regex = '''sk-ant-api[0-9a-zA-Z-_]{20,}'''
tags = ["api", "anthropic"]
keywords = ["sk-ant-api"]

[[rules]]
id = "vast-api-key"
description = "vast.ai API Key"
regex = '''(?i)(vast[_-]?api[_-]?key|vast[_-]?key)\s*[=:]\s*['"]?([a-zA-Z0-9-_]{20,})['"]?'''
tags = ["api", "vast"]
keywords = ["vast"]

[[rules]]
id = "stripe-secret-key"
description = "Stripe Secret Key"
regex = '''sk_live_[0-9a-zA-Z]{24,}'''
tags = ["api", "stripe"]
keywords = ["sk_live"]

[[rules]]
id = "stripe-restricted-key"
description = "Stripe Restricted Key"
regex = '''rk_live_[0-9a-zA-Z]{24,}'''
tags = ["api", "stripe"]
keywords = ["rk_live"]

[[rules]]
id = "jwt-secret-hardcoded"
description = "Hardcoded JWT Secret"
regex = '''(?i)(jwt[_-]?secret|jwt[_-]?key)\s*[=:]\s*['"]([^'"]{32,})['"]'''
tags = ["secret", "jwt"]
keywords = ["jwt"]

# Allowlist for false positives
[allowlist]
description = "Global allowlist"
paths = [
    '''\.env\.example$''',
    '''\.env\.template$''',
    '''docs/.*\.md$''',
    '''SBOM\.md$''',
    '''.*_test\.py$''',
    '''.*_test\.go$''',
    '''test_.*\.py$''',
    '''.*\.bak$''',
    '''node_modules/.*''',
    '''venv/.*''',
    '''\.git/.*''',
]

# Specific commit allowlist (for already-rotated secrets)
commits = []

# Regex patterns to ignore
regexes = [
    '''REPLACE_WITH_REAL_.*''',
    '''your-.*-key-change-in-production''',
    '''breakpilot-dev-.*''',
    '''DEVELOPMENT-ONLY-.*''',
    '''placeholder.*''',
    '''example.*key''',
]
