KeyDrift
Free scan
The Secret Leak Field Manual

Appendix B · Key-format quick reference

The Secret Leak Field Manual · 4 min read

Every example below is synthetic — each contains an embedded FAKE marker and matches none of the formats' real entropy requirements. Use these strings in docs, tests, and drills. Severity ratings follow Chapter 3's rubric.

The table

Provider / systemCredentialSynthetic exampleAnatomyDisposition
Supabaseservice_role JWT (legacy)eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJzZXJ2aWNlX3JvbGUiLCJpYXQiOjE3NTQwMDAwMDB9.FAKE_SIGNATURE_EXAMPLE_ONLYThree-part JWT; role claim in payloadSecret — critical; legacy, deprecated end of 2026
SupabaseLocal-dev service_role JWTSame shape; issuer supabase-demoMinted identically by local dev on every machineNot a leak — grants nothing hosted
Supabaseanon / authenticated JWT (legacy)Same shape; role anonThree-part JWTPublic by design
SupabasePublishable keysb_publishable_… shapesb_publishable_ prefixPublic by design
SupabaseSecret keysb_secret_… shapesb_secret_ prefixSecret — critical
SupabaseManagement tokensbp_… shapesbp_ prefix, account-levelSecret — critical
StripeSecret keysk_live_FAKE000000000000000000000sk_live_ + 24-char bodySecret — critical
StripeTest secret keysk_test_… shapesk_test_ prefixMedium — sandbox data only
StripeRestricted keyrk_live_FAKE000000000000000000000rk_live_ + bodySecret — high (bounded by permissions)
StripePublishable keypk_live_FAKE000000000000000000000pk_live_ + bodyPublic by design
StripeWebhook signing secretwhsec_FAKE000000000000000000000000whsec_ prefix, per endpointSecret — high (forgeries your endpoint accepts)
ClerkSecret keyStripe-shaped (sk_live_…)Identical shape to Stripe'sConfirm attribution before rotating
OpenAIProject keysk-proj-FAKE000000000000000000000000sk-proj- prefixSecret — critical
OpenAIAdmin keysk-admin-… shapesk-admin- prefixSecret — critical, org-wide scope
OpenAI-compatible gatewaysLegacy-shape key (DeepSeek, Groq, Together, Fireworks)sk-FAKE0000000000000000000000000000Bare sk- prefixSecret — critical at named provider
AnthropicAPI keysk-ant-api03-FAKE0000000000000000000000000000000000000000000000sk-ant- family prefixesSecret — critical
AWSAccess key ID (long-lived)AKIAFAKEEXAMPLE000000AKIA + 16 charsSecret when paired — critical
AWSAccess key ID (temporary)ASIA… shapeASIA prefix + session tokenSecret while valid — high/critical
AWSDocumented sample keyAKIAIOSFODNN7EXAMPLEAppears in AWS documentation everywhereNot a leak — reject by name
Google / FirebaseWeb API keyAIza… shapeAIza prefixPublic by design — severity depends on API restrictions
GitHubClassic PATghp_FAKE0000000000000000000000000000000ghp_/gho_/ghu_/ghs_/ghr_ prefixesSecret — critical (scope-bounded)
GitHubFine-grained PATgithub_pat_FAKE000000000000000000_0000000000000000000000000000000Long prefix + two segmentsSecret — high (owner/repo/permission bounded)
ResendAPI keyre_FAKE_000000000000000000000re_ prefixSecret — high
SendGridAPI keySG.FAKE0000000000000000000.0000000000000000000000000000000000000SG. + two dot-separated segmentsSecret — high (scoped or full access)
SlackBot tokenxoxb-0000-FAKE000000000000000xox[baprs]- familySecret — high per scope
MapboxSecret tokensk.eyJFAKE0000000000000000.FAKE0000000000000000sk. prefix, token-management scopeSecret — high; only pk. belongs in browsers
PostgreSQLConnection stringpostgresql://app:FAKEPASSWORD@db.example.internal:5432/prodScheme with embedded passwordSecret — critical
MongoDBConnection stringmongodb+srv://app:FAKEPASSWORD@cluster0.example.mongodb.net/prodScheme with embedded passwordSecret — critical
GenericCredential-named high-entropy valueapiKey: "FAKE_000000000000000000000000000"Key-named variable holding random-looking valueInvestigate — medium until attributed
PEMPrivate key block-----BEGIN PRIVATE KEY-----\nFAKE000000...\n-----END PRIVATE KEY-----Standard armor linesSecret — critical

Recognition rules that prevent expensive mistakes

  1. Prefixes prove format, not validity. A perfectly shaped string of zeros is still a zero. Randomness lives in the body.
  2. Documented samples are not leaks. Some sample keys are printed in provider documentation so widely that reporting them is noise; the table flags them where they exist.
  3. Shared shapes need attribution. Clerk/Stripe and the OpenAI-compatible gateway family mean one string maps to several possible providers. Name what you know; rotate regardless.
  4. Public-by-design keys are findings only when unprotected. An AIza key without API restrictions, a Mapbox setup missing URL restrictions — fix the restriction, not the secrecy.

Sources for current behavior

Stripe (docs.stripe.com/keys) · Supabase (API keys guide) · GitHub (managing PATs, secret scanning) · AWS (IAM access keys) · OpenAI (help center) · SendGrid (API keys) · Slack (token types) · Mapbox (tokens) · MongoDB Atlas (database users) · Firebase (API keys).