# Gitleaks config — supplements the default ruleset with project-specific patterns. # Default rules already catch sk-* (OpenAI), ghp_*, AKIA*, etc. # Here we add China-side providers + project-specific allowlists. [extend] # Inherit gitleaks' built-in default rule set useDefault = true # ────────────────────────────────────────────── # Project-specific rules # ────────────────────────────────────────────── [[rules]] id = "siliconflow-api-key" description = "SiliconFlow API key (硅基流动) — sk-{40+ chars}" regex = '''sk-[a-z0-9]{40,}''' keywords = ["siliconflow", "SILICONFLOW_API_KEY"] [[rules]] id = "dashscope-api-key" description = "Aliyun DashScope (百炼) — sk-{32}" regex = '''sk-[a-f0-9]{32}''' keywords = ["dashscope", "DASHSCOPE_API_KEY", "bailian"] [[rules]] id = "amap-mcp-key" description = "Amap MCP key (高德地图) — 32-char hex" regex = '''(AMAP_MCP_KEY|amap.*key)['"\s:=]+[a-f0-9]{32}''' keywords = ["amap", "AMAP_MCP_KEY", "高德"] [[rules]] id = "deepseek-api-key" description = "DeepSeek API key — sk-{32}" regex = '''sk-[a-zA-Z0-9]{32}''' keywords = ["deepseek", "DEEPSEEK_API_KEY"] [[rules]] id = "zhipu-api-key" description = "Zhipu (GLM) API key" regex = '''[a-f0-9]{32}\.[a-zA-Z0-9]{16}''' keywords = ["zhipu", "ZHIPU_API_KEY", "智谱"] [[rules]] id = "moonshot-api-key" description = "Moonshot (Kimi) API key — sk-{48+}" regex = '''sk-[a-zA-Z0-9]{48,}''' keywords = ["moonshot", "MOONSHOT_API_KEY", "月之暗面"] # ────────────────────────────────────────────── # Allowlist (false positives + safe references) # ────────────────────────────────────────────── [allowlist] description = "Test fixtures, doc placeholders, and template files" paths = [ '''.*\.env\.template$''', '''.*\.env\.example$''', '''.*test.*\.(py|ts|js|yml)$''', '''.*tests/.*''', '''.*fixtures?/.*''', '''.*/MEMORY\.md$''', # session memory may include token-shaped strings as docs # API doc files — full of curl examples with "ap_your_key" / "ap_xxx..." placeholders '''docs/api\.md$''', '''docs/usage-guide\.md$''', '''docs/.*-guide\.md$''', # 任何 *-guide.md 文档(同样多 curl 示例) ] regexTarget = "match" regexes = [ '''''', '''''', '''\$\{[A-Z_]+_API_KEY\}''', '''YOUR_API_KEY''', '''YOUR_TOKEN''', '''your_(key|token|api_key|secret)''', '''dummy[_-]?key''', '''fake[_-]?key''', '''sk-xxxx+''', '''ap_your_key''', # agentpaas 文档占位符 '''ap_[a-z0-9]+\.\.\.''', # 截断式样例 (ap_a1b2c3d4e5f6...) '''Bearer ap_your''', # 出现在 curl Authorization 头 '''Bearer YOUR_''', # 通用 README 写法 ]