# gitleaks config — ORCH-022 security-gate (secret-scanning). # # Versioned in the repo root (07-infra I-4 / BR-13): rules + an allowlist of # known-safe matches are reviewed as code. The security-gate (src/security_gate.py) # passes this file via `--config` when present. gitleaks runs OFFLINE (local rules) # so the "a secret always blocks" guarantee (BR-2) never depends on the network. # # Strategy: extend the built-in ruleset (broad coverage, maintained upstream) and # only ADD a narrow allowlist for placeholders / fixtures that are intentionally # fake (e.g. .env.example dummy values, test fixtures). Keep the allowlist tight — # an over-broad allowlist silently re-opens the leak it was meant to bless. title = "orchestrator gitleaks config" [extend] # Start from gitleaks' maintained default ruleset. useDefault = true [allowlist] description = "Known-safe, intentionally non-secret matches (placeholders + fixtures)." # Files that legitimately contain placeholder/dummy secret-shaped values: # * .env.example — the committed canon of env vars with DUMMY values (CLAUDE.md §8; # real secrets live only in the host .env / .env.staging, never in git). # * tests/ — fixtures may embed fake tokens to exercise the scanner itself (TC-03). # * .gitleaks.toml — this file (avoid self-matching example patterns below). paths = [ '''(^|/)\.env\.example$''', '''(^|/)tests/''', '''(^|/)\.gitleaks\.toml$''', ] # Generic placeholder tokens used in docs / examples that are NOT real secrets. regexes = [ '''(?i)(your[-_]?(token|key|secret|password)[-_]?here)''', '''(?i)(changeme|dummy|example|placeholder|xxxxx+)''', '''(?i)<[a-z0-9_-]+>''', ]