Trust

The guard, in your browser

This page runs the same guard the Forge and the Ship Check run, in your browser. Nothing you paste is sent anywhere. A hit names the field, never the value.

What the guard looks for · Patterns 1.1.0

  • A[KS]IA[0-9A-Z]{16}
  • sk-(?:proj-)?[A-Za-z0-9_-]{20,}
  • gh[posru]_[A-Za-z0-9]{20,}
  • github_pat_[A-Za-z0-9_]{20,}
  • AIza[0-9A-Za-z_-]{20,}
  • xox[baprs]-[A-Za-z0-9-]{10,}
  • eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}
  • :\/\/[^\s/:@]+:[^\s/:@]+@
  • BEGIN[A-Z ]*PRIVATE KEY
  • (?<![A-Za-z0-9/+=])(?=[A-Za-z0-9/+]*[A-Z])(?=[A-Za-z0-9/+]*[a-z])(?=[A-Za-z0-9/+]*[0-9])[A-Za-z0-9/+]{40}(?![A-Za-z0-9/+=])
  • (?:[Kk]ey|KEY|[Tt]oken|TOKEN|[Ss]ecret|SECRET|[Pp]assword|PASSWORD)["':= ]{1,4}[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}

And one rule beyond the patterns: a run of 24 or more characters, with letters and digits, whose entropy reaches 3 bits per character. Separators such as spaces, slashes, dots and dashes cut the runs.

What it misses, written down

It is a heuristic. These cases pass it, and the record says so:

  • a short password with a capital, digits and a sign
  • a long passphrase of words