redact-secret · Report
API token (cio)
cio + exactly 32 [A-Za-z0-9] (35 in all); the exact body and both identifier boundaries carry the precision of the three-letter prefix.
Research record
4 events in the review history: 3 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
^cio[A-Za-z0-9]{32}$
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-29rust-lang/crates.io crates/crates_io_database/src/utils/token.rs (7b2475e, 2025-12-01): TOKEN_PREFIX = "cio", TOKEN_LENGTH = 32, rand::distr::Alphanumeric; HashedToken::parse rejects any token without the prefix; re-checked 2026-09-29: cio + exactly 32 [A-Za-z0-9], 35 in all; no separator or checksum
- rust-lang/crates.io @ 7b2475e26337856ab054844c9078bb23c11b2f19: crates/crates_io_database/src/utils/token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports cio + exactly 32 [A-Za-z0-9], 35 in all; no separator or checksum · #L10-L91
Provider documented ·
field-prefix· current · observed 2026-09-29prefix: cio
- rust-lang/crates.io @ 7b2475e26337856ab054844c9078bb23c11b2f19: crates/crates_io_database/src/utils/token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports TOKEN_PREFIX · #L10-L91
Provider documented ·
field-body· current · observed 2026-09-29body: exactly 32 [A-Za-z0-9] (rand::distr::Alphanumeric); 35 in all
- rust-lang/crates.io @ 7b2475e26337856ab054844c9078bb23c11b2f19: crates/crates_io_database/src/utils/token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports TOKEN_LENGTH = 32, Alphanumeric · #L10-L91
Unresolved ·
field-boundary· current · observed 2026-09-29boundary: a token glued to an identifier on either side ([A-Za-z0-9_-]) is not claimed; cio + 32 inside a longer alphanumeric run is never truncated (Handoff boundary decision, not a provider statement. It is load-bearing for the three-letter cio prefix.)
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/crates-io.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports short prefix; implementation notes
Provider documented ·
field-transport· current · observed 2026-09-29transport: CARGO_REGISTRY_TOKEN; [registry] token in ~/.cargo/credentials.toml; cargo publish --token; a trusted-publishing token minted in CI and exported for cargo publish
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/crates-io.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports role and blast radius; test axes
Tool corroborated ·
field-peer-lag· current · observed 2026-09-29peer-lag: no crates.io rule in trufflehog 3.97.4 or gitleaks 8.30.1: both lag on every positive. noseyparker (not pinned here) has \bcio[a-zA-Z0-9]{32}\b and no cio_tp_ rule
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports no crates.io rule
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/crates-io.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports tier rationale
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectorsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports no crates.io detector directory at the pinned version
Unresolved ·
listed-references· current · observed 2026-09-29The legacy contract lists 10 references without stating which property each supports.
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/crates-io.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/redact-secret/redact-secret/issues/1031issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/README.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #ruling-questions-for-the-maintainer
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/README.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/redact-secret/redact-secret/issues/1014issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #issuecomment-5900447282
- github.com/redact-secret/redact-secret/issues/1014issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- github.com/redact-secret/redact-secret/issues/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #issuecomment-5852413851
- github.com/redact-secret/redact-secret-benchmarks/issues/528issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- rust-lang/crates.io @ f937ab051067e793ed647c7b587a5419db85949b: crates/crates_io_trustpub/src/access_token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports Listed as a reference by the legacy contract · #L21-L102
- rust-lang/crates.io @ 7b2475e26337856ab054844c9078bb23c11b2f19: crates/crates_io_database/src/utils/token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports Listed as a reference by the legacy contract · #L10-L91
Provider documented ·
dossier-research· current · observed 2026-09-29Legacy dossier research (verdict ready, tier T1) cited 2 sources; the dossier does not attribute sources to individual properties.
- redact-secret/redact-secret @ 378581770a87751d72e27529796c4f790649fd00: docs/audits/evidence/1014/crates-io.mdproject-research-note · last read 2026-09-29 · latest outcome read · supports Final research evidence recorded by the legacy dossier
- rust-lang/crates.io @ 7b2475e26337856ab054844c9078bb23c11b2f19: crates/crates_io_database/src/utils/token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports Cited by the legacy dossier research for this family · #L10-L91
Provider documented ·
taxonomy-sources· current · observed 2026-09-29The legacy taxonomy lists 2 sources for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/crates-io.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy
- rust-lang/crates.io @ 7b2475e26337856ab054844c9078bb23c11b2f19: crates/crates_io_database/src/utils/token.rsprovider-documentation · last read 2026-10-03 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy · #L10-L91
Open questions
No open question is recorded for this revision.
Benchmark dossier notes
- Shape
cio+ exactly 32[A-Za-z0-9](35 in all).- Basis
- T1 under R1 from the server code; unprefixed tokens are no longer accepted.
- Issuance
- not attempted; the grammar is T1 from provider sources, so no key is needed.
- Contract in core
- detector-families.md (row on
main; the Beta.12 detector, redact-secret#1031, merged in redact-secret#1039 and is unreleased).
In this benchmark
- Fixtures
- 37
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
37 fixtures: 16 expect a redaction, 21 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 24 | 0 | 0 | 0 |
| T3Project policy | 13 | 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 | 37 | 15 | 1 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 37 | 8 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 37 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabledNo rule maps to it | 37 | 16 | 0 | 0 |
Looks like it, but isn't
- Collisions
ciois a trigram: the exact body and both identifier boundaries carry the precision; a standalone random 35-byte value starting withciois the accepted false positive.
Scanner rules for this family
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
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
crates-io-token-actions-envcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-bare-prosecrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-bearer-headercrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-cargo-logincrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-cargo-publish-tokencrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-chat-pastecrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-credentials-tomlcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-dotenvcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-exportcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-json-api-keycrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-json-tokencrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-key-shape-barecrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-key-shape-quotedcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-key-shape-unicode-crlfcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-sdk-kwargcrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-x-api-key-headercrates-io · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
crates-io-token-actions-secret-referencecrates-io · templated-reference | Must not flagT3 · Project policy | Quiet |
crates-io-token-angle-brackets-placeholdercrates-io · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
crates-io-token-body-31-twincrates-io · wrong-length | Must not flagT1 · Provider-documented · twin | Quiet |
crates-io-token-body-33-twincrates-io · wrong-length | Must not flagT1 · Provider-documented · twin | Quiet |
crates-io-token-cio-identifiers-public-idcrates-io · public-identifier | Must not flagT3 · Project policy | Quiet |
crates-io-token-cio-inside-long-run-encoded-valuecrates-io · benign-encoded-value | Must not flagT3 · Project policy | Quiet |
crates-io-token-cio-words-prosecrates-io · prose-mention | Must not flagT3 · Project policy | Quiet |
crates-io-token-ellipsis-placeholdercrates-io · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
crates-io-token-env-reference-referencecrates-io · templated-reference | Must not flagT3 · Project policy | Quiet |
crates-io-token-hyphen-in-body-twincrates-io · wrong-alphabet | Must not flagT1 · Provider-documented · twin | Quiet |
crates-io-token-label-prosecrates-io · benign-lookalike | Must not flagT3 · Project policy | Quiet |
crates-io-token-leading-glue-twincrates-io · boundary-violation | Must not flagT3 · Project policy · twin | Quiet |
crates-io-token-leading-underscore-twincrates-io · boundary-violation | Must not flagT3 · Project policy · twin | Quiet |
crates-io-token-maskcrates-io · benign-lookalike | Must not flagT3 · Project policy | Quiet |
crates-io-token-prefix-onlycrates-io · benign-lookalike | Must not flagT1 · Provider-documented | Quiet |
crates-io-token-referencecrates-io · benign-lookalike | Must not flagT3 · Project policy | Quiet |
crates-io-token-short-bodycrates-io · benign-lookalike | Must not flagT1 · Provider-documented | Quiet |
crates-io-token-trailing-underscore-twincrates-io · boundary-violation | Must not flagT3 · Project policy · twin | Quiet |
crates-io-token-truncated-near-misscrates-io · format-near-miss | Must not flagT1 · Provider-documented | Quiet |
crates-io-token-underscore-in-body-twincrates-io · wrong-alphabet | Must not flagT1 · Provider-documented · twin | Quiet |
crates-io-token-uppercase-prefix-twincrates-io · prefix-near-miss | Must not flagT1 · Provider-documented · twin | Quiet |
Sources
Documentation and code
- github.com/rust-lang/crates.io/blob/7b2475e26337856ab054844c9078bb23c11b2f19/crates/crates_io_database/src/utils/token.rs#L10-L91
- github.com/redact-secret/redact-secret/blob/4f220ea000b58fa2e0e431ad88dea4eccb393fb0/docs/audits/evidence/1014/crates-io.md
Research log
- redact-secret/redact-secret#1014Research issue
- redact-secret/redact-secret#1031Research issue
- redact-secret/redact-secret#1039Research issue
- redact-secret/redact-secret-benchmarks#528Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/378581770a87751d72e27529796c4f790649fd00/docs/audits/evidence/1014/crates-io.md