value_safe_char: '[^\s\[\]()@,;"''`{}<>\\]'
allow_values:
- '^(toolu|msg|req)_[A-Za-z0-9_]+$'
- '://[^:@/\s]*:(pass|password)@'
- '://[A-Z_]+:[A-Z_]+@'
- '://[^:@/\s]*:<[^>]*>@'
- '^[A-Za-z0-9][A-Za-z0-9._-]*/[A-Za-z0-9._-]+#[0-9]+[.,;:)]?$'
- '(^|/)v?[0-9]+(\.[0-9]+){2,3}$'
- '^(redis|rediss|postgres|postgresql|mysql|mongodb|amqps?)://(localhost|127\.0\.0\.1|0\.0\.0\.0)(:[0-9]{1,5})?(/[A-Za-z0-9_-]*)?$'
- '^\*{8,}$'
- '(?i)^your[-_]password[-_]here$'
- '^password[0-9]*$'
patterns:
- name: aws_access_key
regex: 'A(?:KIA|SIA)[0-9A-Z]{16}'
prefilters: ['AKIA', 'ASIA']
- name: aws_secret_key
regex: '(?i)aws[_\-]?secret[_\-]?access[_\-]?key[ \t]*[=:][ \t]*[A-Za-z0-9/+=]{40}'
includes_key: true
prefilters_ignore_case: ['aws']
- name: github_fine_grained
regex: 'github_pat_[A-Za-z0-9_]{22,}'
prefilters: ['github_pat_']
- name: github_token
regex: 'gh[psu]_[A-Za-z0-9_]{36,}'
prefilters: ['ghp_', 'ghs_', 'ghu_']
- name: github_oauth
regex: 'gho_[A-Za-z0-9_]{36,}'
prefilters: ['gho_']
- name: github_refresh
regex: 'ghr_[A-Za-z0-9_]{36,}'
prefilters: ['ghr_']
- name: stripe_live
regex: '[srp]k_live_[A-Za-z0-9]{24,}'
prefilters: ['k_live_']
- name: stripe_test
regex: '[srp]k_test_[A-Za-z0-9]{24,}'
prefilters: ['k_test_']
- name: twilio_api_key
regex: '\bSK[0-9a-fA-F]{32}\b'
prefilters: ['SK']
- name: twilio_account_sid
regex: '\bAC[0-9a-fA-F]{32}\b'
prefilters: ['AC']
- name: digitalocean_token
regex: 'dop_v1_[a-f0-9]{64}'
prefilters: ['dop_v1_']
- name: digitalocean_spaces
regex: '(?i)SPACES[_\-](ACCESS[_\-]KEY|SECRET[_\-]KEY)[ \t]*[=:][ \t]*[A-Za-z0-9/+=_\-]{8,}'
includes_key: true
prefilters_ignore_case: ['spaces']
- name: sentry_dsn
regex: 'https://[a-f0-9]{32}@[a-z0-9.\-]+\.ingest\.[a-z.]*sentry\.io/[0-9]+'
prefilters: ['.ingest.']
- name: slack_token
regex: 'xox[baeprs]-[A-Za-z0-9\-]{10,}'
prefilters: ['xox']
- name: sendgrid_key
regex: 'SG\.[A-Za-z0-9_\-]{22,}\.[A-Za-z0-9_\-]{22,}'
prefilters: ['SG.']
- name: hubspot_key
regex: '(?i)pat-[a-z0-9]{2,3}-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
prefilters_ignore_case: ['pat-']
- name: private_key
regex: '-----BEGIN\s+(RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END\s+(RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----'
prefilters: ['PRIVATE KEY-----']
- name: gcp_sa_private_key
regex: '(?m)"private_key"[ \t]*:[ \t]*"-----BEGIN[^"\n]+(?:\r?\n[A-Za-z0-9+/=]{16,}\r?$)*'
includes_key: true
prefilters: ['"private_key"']
- name: gcp_sa_key_id
regex: '"private_key_id"[ \t]*:[ \t]*"[0-9a-f]{12,}"'
includes_key: true
prefilters: ['"private_key_id"']
- name: private_key_truncated
regex: '-----BEGIN\s+(RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----(?:\s*[A-Za-z0-9+/=]{16,})+'
prefilters: ['PRIVATE KEY-----']
- name: jwt
regex: 'eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}'
prefilters: ['eyJ']
- name: anthropic_key
regex: 'sk-ant-[A-Za-z0-9_-]{20,}'
prefilters: ['sk-ant-']
- name: circleci_token
regex: 'CCIPAT_[A-Za-z0-9_]{20,}'
prefilters: ['CCIPAT_']
- name: sentry_user_token
regex: 'sntryu_[A-Za-z0-9]{20,}'
prefilters: ['sntryu_']
- name: rubygems_key
regex: 'rubygems_[A-Za-z0-9]{20,}'
prefilters: ['rubygems_']
- name: newrelic_key
regex: 'NRAK-[A-Za-z0-9]{20,}'
prefilters: ['NRAK-']
- name: openai_key
regex: 'sk-(proj|svcacct|admin)-[A-Za-z0-9_-]{20,}'
prefilters: ['sk-']
- name: openai_classic_key
regex: '\bsk-[A-Za-z0-9]{48}\b'
prefilters: ['sk-']
- name: google_api_key
regex: 'AIza[A-Za-z0-9_-]{35}'
prefilters: ['AIza']
- name: google_api_key_v2
regex: 'AQ\.[A-Za-z0-9_-]{40,}'
prefilters: ['AQ.']
- name: stripe_webhook_secret
regex: 'whsec_[A-Za-z0-9]{24,}'
prefilters: ['whsec_']
- name: huggingface_token
regex: 'hf_[A-Za-z0-9]{30,}'
prefilters: ['hf_']
- name: groq_key
regex: 'gsk_[A-Za-z0-9]{40,}'
prefilters: ['gsk_']
- name: openrouter_key
regex: 'sk-or-v1-[a-f0-9]{48,}'
prefilters: ['sk-or-v1-']
- name: xai_key
regex: 'xai-[A-Za-z0-9]{60,}'
prefilters: ['xai-']
- name: perplexity_key
regex: 'pplx-[A-Za-z0-9]{32,}'
prefilters: ['pplx-']
- name: tavily_key
regex: 'tvly-(?:dev-)?[A-Za-z0-9]{24,}'
prefilters: ['tvly-']
- name: langsmith_key
regex: 'lsv2_(?:pt|sk)_[A-Za-z0-9]{24,}_[A-Za-z0-9]{8,}'
prefilters: ['lsv2_']
- name: gitlab_pat
regex: 'glpat-[A-Za-z0-9_-]{20,}'
prefilters: ['glpat-']
- name: npm_token
regex: 'npm_[A-Za-z0-9]{36}'
prefilters: ['npm_']
- name: slack_webhook
regex: 'https://hooks\.slack\.com/services/[A-Za-z0-9/]+'
prefilters: ['hooks.slack.com']
- name: pypi_token
regex: 'pypi-[A-Za-z0-9_-]{50,}'
prefilters: ['pypi-']
- name: auth_header
regex: '(?i)\b(proxy-)?authorization[ \t]*:[ \t]*(bearer|basic|token)[ \t]+[A-Za-z0-9._~+/=-]{8,}'
includes_key: true
prefilters_ignore_case: ['authorization']
- name: database_url
regex: '(?i)(postgres(?:ql)?|mysql|mongodb|mongodb\+srv|rediss?|amqps?)://[^\s"''`\\${}]+'
prefilters: ['://']
- name: credentialed_url
regex: '(?i)\b[a-z][a-z0-9+.\-]*://[^\s:/@]*:[^\s:/@]+@[^\s"''`\\${}]+'
prefilters: ['://']
- name: password_assignment
regex: '(?i)\b[a-z0-9_.\-]*(?:password|passwd)["'']?[ \t]*[=:][ \t]*["'']?[^\s\[\]()@,;"''`{}<>\\$][^\s\[\](),;"''`{}<>\\]{7,}'
includes_key: true
prefilters_ignore_case: ['password', 'passwd']
- name: email
regex: '[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}\b'
prefilters: ['@']
opt_in: true
- name: phone
regex: '\+[1-9][0-9]{7,14}\b|\+[1-9][0-9]{0,2}(?:[ -][0-9]{2,4}){2,4}\b|\([2-9][0-9]{2}\) ?[0-9]{3}-[0-9]{4}\b|[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}\b|0[0-9]{3}(?:-[0-9]{4}-| [0-9]{4} )[0-9]{3,4}\b'
opt_in: true