redact-secret · Report
API key (re_)
re_ + 8 alphanumerics + _ + 24 alphanumerics, 36 in all; full_access and sending_access keys share the shape.
Research record
3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-09-28 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^re_[A-Za-z0-9]{8}_[A-Za-z0-9]{24}$
Parts are shown as recorded. Evidence classes belong to the facts below; no class is assigned to a part.
Format facts
Provider documented ·
provider-source· current · observed 2026-09-28resend-cli login rejects a key that does not start with re_; the create-API-key response example is re_ + 8 + _ + 24 (re-checked 2026-09-28: 36 characters, no 0/O/I/l): re_ + 8 alphanumerics + _ + 24 alphanumerics, 36 in all; full_access and sending_access keys share the shape
- resend.com/docs/api-reference/api-keys/create-api-keyprovider-documentation · last read 2026-09-28 · latest outcome read · supports re_ + 8 alphanumerics + _ + 24 alphanumerics, 36 in all; full_access and sending_access keys share the shape
Provider documented ·
field-prefix· current · observed 2026-09-28prefix: re_
- github.com/resend/resend-cliprovider-sdk-source · last read 2026-09-28 · latest outcome read · supports "Your key must start with re_" · #authentication
Provider documented ·
field-layout· current · observed 2026-09-28layout: re_ + 8 + _ + 24 (36 in all); the _ at offset 11 is the only one after the prefix
- redact-secret/redact-secret @ 54fe385f718c884d7e3dde6b9756e2d70999ca91: docs/audits/evidence/860/resend.mdprovider-documentation · last read 2026-09-28 · latest outcome read · supports the same shape in three distinct SDK fixture values
- github.com/redact-secret/redact-secret/issues/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports R5 · #issuecomment-5871306275
- resend.com/docs/api-reference/api-keys/create-api-keyprovider-documentation · last read 2026-09-28 · latest outcome read · supports response example, measured by script, no value retained
Provider documented ·
field-alphabet· current · observed 2026-09-28alphabet: [A-Za-z0-9] in both segments (Every provider example is alphanumeric and base58-consistent; the contract keeps the alphanumeric superset, so a key with 0, O, I or l is not a false negative.)
- redact-secret/redact-secret @ 54fe385f718c884d7e3dde6b9756e2d70999ca91: docs/audits/evidence/860/resend.mdprovider-documentation · last read 2026-09-28 · latest outcome read · supports a trufflehog rule newer than the pinned 3.97.4 uses base58, a narrower class
- resend.com/docs/api-reference/api-keys/create-api-keyprovider-documentation · last read 2026-09-28 · latest outcome read · supports alphabet: [A-Za-z0-9] in both segments
Unresolved ·
field-mixed-case-guard· current · observed 2026-09-28mixed-case-guard: the product requires at least one upper- and one lower-case letter in the 32 body bytes (Project false-positive policy, not a provider fact. Positives are mixed case; no fixture asserts silence on a random one-case body, and the one-case controls are word-built identifiers.)
- redact-secret/redact-secret @ 54fe385f718c884d7e3dde6b9756e2d70999ca91: docs/audits/evidence/860/resend.mdprovider-documentation · last read 2026-09-28 · latest outcome read · supports the short-prefix guard; false-negative cost about 6e-8
Provider documented ·
field-transport· current · observed 2026-09-28transport: the RESEND_API_KEY environment variable, sent as Authorization: Bearer
- resend.com/docs/api-reference/introductionprovider-documentation · last read 2026-09-28 · latest outcome read · supports transport: the RESEND_API_KEY environment variable, sent as Authorization: Bearer · #authentication
Provider documented ·
field-webhook-secret· current · observed 2026-09-28webhook-secret: whsec_ webhook signing secrets use the Svix scheme (Another credential class: a prefix twin, never a benign control.)
- redact-secret/redact-secret @ 54fe385f718c884d7e3dde6b9756e2d70999ca91: docs/audits/evidence/860/resend.mdprovider-documentation · last read 2026-09-28 · latest outcome read · supports excluded shapes
Tool corroborated ·
field-peer-lag· current · observed 2026-09-28peer-lag: no rule in trufflehog 3.97.4 or gitleaks 8.30.1
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports no resend rule
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectorsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports no resend detector directory at the pinned version
Unresolved ·
listed-references· current · observed 2026-09-28The legacy contract lists 9 references without stating which property each supports.
- redact-secret/redact-secret @ 54fe385f718c884d7e3dde6b9756e2d70999ca91: docs/audits/evidence/860/resend.mdprovider-documentation · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract
- redact-secret/redact-secret @ 54fe385f718c884d7e3dde6b9756e2d70999ca91: docs/audits/evidence/860/tier-b-rerank.mdproject-research-note · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/redact-secret/redact-secret/issues/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #issuecomment-5871306275
- github.com/redact-secret/redact-secret/issues/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/redact-secret/redact-secret-benchmarks/issues/436issue-or-discussion · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/redact-secret/redact-secret/issues/915issue-or-discussion · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/resend/resend-cliprovider-sdk-source · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract · #authentication
- resend.com/docs/api-reference/introductionprovider-documentation · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract · #authentication
- resend.com/docs/api-reference/api-keys/create-api-keyprovider-documentation · last read 2026-09-28 · latest outcome read · supports Listed as a reference by the legacy contract
Provider documented ·
dossier-research· current · observed 2026-09-28Legacy dossier research (verdict ready, tier T1) cited 3 sources; the dossier does not attribute sources to individual properties.
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/resend.mdproject-research-note · last read 2026-09-28 · latest outcome read · supports Final research evidence recorded by the legacy dossier
- github.com/resend/resend-cliprovider-sdk-source · last read 2026-09-28 · latest outcome read · supports Cited by the legacy dossier research for this family · #authentication
- resend.com/docs/api-reference/api-keys/create-api-keyprovider-documentation · last read 2026-09-28 · latest outcome read · supports Cited by the legacy dossier research for this family
Provider documented ·
taxonomy-sources· current · observed 2026-09-28The legacy taxonomy lists 2 sources for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- github.com/resend/resend-cliprovider-sdk-source · last read 2026-09-28 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy · #authentication
- resend.com/docs/api-reference/api-keys/create-api-keyprovider-documentation · last read 2026-09-28 · 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
- prefix
re_, then 8 characters, an underscore, and 24 characters (36 in total), alphanumeric in both segments. - Basis
- prefix T1: the provider CLI rejects a key that does not start with
re_("Your key must start withre_"). The 8 +_+ 24 layout is T1 by example under ruling R5: the create-API-key docs example, plus provider SDK fixtures (three distinct values across the Go, Python, Node and .NET SDKs). The live docs example was re-measured on 2026-09-28. The three samples are consistent with base58, but three samples show what is present, not what is excluded, so the handoff takes the alphanumeric superset (the #655 Entra precedent). - Issuance
- not attempted.
- Contract in core
- detector-families.md.
In this benchmark
- Fixtures
- 42
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
42 fixtures: 17 expect a redaction, 25 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 17 | 0 | 0 | 0 |
| T2Tool-corroborated | 16 | 0 | 0 | 0 |
| T3Project policy | 9 | 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 engineNo rule maps to it | 42 | 15 | 2 | 1 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 42 | 8 | 0 | 2 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 42 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabledNo rule maps to it | 42 | 17 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- Segment layout and length rest on provider examples and SDK fixtures (R5), not a stated grammar; the alphanumeric superset was chosen deliberately over the base58 seen in samples.
Looks like it, but isn't
- Collisions
re_is very short and ends many identifiers and Python names; the leading boundary removes glued cases and the handoff adds a mixed-case post check (false-negative cost about 6e-8). No other issuer usingre_was found.
Scanner rules for this family
No peer rule maps to this family
None of the reviewed peer scanners has a rule that can match a credential of this family.
None mapped
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
resend-api-key-bare-proseresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-bearer-headerresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-chat-pasteresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-compose-envresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-curl-bearerresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-digits-placeholderresend · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
resend-api-key-dotenvresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-exportresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-json-api-keyresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-json-tokenresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-key-shape-bareresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-key-shape-quotedresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-key-shape-unicode-crlfresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-mcp-envresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-python-moduleresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-sdk-kwargresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-trailing-glue-twinresend · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-ts-clientresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-webhook-secret-twinresend · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-x-api-key-headerresend · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
resend-api-key-are-glue-twinresend · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-env-reference-referenceresend · templated-reference | Must not flagT3 · Project policy | Quiet |
resend-api-key-hyphen-separator-twinresend · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-key-guidance-proseresend · prose-mention | Must not flagT3 · Project policy | Quiet |
resend-api-key-label-proseresend · benign-lookalike | Must not flagT3 · Project policy | Quiet |
resend-api-key-maskresend · benign-lookalike | Must not flagT3 · Project policy | Quiet |
resend-api-key-masked-placeholderresend · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
resend-api-key-pre-identifier-public-idresend · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
resend-api-key-prefix-onlyresend · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
resend-api-key-python-re-names-public-idresend · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
resend-api-key-referenceresend · benign-lookalike | Must not flagT3 · Project policy | Quiet |
resend-api-key-second-underscore-twinresend · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-segment1-7-twinresend · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-segment1-9-twinresend · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-segment2-23-twinresend · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-segment2-25-twinresend · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-short-bodyresend · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
resend-api-key-truncated-near-missresend · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
resend-api-key-underscore-glue-twinresend · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-uppercase-prefix-twinresend · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
resend-api-key-x-run-placeholderresend · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
resend-api-key-your-key-placeholderresend · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
Sources
Documentation and code
- resend.com/docs/api-reference/api-keys/create-api-key
- github.com/resend/resend-cli#authentication
Research log
- redact-secret/redact-secret#860Research issue
- redact-secret/redact-secret#915Research issue
- redact-secret/redact-secret-benchmarks#436Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/860/resend.md