redact-secret · Report
Scannable API token
cfut_ prefixed scannable API token format.
Research record
2 events in the review history: 1 observed, 1 reviewed. Latest: observed on 2026-09-21 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^cfut_[A-Za-z0-9]{40}[a-f0-9]{8}$
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-17cfut_ scannable format: cfut_ prefix documented as the scannable token format; 40+8 body structure is tool-corroborated
- developers.cloudflare.com/fundamentals/api/get-started/create-token/provider-documentation · last read 2026-09-21 · latest outcome read · supports cfut_ prefix documented as the scannable token format; 40+8 body structure is tool-corroborated
Unresolved ·
tool-corroboration· current · observed 2026-09-17Pinned scanner rules are consistent with the contract grammar (1 artifact: trufflehog 3.97.4).
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/cloudflareapitoken/v2/cloudflareapitoken.goscanner-rule-source · last read 2026-09-17 · latest outcome read · supports trufflehog 3.97.4: cloudflareapitoken/v2/cloudflareapitoken
Provider documented ·
dossier-research· current · observed 2026-09-21Legacy dossier research (verdict ready, tier T1) cited 3 sources; the dossier does not attribute sources to individual properties.
- developers.cloudflare.com/fundamentals/api/get-started/token-formats/provider-documentation · last read 2026-09-21 · latest outcome read · supports Cited by the legacy dossier research for this family
- developers.cloudflare.com/fundamentals/api/get-started/create-token/provider-documentation · last read 2026-09-21 · latest outcome read · supports Cited by the legacy dossier research for this family
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/566/README.mdproject-research-note · last read 2026-09-21 · latest outcome read · supports Final research evidence recorded by the legacy dossier
Open questions
No open question is recorded for this revision.
Benchmark dossier notes
- Shape
- prefix
cfut_, a 40-character alphanumeric body, then an 8-character lowercase-hex checksum, 53 characters in all. The provider says a checksum follows the body, so a barecfut_plus 40 characters is malformed under this grammar. No checksum algorithm is computed or claimed. - Basis
- T1 for the prefix, the body length and the existence of a checksum: the token-formats page says every prefixed token has a distinct prefix followed by 40 characters and a checksum, and the create-token page documents
cfut_as the scannable format. Width and alphabet of the checksum come from trufflehog's Cloudflare v2 detector, one tool; gitleaks has nocfut_rule. #566 re-fetched the token-formats page on 2026-09-21 (last updated 2026-04-20) and found no published width or alphabet. - Issuance
- not attempted.
- Contract in core
- detector-families.md.
In this benchmark
- Fixtures
- 24
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
24 fixtures: 8 expect a redaction, 16 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 8 | 0 | 0 | 0 |
| T2Tool-corroborated | 12 | 0 | 0 | 0 |
| T3Project policy | 4 | 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 engineNo rule maps to it | 24 | 7 | 0 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 24 | 6 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 24 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 24 | 0 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- The 8-character lowercase-hex checksum width and alphabet come from one tool; Cloudflare only says a checksum follows the 40-character body.
Looks like it, but isn't
- Collisions
cfat_(account-owned token) andcfk_(global key) share the same format cell and are separate credentials, see below. The legacy unprefixed formats are recorded as an evidence-based exclusion.
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| trufflehog · rules 3.97.4 | cloudflareapitoken/v2 | cfut_ or cfat_ + 40 characters + 8 hex |
No rule maps to this family in flare-redact, gitleaks, openredaction.
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
cloudflare-token-shape-1-barecloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-shape-1-quotedcloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-shape-1-unicode-crlfcloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-terraform-providercloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-user-plaincloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-user-unicode-crlfcloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-verify-bearer-headercloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-wrangler-actioncloudflare · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
cloudflare-token-account-and-zone-ids-public-idcloudflare · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
cloudflare-token-dash-identifier-embeddingcloudflare · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
cloudflare-token-label-prosecloudflare · benign-lookalike | Must not flagT3 · Project policy | Quiet |
cloudflare-token-leading-identifier-embeddingcloudflare · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
cloudflare-token-maskcloudflare · benign-lookalike | Must not flagT3 · Project policy | Quiet |
cloudflare-token-prefix-onlycloudflare · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
cloudflare-token-referencecloudflare · benign-lookalike | Must not flagT3 · Project policy | Quiet |
cloudflare-token-short-bodycloudflare · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
cloudflare-token-token-scope-note-prosecloudflare · prose-mention | Must not flagT3 · Project policy | Quiet |
cloudflare-token-trailing-identifier-embeddingcloudflare · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
cloudflare-token-user-length-plain-twincloudflare · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
cloudflare-token-user-length-unicode-crlf-twincloudflare · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
cloudflare-token-user-plain-twincloudflare · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
cloudflare-token-user-prefix-plain-twincloudflare · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
cloudflare-token-user-prefix-unicode-crlf-twincloudflare · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
cloudflare-token-user-unicode-crlf-twincloudflare · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
Sources
Documentation and code
- developers.cloudflare.com/fundamentals/api/get-started/token-formats/
- developers.cloudflare.com/fundamentals/api/get-started/create-token/
Research log
- redact-secret/redact-secret#367Research issue
- redact-secret/redact-secret#373Research issue
- redact-secret/redact-secret#566Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/566/README.md