redact-secret · Report · Detector
Neon API keys
Format evidence
- betterleaks
- mask-go
- Reference 1
- Reference 2
- Reference 3
- Twin source napi_ prefix (2025-01-31 changelog) · observed 2026-09-24 · Neon states that newly created API keys are prefixed with napi_ so that secret scanning can rely on an identifiable marker, and that existing unprefixed keys stay valid. It states no body length or alphabet. Twins mutate the prefix, its delimiter, the body length floor or the body alphabet
Registry detector neon-api-key since redact-secret#524 (#773, registry pinned at 3144bb3); authored under #259 directly as a registry contract. The napi_ prefix is provider-documented (Neon changelog 2025-01-31, source neondatabase/website content/changelog/2025-01-31.md). The body is not: Neon calls a key "a randomly-generated 64-bit token", and its one written example (napi_examplekey...) is a word and two ordered runs, not a shape. The 64-character [A-Za-z0-9] body floor is corroborated by betterleaks neon-api-key (exactly 64, entropy-gated) and mask-go (64 as a floor). The tier is therefore T2: a T1 prefix with a tool-corroborated body stays at the weakest frozen field. The body is read as a floor, so no fixture asserts silence on a longer body. GitHub secret scanning lists neon_api_key as a partner pattern without publishing the expression. Neither pinned peer (gitleaks 8.30.1, trufflehog 3.97.4) has a Neon rule, so a peer miss is expected. Legacy unprefixed keys are not claimed and are not controls. A Neon connection URI password is a separate credential that the connection-string family already covers, and it is never a control here. Node-API identifiers (napi_create_string_utf8, NAPI_VERSION) are near-miss controls.
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 | 8 | False alarmsat most 32.4%0 of 8 controls flagged | 8 quiet · 0 flagged |
| |
| Must redact · Tool-corroborated | 18 | Secret spans left readableat most 17.6%0 of 18 spans | Near-twins told apartinsufficient-coverage8 of 8 pairs | 18 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 |
|---|---|---|
neon-api-key-api-key-createneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-bearer-curlneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-compose-envneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-create-branch-actionneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-dotenvneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-exportneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-incident-noteneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-key-shape-bareneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-key-shape-quotedneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-key-shape-unicode-crlfneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-mcp-configneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-neonctl-flagneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-secret-printneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-terraform-varsneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-ts-api-clientneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-twin-base-dotenvneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-twin-base-headerneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-twin-base-tsneon · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
neon-api-key-actions-secret-referenceneon · templated-reference | Must not flagT3 · Project policy | Quiet |
neon-api-key-api-key-list-public-idneon · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-dash-in-body-twinneon · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-docs-placeholder-placeholderneon · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
neon-api-key-env-reference-referenceneon · templated-reference | Must not flagT3 · Project policy | Quiet |
neon-api-key-hyphen-delimiter-twinneon · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-inner-dash-twinneon · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-key-guidance-proseneon · prose-mention | Must not flagT3 · Project policy | Quiet |
neon-api-key-label-proseneon · benign-lookalike | Must not flagT3 · Project policy | Quiet |
neon-api-key-maskneon · benign-lookalike | Must not flagT3 · Project policy | Quiet |
neon-api-key-masked-display-placeholderneon · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
neon-api-key-node-api-call-near-missneon · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-pooled-host-public-idneon · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-prefix-letter-twinneon · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-prefix-letter-twin-prefix-near-missneon · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-prefix-onlyneon · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-prefix-only-near-missneon · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-project-and-branch-public-idneon · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-project-digest-encoded-valueneon · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-referenceneon · benign-lookalike | Must not flagT3 · Project policy | Quiet |
neon-api-key-short-bodyneon · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
neon-api-key-short-body-twinneon · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-short-body-twin-wrong-lengthneon · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
neon-api-key-uppercase-prefix-twinneon · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |