redact-secret · Report
Granular access token
2021-09 format token with a Base62 CRC32 checksum, prefixed npm_.
Research record
3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-10-03 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^npm_[A-Za-z0-9]{36}$
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-172021-09 npm_ prefix scheme: npm_ prefix, underscore delimiter and six-character Base62 CRC32 checksum; 36-character body is tool-corroborated
- github.blog/changelog/2021-09-23-npm-has-a-new-access-token-format/provider-documentation · last read 2026-10-03 · latest outcome read · supports npm_ prefix, underscore delimiter and six-character Base62 CRC32 checksum; 36-character body is tool-corroborated
Tool corroborated ·
tool-corroboration· current · observed 2026-09-17Pinned 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/npmtokenv2/npmtokenv2.goscanner-rule-source · last read 2026-09-17 · latest outcome read · supports trufflehog 3.97.4: npmtokenv2/npmtokenv2
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.
- github.blog/changelog/2021-09-23-npm-has-a-new-access-token-format/provider-documentation · last read 2026-10-03 · latest outcome read · supports Cited by the legacy dossier research for this family
Provider documented ·
taxonomy-sources· current · observed 2026-09-20The legacy taxonomy lists 1 source for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- github.blog/changelog/2021-09-23-npm-has-a-new-access-token-format/provider-documentation · last read 2026-10-03 · 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
- 2021-09 format token with a Base62 CRC32 checksum, prefixed npm_.
- Basis
- T1 per the shipped
npm-tokencontract in the benchmarks assessment: the GitHub changelog of 2021-09-23 documents thenpm_prefix, the underscore delimiter and a six-character Base62 CRC32 checksum. The 36-character body is tool-corroborated. The checksum is not part of the lexical pattern. Re-checked 2026-09-20 in benchmarks#46 (PR #55). - Contract in core
- detector-families.md.
In this benchmark
- Fixtures
- 54
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
54 fixtures: 10 expect a redaction, 13 must stay quiet, 31 record project policy. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 10 | 0 | 0 | 0 |
| T2Tool-corroborated | 10 | 0 | 0 | 0 |
| T3Project policy | 34 | 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 | 54 | 0 | 1 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rules1 rule targets it | 54 | 1 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 54 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 54 | 31 | 0 | 0 |
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| flare-redact · rules 1.6.1 | npm_token | npm_ + 36 characters |
| gitleaks · rules 8.30.1 | npm-access-token | npm_ + 36 characters |
| openredaction · rules 1.1.5 | NPM_TOKEN | npm_ + 36 characters |
| trufflehog · rules 3.97.4 | npmtokenv2 | npm_ + 36 characters |
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
npm-granular-token-base-acontext-and-large-input-bases-authored · environment-assignment | Project policyT3 · Project policy | Redacted |
npm-granular-token-base-bcontext-and-large-input-bases-authored · environment-assignment | Project policyT3 · Project policy | Redacted |
npm-granular-token-bare-valuecontext-carrier-projections-generated · value-at-input-edges | Project policyT3 · Project policy | Redacted |
npm-granular-token-bearer-headercontext-carrier-projections-generated · partial-span-leakage | Project policyT3 · Project policy | Redacted |
npm-granular-token-bom-prefixcontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
npm-granular-token-crlf-linescontext-carrier-projections-generated · crlf-line-endings | Project policyT3 · Project policy | Redacted |
npm-granular-token-emoji-prefixcontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
npm-granular-token-json-fieldcontext-carrier-projections-generated · structured-text-value | Project policyT3 · Project policy | Redacted |
npm-granular-token-korean-text-prefixcontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
npm-granular-token-log-linecontext-carrier-projections-generated · environment-assignment | Project policyT3 · Project policy | Redacted |
npm-granular-token-markdown-code-spancontext-carrier-projections-generated · markdown-and-comment-value | Project policyT3 · Project policy | Redacted |
npm-granular-token-nbsp-before-valuecontext-carrier-projections-generated · multibyte-text-offsets | Project policyT3 · Project policy | Redacted |
npm-granular-token-shell-export-quotedcontext-carrier-projections-generated · quoted-value-extent | Project policyT3 · Project policy | Redacted |
npm-granular-token-url-querycontext-carrier-projections-generated · partial-span-leakage | Project policyT3 · Project policy | Redacted |
npm-granular-token-xml-elementcontext-carrier-projections-generated · structured-text-value | Project policyT3 · Project policy | Redacted |
npm-granular-token-yaml-scalarcontext-carrier-projections-generated · structured-text-value | Project policyT3 · Project policy | Redacted |
npm-granular-token-head-of-1miblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-head-of-256kiblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-head-of-64kiblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-middle-of-1miblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-middle-of-256kiblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-middle-of-64kiblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-tail-of-1miblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-tail-of-256kiblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-tail-of-64kiblarge-and-repeated-input-projections-generated · credential-after-long-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-three-occurrences-in-1miblarge-and-repeated-input-projections-generated · multiple-credentials-per-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-three-occurrences-in-256kiblarge-and-repeated-input-projections-generated · multiple-credentials-per-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-three-occurrences-in-64kiblarge-and-repeated-input-projections-generated · multiple-credentials-per-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-two-distinct-keys-in-1miblarge-and-repeated-input-projections-generated · multiple-credentials-per-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-two-distinct-keys-in-256kiblarge-and-repeated-input-projections-generated · multiple-credentials-per-input | Project policyT3 · Project policy | Redacted |
npm-granular-token-two-distinct-keys-in-64kiblarge-and-repeated-input-projections-generated · multiple-credentials-per-input | Project policyT3 · Project policy | Redacted |
npm-1npm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-2npm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-3npm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-token-access-delimiter-plain-twinnpm · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
npm-token-access-delimiter-unicode-crlf-twinnpm · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
npm-token-access-plainnpm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-token-access-plain-twinnpm · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
npm-token-access-prefix-plain-twinnpm · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
npm-token-access-prefix-unicode-crlf-twinnpm · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
npm-token-access-unicode-crlfnpm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-token-access-unicode-crlf-twinnpm · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
npm-token-granular-token-note-prosenpm · prose-mention | Must not flagT3 · Project policy | Quiet |
npm-token-masknpm · benign-lookalike | Must not flagT3 · Project policy | Quiet |
npm-token-npmrc-auth-tokennpm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-token-prefix-onlynpm · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
npm-token-publish-workflow-envnpm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-token-referencenpm · benign-lookalike | Must not flagT3 · Project policy | Quiet |
npm-token-shape-1-barenpm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
npm-token-shape-1-quotednpm · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
Sources
Documentation and code
- github.blog/changelog/2021-09-23-npm-has-a-new-access-token-format/
Research log
- redact-secret/redact-secret-benchmarks#46Research issue