redact-secret · Report
API key
SG. prefixed API key (full-access and restricted-access permission scopes share this format).
Research record
1 event in the review history: 1 reviewed. Latest: reviewed on 2026-09-20 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^SG\.[A-Za-z0-9_-]{22}\.[A-Za-z0-9_-]{43}$
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-20fixed 69-character key length: the total key is documented as always 69 characters and never shorter; the SG. prefix, the dot-separated id/secret segments, the 22/43 character split between them and the alphabet are tool-corroborated, not this citation
- support.sendgrid.com/hc/en-us/articles/44146758703387-Can-I-Use-a-Reduced-Shorter-API-Key-Size-in-SendGridprovider-documentation · last read 2026-10-03 · latest outcome unchanged · supports the total key is documented as always 69 characters and never shorter; the SG. prefix, the dot-separated id/secret segments, the 22/43 character split between them and the alphabet are tool-corroborated, not this citation
Tool corroborated ·
tool-corroboration· current · observed 2026-09-20Pinned 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/sendgrid/sendgrid.goscanner-rule-source · last read 2026-09-20 · latest outcome read · supports trufflehog 3.97.4: sendgrid/sendgrid
Provider documented ·
dossier-research· current · observed 2026-09-20Legacy dossier research (verdict ready, tier T1) cited 1 source; the dossier does not attribute sources to individual properties.
- support.sendgrid.com/hc/en-us/articles/44146758703387-Can-I-Use-a-Reduced-Shorter-API-Key-Size-in-SendGridprovider-documentation · last read 2026-10-03 · latest outcome unchanged · supports Cited by the legacy dossier research for this family
Open questions
No open question is recorded for this revision.
Benchmark dossier notes
- Shape
- SG. prefixed API key (full-access and restricted-access permission scopes share this format).
- Basis
ready, T1 per the shippedsendgrid-tokencontract in the benchmarks assessment. Its provider source is a SendGrid support article stating a fixed total key length of 69 characters (added 2026-09-20 by benchmarks PR #34, closing #33). TheSG.prefix, the dot-separated 22 and 43 character segments and the alphabet are tool-corroborated, not stated by that page.- Contract in core
- detector-families.md.
In this benchmark
- Fixtures
- 167
- Left readable
- 30
- Redacted too much
- 0
- False alarms
- 0
167 fixtures: 58 expect a redaction, 40 must stay quiet, 69 record project policy. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 47 | 1 | 0 | 0 |
| T2Tool-corroborated | 36 | 9 | 0 | 0 |
| T3Project policy | 75 | 20 | 0 | 0 |
| T0Pending review | 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 engine1 rule targets it | 167 | 42 | 1 | 16 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rules1 rule targets it | 167 | 32 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 167 | 30 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 167 | 100 | 0 | 16 |
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| flare-redact · rules 1.6.1 | sendgrid_key | SG. + 16-32 + . + 16-64 characters |
| gitleaks · rules 8.30.1 | sendgrid-api-token | SG. + 66 characters |
| openredaction · rules 1.1.5 | SENDGRID_API_KEY | SG. + 22 + . + 43 characters |
| trufflehog · rules 3.97.4 | sendgrid | SG. + 20-24 + . + 39-50 characters |
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
sendgrid-key-base64-standard-padded-in-envbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-base64-standard-padded-in-jsonbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-base64-standard-padded-in-urlbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-base64-standard-padded-three-layers-in-envbase64-hex-representation-projections · credential-in-nested-encoding-layers | Project policyT3 · Project policy | Left readable |
sendgrid-key-base64-url-safe-unpadded-of-base64-standard-padded-in-envbase64-hex-representation-projections · credential-in-nested-encoding-layers | Project policyT3 · Project policy | Left readable |
sendgrid-key-base64-url-safe-unpadded-of-hex-upper-of-base64-standard-padded-in-jsonbase64-hex-representation-projections · credential-in-nested-encoding-layers | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-lower-in-envbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-lower-in-urlbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-lower-of-base64-standard-padded-in-envbase64-hex-representation-projections · credential-in-nested-encoding-layers | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-lower-of-hex-lower-in-envbase64-hex-representation-projections · credential-in-nested-encoding-layers | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-mixed-in-envbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-upper-in-envbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
sendgrid-key-hex-upper-in-jsonbase64-hex-representation-projections · credential-in-base64-or-hex-form | Project policyT3 · Project policy | Left readable |
get-url-variables-valuegraphql-requests-and-responses-authored · graphql-variables-map-value-and-literal-beside-variable-references | Must redactT1 · Provider-documented | Left readable |
key-split-across-javascript-added-literalsline-break-and-fragment-authored · credential-split-across-concatenated-string-literals | Must redactT2 · Tool-corroborated | Left readable |
key-split-across-python-adjacent-literalsline-break-and-fragment-authored · credential-split-across-concatenated-string-literals | Must redactT2 · Tool-corroborated | Left readable |
key-split-after-prefix-by-shell-continuationline-break-and-fragment-authored · credential-split-by-shell-backslash-newline | Must redactT2 · Tool-corroborated | Left readable |
key-split-before-last-character-by-shell-continuationline-break-and-fragment-authored · credential-split-by-shell-backslash-newline | Must redactT2 · Tool-corroborated | Left readable |
key-split-by-backslash-crlf-continuationline-break-and-fragment-authored · credential-split-by-backslash-crlf-continuation | Project policyT3 · Project policy | Left readable |
key-split-by-backslash-newline-in-single-quotesline-break-and-fragment-authored · credential-split-by-backslash-newline-inside-single-quotes | Project policyT3 · Project policy | Left readable |
key-split-by-double-quoted-shell-continuationline-break-and-fragment-authored · credential-split-by-shell-backslash-newline | Must redactT2 · Tool-corroborated | Left readable |
key-split-by-javascript-literal-continuationline-break-and-fragment-authored · credential-split-by-string-literal-line-continuation | Must redactT2 · Tool-corroborated | Left readable |
key-split-by-literal-crlfline-break-and-fragment-authored · credential-split-by-literal-line-break-in-plain-text | Project policyT3 · Project policy | Left readable |
key-split-by-literal-line-feedline-break-and-fragment-authored · credential-split-by-literal-line-break-in-plain-text | Project policyT3 · Project policy | Left readable |
key-split-by-python-literal-continuationline-break-and-fragment-authored · credential-split-by-string-literal-line-continuation | Must redactT2 · Tool-corroborated | Left readable |
key-split-by-unquoted-shell-continuationline-break-and-fragment-authored · credential-split-by-shell-backslash-newline | Must redactT2 · Tool-corroborated | Left readable |
key-split-in-three-javascript-added-literalsline-break-and-fragment-authored · credential-split-across-concatenated-string-literals | Must redactT2 · Tool-corroborated | Left readable |
key-with-literal-backslash-n-in-log-lineline-break-and-fragment-authored · credential-with-escaped-line-break-text | Project policyT3 · Project policy | Left readable |
key-wrapped-in-markdown-code-spanline-break-and-fragment-authored · credential-split-by-markdown-paragraph-line-ending | Project policyT3 · Project policy | Left readable |
key-wrapped-in-markdown-paragraphline-break-and-fragment-authored · credential-split-by-markdown-paragraph-line-ending | Project policyT3 · Project policy | Left readable |
sendgrid-key-basebase64-hex-representation-bases · sendgrid-key-in-provider-named-fields | Must redactT1 · Provider-documented | Redacted |
sendgrid-api-key-base-acontext-and-large-input-bases-authored · environment-assignment | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-base-bcontext-and-large-input-bases-authored · environment-assignment | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-bare-valuecontext-carrier-projections-generated · value-at-input-edges | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-bearer-headercontext-carrier-projections-generated · partial-span-leakage | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-bom-prefixcontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-crlf-linescontext-carrier-projections-generated · crlf-line-endings | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-emoji-prefixcontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-json-fieldcontext-carrier-projections-generated · structured-text-value | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-korean-text-prefixcontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-log-linecontext-carrier-projections-generated · environment-assignment | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-markdown-code-spancontext-carrier-projections-generated · markdown-and-comment-value | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-nbsp-before-valuecontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-shell-export-quotedcontext-carrier-projections-generated · quoted-value-extent | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-url-querycontext-carrier-projections-generated · partial-span-leakage | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-xml-elementcontext-carrier-projections-generated · structured-text-value | Project policyT3 · Project policy | Redacted |
sendgrid-api-key-yaml-scalarcontext-carrier-projections-generated · structured-text-value | Project policyT3 · Project policy | Redacted |
post-body-inline-literalgraphql-requests-and-responses-authored · graphql-variables-map-value-and-literal-beside-variable-references | Must redactT1 · Provider-documented | Redacted |
post-body-variables-valuegraphql-requests-and-responses-authored · graphql-variables-map-value-and-literal-beside-variable-references | Must redactT1 · Provider-documented | Redacted |
request-then-full-echo-in-error-messagegraphql-requests-and-responses-authored · graphql-error-response-echo-of-supplied-secret | Must redactT1 · Provider-documented | Redacted |
Sources
Documentation and code
- support.sendgrid.com/hc/en-us/articles/44146758703387-Can-I-Use-a-Reduced-Shorter-API-Key-Size-in-SendGrid
Research log
- redact-secret/redact-secret-benchmarks#33Research issue