redact-secret · Report · Detector
Resend API keys
Format evidence
- Provider documentation resend-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) · observed 2026-09-28 · re_ + 8 alphanumerics + _ + 24 alphanumerics, 36 in all; full_access and sending_access keys share the shape
- Reference 1
- Reference 2
- Reference 3
- Reference 4
- Reference 5
- Reference 6
- Reference 7
- Reference 8
- Reference 9
Arrival evidence (#436, product redact-secret#915; #860 handoff resend.md, READY). T1: the provider CLI enforces the re_ prefix (code and README); the 8/_/24 layout is the docs response example and three distinct provider-authored SDK fixture values, which ruling R5 weighs like a docs example. The alphabet is taken as the alphanumeric superset: the samples are base58-consistent, but three samples show what is present, not what is excluded. re_ is short and ends many identifiers (are_, pre_, score_), so the leading boundary matters; the product adds a mixed-case guard (at least one upper- and one lower-case letter in the body) as false-positive policy. That guard is not a provider fact, so the corpus asserts silence only on word-built identifiers of the same layout, never on a random one-case body. Excluded: re_ + GUID mock keys, the 36-lowercase Go webhook placeholder, placeholders and masks, key object UUIDs, and whsec_ webhook signing secrets (another credential class: a twin, never a control). Graduated to a registry detector at the 1127bf9 re-pin (redact-secret PR #938).
What the run recorded, by group
| Group | Fixtures | Leaked or false alarms | Near-twins | Outcomes | Other scanners, same cell |
|---|---|---|---|---|---|
| Must not flag · Tool-corroborated | 16 | False alarmsat most 19.4%0 of 16 controls flagged | 16 quiet · 0 flagged |
| |
| Must not flag · Project policy | 9 | False alarmsat most 29.9%0 of 9 controls flagged | 9 quiet · 0 flagged |
| |
| Must redact · Provider-documented | 17 | Secret spans left readableat most 18.4%0 of 17 spans | Near-twins told apartat least 74.1%11 of 11 pairs | 17 redacted · 0 too much · 0 partly exposed · 0 missed |
|
- Fixtures
- 42
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
Fixtures for this detector
| 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 |