Skip to content
Benchmarks

redact-secret · Report

Cloud API secret (cflt-prefixed)

API secret created after 2025-07-30: literal cflt prefix, then 54 base64-alphabet body bytes and a 6-byte checksum (standard Base64 of the little-endian CRC32 of those 54 bytes), 64 in total.

  • Confluent Cloud
  • Detectors: confluent-cloud-api-secret
  • Run 2026-10-07
  • Mode published · redact-secret 0.1.0-beta.14
  • Dossier verdictReady
  • Dossier evidence levelT1 · Provider-documented
  • Dossier researched2026-09-24
redact-secret#309 (product PR #667) landed on the product main after 0.1.0-beta.6 and checks the prefix and length only. #209 (research #234): the provider publishes the checksum algorithm, so the contract validates it. The API key ID ("not considered secret information") is never a positive.

Research record

From credential-evidence snapshot-2026.10.06.4 · records at 77ce761 · schema 1.8.0. It describes the research on the format, not what any scanner or the product does, and not a support status.
  • Review stateDraft, not reviewed
  • Format revision1 · current
  • ResearchResearched
  • Researched2026-09-24

3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-09-24 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.

Format

Provider format research from credential-evidence snapshot-2026.10.06.4 · records at 77ce761 · schema 1.8.0.

What it looks like

Descriptive pattern
^cflt[A-Za-z0-9+/]{60}$

Parts are shown as recorded. Evidence classes belong to the facts below; no class is assigned to a part.

Format facts

Open questions

No open question is recorded for this revision.

Benchmark dossier notes

From the provider dossier, as written. The evidence level above says how well the format is backed; a fact the dossier does not record is not shown.
Shape
literal cflt, then 60 characters from A-Z a-z 0-9 + / (64 in all). The final 6 characters are a Base64-encoded CRC-32 checksum of the 54 body characters before them. The provider's own detection snippet fixes the recipe: CRC-32 over the 54 body characters excluding the prefix, little-endian bytes, standard Base64, first 6 characters. The #234 pass recomputed the documented example this way and found big-endian or prefix-included variants fail it. Six Base64 characters carry 36 bits and the CRC is 32, so the last character can take only four values (derived by the #234 pass, unchecked against an issued secret).
Basis
T1: the overview page (prefix, length, alphabet, checksum and snippet). The boundary day is worded three ways ("after", "on or after", "starting") across the page, the release notes and the identity FAQ, and older secrets are said to "may not" carry the prefix on one page and "do not" on another. Kingfisher has a checksum-validating rule; gitleaks and trufflehog match 64 characters with no cflt or checksum handling.
Issuance
Cloud API keys created from the Console or CLI. Not attempted.
Contract in core
detector-families.md (evidence-backed table: T1 on prefix, body and checksum, #738).

In this benchmark

Fixture rows on the current run. Counts are for redact-secret in published · redact-secret 0.1.0-beta.14 mode.
Fixtures
31
Left readable
0
Redacted too much
0
False alarms
0

31 fixtures: 13 expect a redaction, 18 must stay quiet. See every row

redact-secret fixture counts by evidence level
Evidence levelFixturesLeft readableToo muchFalse alarms
T1Provider-documented13000
T2Tool-corroborated14000
T3Project policy4000

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.

Counts per scanner on this family's fixtures
ScannerFixturesLeft readableToo muchFalse alarms
flare-redactRuntime library · 1.6.1 · Published npm package · secrets-only (pii, generic_assignment disabled) · JavaScript engineNo rule maps to it311300
gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it31412
redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped31000
trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabledNo rule maps to it311301

Benchmark dossier questions

Things the sources do not settle. They are listed so nobody reads them as settled.
Open caveat
The checksum recipe is recomputed from the provider's own snippet, not yet checked against a freshly issued secret; every scope is assumed to issue the same shape.

Looks like it, but isn't

Values the dossier records as resembling this credential without being one.
Collisions
the 16-character key id (public), resource ids (lkc-, lsrc-, env-, sa-), the SCIM token cflt-scim_<JWT>, and the NASDAQ ticker in prose. The legacy 64-character shape overlaps this family's alphabet and length.

Scanner rules for this family

Mapped by hand (reviewed 2026-09-30) from each scanner's pinned rule file, never from what a scanner found on the fixtures.

No peer rule maps to this family

None of the reviewed peer scanners has a rule that can match a credential of this family.

None mapped

31 of 31 rows

Fixtures in this family

31 rows, redact-secret's outcome on each. Rows that need a look come first (0), then the rest in corpus order. Choose "Every scanner" to see each scanner's outcome for the same rows.
Fixtures in Cloud API secret (cflt-prefixed)
FixtureKind and evidenceredact-secret
confluent-cloud-api-secret-cli-api-key-create-jsonconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-confluent-api-key-storeconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-curl-basic-authconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-env-cloud-secretconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-env-cloud-secret-checksum-twinconfluent · invalid-checksumMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-github-actions-connector-deployconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-k8s-secret-stringdataconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-kafka-client-propertiesconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-prefixed-shape-bareconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-prefixed-shape-quotedconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-prefixed-shape-unicode-crlfconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-public-idconfluent · benign-lookalikeMust not flagT2 · Tool-corroboratedQuiet
confluent-cloud-api-secret-python-producer-configconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-secrets-manager-jsonconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-shell-export-secretconfluent · documented-format-literalMust redactT1 · Provider-documentedRedacted
confluent-cloud-api-secret-cli-api-key-create-json-checksum-prefix-included-twinconfluent · invalid-checksumMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-kafka-client-properties-checksum-byte-order-twinconfluent · invalid-checksumMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-label-proseconfluent · benign-lookalikeMust not flagT3 · Project policyQuiet
confluent-cloud-api-secret-maskconfluent · benign-lookalikeMust not flagT3 · Project policyQuiet
confluent-cloud-api-secret-prefix-onlyconfluent · benign-lookalikeMust not flagT2 · Tool-corroboratedQuiet
confluent-cloud-api-secret-prefixed-shape-bare-twinconfluent · wrong-lengthMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-prefixed-shape-prefix-bare-twinconfluent · prefix-near-missMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-prefixed-shape-prefix-quoted-twinconfluent · prefix-near-missMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-prefixed-shape-prefix-unicode-crlf-twinconfluent · prefix-near-missMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-prefixed-shape-quoted-twinconfluent · wrong-lengthMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-prefixed-shape-unicode-crlf-twinconfluent · wrong-lengthMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-referenceconfluent · benign-lookalikeMust not flagT3 · Project policyQuiet
confluent-cloud-api-secret-sasl-username-only-public-idconfluent · public-identifierMust not flagT2 · Tool-corroboratedQuiet
confluent-cloud-api-secret-secrets-manager-json-alphabet-twinconfluent · wrong-alphabetMust not flagT2 · Tool-corroborated · twinQuiet
confluent-cloud-api-secret-short-bodyconfluent · benign-lookalikeMust not flagT2 · Tool-corroboratedQuiet
confluent-cloud-api-secret-ticker-note-proseconfluent · prose-mentionMust not flagT3 · Project policyQuiet

Sources

Researched 2026-09-24.

Documentation and code

Other Confluent Cloud families