redact-secret · Report
OAuth access token
OAuth access token, prefixed dckr_oat_.
Research record
2 events in the review history: 1 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
What it looks like
Shape not recorded.
Format facts
Provider documented ·
provider-source· current · observed 2026-09-23AI Governance API bearerAuth credential table (Format column: dckr_pat_*, dckr_oat_*): Docker's own API reference (docs.docker.com AI Governance API spec, bearerAuth credential table) states the Personal Access Token format as dckr_pat_* and the Organization Access Token format as dckr_oat_*, establishing both prefixes (the * is a glob, not a grammar). Body lengths and alphabet are not provider-stated, except that Docker's Hub API spec (createOrgAccessTokenResponse.token) shows an example OAT with a 27-character alphanumeric body, on example strength only. The 27-character dckr_pat_ body, the 32-character dckr_oat_ width and the [A-Za-z0-9_-] alphabet remain tool-corroborated [Legacy contract 'docker-token' is shared by 2 families; this statement is not specific to one of them.]
- docs.docker.com/reference/api/ai-governance/api.yamlprovider-documentation · last read 2026-09-24 · latest outcome read · supports Docker's own API reference (docs.docker.com AI Governance API spec, bearerAuth credential table) states the Personal Access Token format as dckr_pat_* and the Organization Access Token format as dckr_oat_*, establishing both prefixes (the * is a glob, not a grammar). Body lengths and alphabet are not provider-stated, except that Docker's Hub API spec (createOrgAccessTokenResponse.token) shows an example OAT with a 27-character alphanumeric body, on example strength only. The 27-character dckr_pat_ body, the 32-character dckr_oat_ width and the [A-Za-z0-9_-] alphabet remain tool-corroborated
Unresolved ·
tool-corroboration· current · observed 2026-09-23Pinned scanner rules are consistent with the contract grammar (1 artifact: trufflehog 3.97.4). [Legacy contract 'docker-token' is shared by 2 families; this statement is not specific to one of them.]
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/dockerhub/v2/dockerhub.goscanner-rule-source · last read 2026-09-23 · latest outcome read · supports trufflehog 3.97.4: dockerhub/v2/dockerhub
Unresolved ·
listed-references· current · observed 2026-09-23The legacy contract lists 1 reference without stating which property each supports. [Legacy contract 'docker-token' is shared by 2 families; this statement is not specific to one of them.]
- docs.docker.com/reference/api/hub/latest.yamlprovider-documentation · last read 2026-09-24 · latest outcome read · supports Listed as a reference by the legacy contract
Provider documented ·
dossier-research· current · observed 2026-09-24Legacy dossier research (verdict ready, tier T1) cited 3 sources; the dossier does not attribute sources to individual properties.
- docs.docker.com/reference/api/hub/latest.yamlprovider-documentation · last read 2026-09-24 · latest outcome read · supports Cited by the legacy dossier research for this family
- docs.docker.com/reference/api/ai-governance/api.yamlprovider-documentation · last read 2026-09-24 · latest outcome read · supports Cited by the legacy dossier research for this family
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/647/README.mdproject-research-note · last read 2026-09-24 · 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
dckr_oat_. Body: Docker's Hub API example shows 27 alphanumeric characters; TruffleHog 3.97.4 says 32, and the scanners that state 32 trace back to it. Core accepts 27 or 32 since redact-secret#708. - Basis
- T1 for the prefix (same table). The 27-versus-32 question is not settled by any Docker statement; every Docker-authored artefact that shows a width shows 27.
- Issuance
- needs an organization owner on a Team or Business plan; a fresh OAT is the only thing that can settle 27 versus 32 (checklist in the #647 broad-discovery pass).
- Contract in core
- detector-families.md; evidence #647 record.
In this benchmark
- Fixtures
- 22
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
22 fixtures: 8 expect a redaction, 14 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 8 | 0 | 0 | 0 |
| T2Tool-corroborated | 14 | 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 | 22 | 8 | 0 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 22 | 8 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 22 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 22 | 3 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- The dckr_oat_ prefix is T1; body width (27 in Docker's example, 32 per TruffleHog) is undecided by the provider and no fresh OAT has been measured.
Looks like it, but isn't
- Collisions
- see the PAT family; an OAT-width body under the PAT prefix (or the reverse) is a boundary case; core accepts 27 or 32 body bytes for
dckr_oat_since #708.
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| trufflehog · rules 3.97.4 | dockerhub/v2 | dckr_pat_ + 27 or dckr_oat_ + 32 characters |
No rule maps to this family in flare-redact, gitleaks, openredaction.
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
docker-token-oat-27-baredocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-oat-27-quoteddocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-oat-27-unicode-crlfdocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-oat-plaindocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-oat-unicode-crlfdocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-shape-2-baredocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-shape-2-quoteddocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-shape-2-unicode-crlfdocker · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
docker-token-oat-27-long-bare-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-long-quoted-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-long-unicode-crlf-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-prefix-bare-twindocker · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-prefix-quoted-twindocker · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-prefix-unicode-crlf-twindocker · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-short-bare-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-short-quoted-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-27-short-unicode-crlf-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-plain-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-oat-unicode-crlf-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-shape-2-bare-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-shape-2-quoted-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
docker-token-shape-2-unicode-crlf-twindocker · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
Sources
Documentation and code
- docs.docker.com/reference/api/ai-governance/api.yaml
- docs.docker.com/reference/api/hub/latest.yaml
Research log
- redact-secret/redact-secret#647Research issue
- redact-secret/redact-secret#708Research issue
- redact-secret/redact-secret#566Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/647/README.md