redact-secret · Report
Secrets Manager access token (0. + UUID layout)
0. + UUID + . + exactly 30 [A-Za-z0-9] + : + 22 standard Base64 + == (94 in all); unpadded keys, other versions and Password Manager user./organization. API keys are not claimed.
Research record
3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-09-29 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^0\.[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\.[A-Za-z0-9]{30}:[A-Za-z0-9+/]{22}==$
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-29bitwarden/sdk-internal access_token.rs (824c1cf, last changed 2025-09-30): split once on :, the first part on . into exactly three parts, version "0", a UUID, and a Base64 key that decodes to 16 bytes; bitwarden/server CreateAccessTokenCommand (bb3a9da): SecureRandomString(30) with upper, lower and numeric; re-checked 2026-09-29: 0. + UUID + . + exactly 30 [A-Za-z0-9] + : + 22 standard Base64 + == (94 in all); no checksum
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports 0. + UUID + . + exactly 30 [A-Za-z0-9] + : + 22 standard Base64 + == (94 in all); no checksum · #L47-L85
Provider documented ·
field-version· current · observed 2026-09-29version: the literal 0 followed by . (A future version is a grammar change to re-research, never a widening.)
- bitwarden.com/help/access-tokens/provider-documentation · last read 2026-09-29 · latest outcome read · supports docs example
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports version must be "0" · #L47-L85
Provider documented ·
field-token-id· current · observed 2026-09-29token-id: a UUID, 8-4-4-4-12 hex with -; lowercase as issued, uppercase accepted by the parser
- bitwarden.com/help/access-tokens/provider-documentation · last read 2026-09-29 · latest outcome read · supports docs example
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Uuid parse · #L47-L85
Provider documented ·
field-client-secret· current · observed 2026-09-29client-secret: exactly 30 [A-Za-z0-9]
- bitwarden/server @ de7104b7134f51de34cb081c192ecb172020d508: src/Core/Utilities/CoreHelpers.csprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports upper, lower, numeric; special = false · #L205-L209
- bitwarden/server @ bb3a9daf9883353fa942a17ba5d8c2b1f642960b: bitwarden_license/src/Commercial.Core/SecretsManager/Commands/AccessTokens/CreateAccessTokenCommand.csprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports _clientSecretMaxLength = 30; SecureRandomString(30) · #L14-L29
Provider documented ·
field-encryption-key· current · observed 2026-09-29encryption-key: a 16-byte key as standard Base64: 22 [A-Za-z0-9+/] then == (Canonical Base64 of 16 bytes ends its 22nd character in one of A, Q, g, w; the contract keeps the handoff class, and positives are canonical encodings.)
- bitwarden.com/help/access-tokens/provider-documentation · last read 2026-09-29 · latest outcome read · supports 24 characters ending ==
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports decodes to 16 bytes; the test comment says the key is generated padded · #L47-L85
Provider documented ·
field-unpadded-key· current · observed 2026-09-29unpadded-key: the parser also accepts the key without ==, but the generator always pads (Outside the issued grammar: an unpadded twin is a one-property twin, and an unpadded copy is an accepted false negative.)
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports padding ignored on decode · #L47-L85
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/bitwarden.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports excluded shapes
Unresolved ·
field-boundary· current · observed 2026-09-29boundary: the byte before 0 is not [A-Za-z0-9._-] (so 10.<uuid> and v0.<uuid> are not claimed) and the byte after == is not [A-Za-z0-9+/=] (Handoff boundary decision, not a provider statement.)
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/bitwarden.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports implementation notes
Provider documented ·
field-transport· current · observed 2026-09-29transport: the BWS_ACCESS_TOKEN environment variable, the bws CLI --access-token flag, SDK clients and CI integrations
- bitwarden.com/help/access-tokens/provider-documentation · last read 2026-09-29 · latest outcome read · supports transport: the BWS_ACCESS_TOKEN environment variable, the bws CLI --access-token flag, SDK clients and CI integrations
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/bitwarden.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports test axes
Provider documented ·
field-other-credentials· current · observed 2026-09-29other-credentials: Password Manager personal and organization API keys (user./organization. + UUID client id, 30-character client secret) have no distinctive token grammar (Not this family; a user. client id alone is a benign control.)
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/bitwarden.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports excluded shapes
Tool corroborated ·
field-peer-lag· current · observed 2026-09-29peer-lag: no Bitwarden rule in trufflehog 3.97.4 or gitleaks 8.30.1: both lag on every positive
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports no bitwarden rule
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectorsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports no bitwarden detector directory at the pinned version
Unresolved ·
listed-references· current · observed 2026-09-29The legacy contract lists 11 references without stating which property each supports.
- bitwarden.com/help/access-tokens/provider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L47-L85
- bitwarden/server @ de7104b7134f51de34cb081c192ecb172020d508: src/Core/Utilities/CoreHelpers.csprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L205-L209
- bitwarden/server @ bb3a9daf9883353fa942a17ba5d8c2b1f642960b: bitwarden_license/src/Commercial.Core/SecretsManager/Commands/AccessTokens/CreateAccessTokenCommand.csprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L14-L29
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/bitwarden.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/1019issue-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
- 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
Provider documented ·
dossier-research· current · observed 2026-09-29Legacy dossier research (verdict ready, tier T1) cited 3 sources; the dossier does not attribute sources to individual properties.
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family · #L47-L85
- bitwarden/server @ bb3a9daf9883353fa942a17ba5d8c2b1f642960b: bitwarden_license/src/Commercial.Core/SecretsManager/Commands/AccessTokens/CreateAccessTokenCommand.csprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family · #L14-L29
- redact-secret/redact-secret @ 378581770a87751d72e27529796c4f790649fd00: docs/audits/evidence/1014/bitwarden.mdproject-research-note · last read 2026-09-29 · latest outcome read · supports Final research evidence recorded by the legacy dossier
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.
- bitwarden/sdk-internal @ 824c1cf06636daa2778d53435cdbf354ab58eff2: crates/bitwarden-core/src/auth/access_token.rsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy · #L47-L85
- redact-secret/redact-secret @ 4f220ea000b58fa2e0e431ad88dea4eccb393fb0: docs/audits/evidence/1014/bitwarden.mdprovider-documentation · last read 2026-09-29 · 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
0.+ a UUID +.+ exactly 30[A-Za-z0-9]+:+ 22 standard Base64 +==(94 in all).- Basis
- every part T1 under R1: the provider SDK parser (version, UUID, a key that decodes to 16 bytes), the server generator (30 alphanumerics) and the docs example (segment lengths).
- 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#1019, merged in redact-secret#1039 and is unreleased).
In this benchmark
- Fixtures
- 46
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
46 fixtures: 16 expect a redaction, 30 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 16 | 0 | 0 | 0 |
| T2Tool-corroborated | 22 | 0 | 0 | 0 |
| T3Project policy | 8 | 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 | 46 | 16 | 0 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 46 | 16 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 46 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabledNo rule maps to it | 46 | 16 | 0 | 1 |
Looks like it, but isn't
- Collisions
- none known; a semantic version followed by a UUID and Password Manager
user.<uuid>client ids are benign siblings. An unpadded key is parser-accepted but never issued, so it is outside the family.
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 |
|---|---|---|
bitwarden-secrets-manager-access-token-actions-with-access-tokenbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-bare-prosebitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-bearer-headerbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-bws-cli-flagbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-chat-pastebitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-docker-env-flagbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-dotenvbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-exportbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-json-api-keybitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-json-tokenbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-key-shape-barebitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-key-shape-quotedbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-key-shape-unicode-crlfbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-mcp-envbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-non-hex-in-uuid-twinbitwarden · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-sdk-kwargbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-x-api-key-headerbitwarden · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
bitwarden-secrets-manager-access-token-actions-secret-referencebitwarden · templated-reference | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-angle-brackets-placeholderbitwarden · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-bare-base64-key-encoded-valuebitwarden · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-colon-as-dot-twinbitwarden · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-env-reference-referencebitwarden · templated-reference | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-hyphen-in-secret-twinbitwarden · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-key-21-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-key-23-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-label-prosebitwarden · benign-lookalike | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-leading-digit-glue-twinbitwarden · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-leading-v-glue-twinbitwarden · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-maskbitwarden · benign-lookalike | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-password-manager-client-id-public-idbitwarden · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-prefix-onlybitwarden · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-referencebitwarden · benign-lookalike | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-secret-29-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-secret-31-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-secret-without-key-near-missbitwarden · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-semver-then-uuid-public-idbitwarden · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-short-bodybitwarden · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-single-padding-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-token-guidance-prosebitwarden · prose-mention | Must not flagT3 · Project policy | Quiet |
bitwarden-secrets-manager-access-token-trailing-glue-twinbitwarden · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-unpadded-key-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-uuid-json-filename-public-idbitwarden · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-uuid-missing-hyphen-twinbitwarden · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-version-1-twinbitwarden · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
bitwarden-secrets-manager-access-token-version-dotted-uuid-near-missbitwarden · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
bitwarden-secrets-manager-access-token-x-run-placeholderbitwarden · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
Sources
Documentation and code
- github.com/bitwarden/sdk-internal/blob/824c1cf06636daa2778d53435cdbf354ab58eff2/crates/bitwarden-core/src/auth/access_token.rs#L47-L85
- github.com/redact-secret/redact-secret/blob/4f220ea000b58fa2e0e431ad88dea4eccb393fb0/docs/audits/evidence/1014/bitwarden.md
- github.com/bitwarden/server/blob/bb3a9daf9883353fa942a17ba5d8c2b1f642960b/bitwarden_license/src/Commercial.Core/SecretsManager/Commands/AccessTokens/CreateAccessTokenCommand.cs#L14-L29
Research log
- redact-secret/redact-secret#1014Research issue
- redact-secret/redact-secret#1019Research 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/bitwarden.md