redact-secret · Report · Detector
Supabase tokens
Format evidence
- Provider documentation opaque key: sb_secret_ + 22-character random part + _ + 8-character checksum · observed 2026-09-24 · the self-hosting page states that opaque keys are sb_secret_<22-char-random>_<8-char-checksum> and "use the same format as the platform", and supabase.com/docs/guides/api/api-keys documents the sb_secret_ prefix and sb_publishable_ as "safe to expose online"; the base64url body alphabet and the sha256 checksum construction are provider code (supabase/supabase docker/utils/add-new-auth-keys.sh), not documentation, and the hosted checksum input is unconfirmed
- Reference 1
- Reference 2
Re-reviewed 2026-09-24 (#207, research #231) against the documented grammar instead of the empirical route. The earlier T0 record (#127, following #45) waited for Supabase's own documentation to state one body grammar; the self-hosting page now does (22 + _ + 8, "the same format as the platform"). The detector-coverage shape-1 positives were first generated as sb_secret_ plus 40 alphanumeric characters (no inner _), before that grammar was documented, and so fell outside it; they were wrong fixtures rather than a support claim and were regenerated in the documented 22 + _ + 8 layout (#213). The pinned TruffleHog supabasetoken detector matches the separate sbp_ management-token prefix, not sb_secret_, and is no longer cited; neither pinned peer has an sb_secret_ rule (betterleaks and kingfisher ship sb_secret_[A-Za-z0-9_-]{31}, unpinned). The product's floor (at_least(20, is_alnum_dash), redact-secret#515) is looser than this grammar. Twins mutate only documented properties: the public sb_publishable_ prefix, the 22/8 segment widths and the positional _ delimiter. The checksum is provider code and not part of the pattern, so no checksum-only twin is scored; the CLI's public local-dev constants are never used as fixtures.
What the run recorded, by group
| Group | Fixtures | Leaked or false alarms | Near-twins | Outcomes | Other scanners, same cell |
|---|---|---|---|---|---|
| Must not flag · Provider-documented | 2 | False alarmsinsufficient-evidence0 of 2 controls flagged | 2 quiet · 0 flagged |
| |
| Must not flag · Tool-corroborated | 10 | False alarmsat most 27.8%0 of 10 controls flagged | 10 quiet · 0 flagged |
| |
| Must not flag · Project policy | 7 | False alarmsat most 35.4%0 of 7 controls flagged | 7 quiet · 0 flagged |
| |
| Must redact · Provider-documented | 11 | Secret spans left readableat most 25.9%0 of 11 spans | Near-twins told apartinsufficient-coverage5 of 5 pairs | 11 redacted · 0 too much · 0 partly exposed · 0 missed |
|
- Fixtures
- 30
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
Fixtures for this detector
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
supabase-token-actions-envsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-apikey-headersupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-create-clientsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-edge-keys-jsonsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-envsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-long-checksum-twinsupabase · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
supabase-token-publishable-key-public-idsupabase · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
supabase-token-self-hosted-composesupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-shape-1-baresupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-shape-1-quotedsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-shape-1-unicode-crlfsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-shell-exportsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-status-envsupabase · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
supabase-token-actions-secret-referencesupabase · templated-reference | Must not flagT3 · Project policy | Quiet |
supabase-token-dash-delimiter-twinsupabase · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
supabase-token-docs-ellipsis-placeholdersupabase · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
supabase-token-key-hash-encoded-valuesupabase · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
supabase-token-label-prosesupabase · benign-lookalike | Must not flagT3 · Project policy | Quiet |
supabase-token-logged-six-characters-placeholdersupabase · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
supabase-token-masksupabase · benign-lookalike | Must not flagT3 · Project policy | Quiet |
supabase-token-plural-prefix-near-misssupabase · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
supabase-token-prefix-onlysupabase · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
supabase-token-project-url-public-idsupabase · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
supabase-token-publishable-prefix-sdk-twinsupabase · public-sibling-prefix | Must not flagT1 · Provider-documented · twin | Quiet |
supabase-token-publishable-prefix-twinsupabase · public-sibling-prefix | Must not flagT1 · Provider-documented · twin | Quiet |
supabase-token-referencesupabase · benign-lookalike | Must not flagT3 · Project policy | Quiet |
supabase-token-rotation-note-prosesupabase · prose-mention | Must not flagT3 · Project policy | Quiet |
supabase-token-short-bodysupabase · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
supabase-token-short-random-twinsupabase · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
supabase-token-unprefixed-body-near-misssupabase · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |