from __future__ import annotations import re SECRET_PATTERNS = [ re.compile(r"hf_[A-Za-z0-9_\-]{20,}"), re.compile(r"Bearer\s+[A-Za-z0-9_\.\-]+", re.IGNORECASE), re.compile(r"(HF_TOKEN|OAUTH_TOKEN|ACCESS_TOKEN|AUTHORIZATION|PASSWORD|SECRET)\s*[:=]\s*[^\s]+", re.IGNORECASE), ] def redact(text: str | None) -> str: """Best-effort redaction for logs/reports shown in the UI. This is intentionally conservative. It is not a complete DLP system, but it protects against obvious token leaks in first-version outputs. """ if not text: return "" redacted = text for pattern in SECRET_PATTERNS: redacted = pattern.sub("[REDACTED]", redacted) return redacted