redact-secret · Report
Private API key and HTTP webhook signing key
key- followed by 32 lowercase alphanumeric bytes; Mailgun's current API reference shows the same shape for the account HTTP signing key. Recognized only beside a same-line mailgun keyword.
Research record
3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-09-25 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^key-[a-z0-9]{32}$
Parts are shown as recorded. Evidence classes belong to the facts below; no class is assigned to a part.
Format facts
Tool corroborated ·
tool-corroboration· current · observed 2026-09-25Pinned scanner rules are consistent with the contract grammar (2 artifacts: gitleaks 8.30.1; trufflehog 3.97.4).
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports gitleaks 8.30.1: gitleaks.toml
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/mailgun/mailgun.goscanner-rule-source · last read 2026-09-25 · latest outcome read · supports trufflehog 3.97.4: mailgun/mailgun
Unresolved ·
dossier-research· current · observed 2026-09-25Legacy dossier research (verdict ready, tier T2) cited 3 sources; the dossier does not attribute sources to individual properties.
- documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Account-Management/provider-documentation · last read 2026-09-25 · latest outcome read · supports Cited by the legacy dossier research for this family
- documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/account-management/get-v5-accounts-http_signing_keyprovider-documentation · last read 2026-09-25 · latest outcome read · supports Cited by the legacy dossier research for this family
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/582/README.mdproject-research-note · last read 2026-09-25 · latest outcome read · supports Final research evidence recorded by the legacy dossier
Unresolved ·
taxonomy-sources· current · observed 2026-09-25The legacy taxonomy lists 1 source for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Account-Management/provider-documentation · last read 2026-09-25 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy
Open questions
No open question is recorded for this revision.
Benchmark dossier notes
- Shape
key-followed by 32 characters from[a-z0-9]. Mailgun's own PHP SDK test uses a signing key with letters pastf, so the body is not hex-only. Case is outside the benchmark claim since 2026-09-24.- Basis
- T2. trufflehog (
key-+ 32[a-z0-9], no keyword), gitleaks (key-+ 32 hex behind amailgunkeyword) and Nosey Parker agree. The one provider example is for the webhook signing key, so one detector covers both roles because the interface gives them one shape. - Issuance
- Mailgun help articles returned 403 in the #582 pass and were not read. Not attempted.
- Contract in core
- detector-families.md (
mailgun_api_key, confidence-gated on amailgunkeyword).
In this benchmark
- Fixtures
- 43
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
43 fixtures: 16 expect a redaction, 27 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T2Tool-corroborated | 32 | 0 | 0 | 0 |
| T3Project policy | 8 | 0 | 0 | 0 |
| T0Pending review | 3 | 0 | 0 | 0 |
Every scanner on the same fixtures
In run order. Counts are what each scanner recorded on this family's fixtures, whichever rules it has; a scanner with no rule for the family has nothing to report on it.
| Scanner | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| flare-redactRuntime library · 1.6.1 · Published npm package · secrets-only (pii, generic_assignment disabled) · JavaScript engine1 rule targets it | 43 | 16 | 0 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rules1 rule targets it | 43 | 0 | 1 | 1 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 43 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 43 | 0 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- The key- + 32 shape is provider-shown only for the HTTP signing key. Three sources say the current private API key is a prefix-less 32-8-8 hex triplet, so key- may be the older shape. Needs one issued key.
Looks like it, but isn't
- Collisions
- the public validation key (
pubkey-) and the 8-8 hex keyidshape shown in the docs. A 32-8-8 triplet (below) may be the current private key.
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| flare-redact · rules 1.6.1 | mailgun_key | key- + 32 hex |
| gitleaks · rules 8.30.1 | mailgun-private-api-token | mailgun keyword + key- + 32 hex |
| openredaction · rules 1.1.5 | MAILGUN_API_KEY | key- + 32 characters |
| trufflehog · rules 3.97.4 | mailgun | key- + 32 characters, or a 32-8-8 hex triplet |
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
mailgun-api-key-actions-envmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-anymail-settingsmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-compose-envmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-curl-usermailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-debug-logmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-docs-template-placeholdermailgun · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-envmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-heroku-configmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-http-signing-key-baremailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-http-signing-key-quotedmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-http-signing-key-unicode-crlfmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-node-clientmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-private-api-key-baremailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-private-api-key-quotedmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-private-api-key-unicode-crlfmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-settings-jsonmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-shell-exportmailgun · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
mailgun-api-key-actions-secret-referencemailgun · templated-reference | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-compose-delimiter-twinmailgun · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-compose-long-twinmailgun · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-django-env-referencemailgun · templated-reference | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-domain-and-message-id-public-idmailgun · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-key-types-note-prosemailgun · prose-mention | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-label-prosemailgun · benign-lookalike | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-maskmailgun · benign-lookalike | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-masked-dashboard-placeholdermailgun · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-package-checksum-encoded-valuemailgun · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-prefix-onlymailgun · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-private-api-key-alphabet-bare-twinmailgun · unsettled-evidence-input | Pending reviewT0 · Pending · twin | Unscored |
mailgun-api-key-private-api-key-alphabet-quoted-twinmailgun · unsettled-evidence-input | Pending reviewT0 · Pending · twin | Unscored |
mailgun-api-key-private-api-key-alphabet-unicode-crlf-twinmailgun · unsettled-evidence-input | Pending reviewT0 · Pending · twin | Unscored |
mailgun-api-key-private-api-key-bare-twinmailgun · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-private-api-key-prefix-bare-twinmailgun · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-private-api-key-prefix-quoted-twinmailgun · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-private-api-key-prefix-unicode-crlf-twinmailgun · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-private-api-key-quoted-twinmailgun · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-private-api-key-unicode-crlf-twinmailgun · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
mailgun-api-key-public-idmailgun · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-public-validation-key-public-idmailgun · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-referencemailgun · benign-lookalike | Must not flagT3 · Project policy | Quiet |
mailgun-api-key-setting-name-near-missmailgun · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-short-body-in-log-near-missmailgun · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
mailgun-api-key-short-body-in-prose-near-missmailgun · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
Sources
Documentation and code
- documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Account-Management/
- documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/account-management/get-v5-accounts-http_signing_key
Research log
- redact-secret/redact-secret#582Research issue
- redact-secret/redact-secret#701Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/582/README.md