redact-secret · Report
API key (dtn_)
dtn_ + exactly 64 lowercase hex, T1 as of v0.190.0 (2026-06-23) under ruling R9; the same generator mints region proxy, SSH-gateway and runner keys, which are lexically identical.
Research record
3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-09-28 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^dtn_[0-9a-f]{64}$
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-29daytonaio/daytona v0.190.0 (01c502b): generateApiKeyValue() = dtn_ + crypto.randomBytes(32).toString('hex'); the same inline form since 5271af9 (2025-04-28); re-checked 2026-09-28 (no newer provider source): dtn_ + exactly 64 lowercase hex (32 random bytes), 68 in all; no separator or checksum; T1 as of v0.190.0 (2026-06-23) under R9
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports dtn_ + exactly 64 lowercase hex (32 random bytes), 68 in all; no separator or checksum; T1 as of v0.190.0 (2026-06-23) under R9 · #L8-L18
Provider documented ·
field-prefix· current · observed 2026-09-29prefix: dtn_
- www.daytona.io/docs/llms-full.txtprovider-documentation · last read 2026-09-29 · latest outcome read · supports DAYTONA_API_KEY=dtn_*** (prefix only)
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports generateApiKeyValue · #L8-L18
Provider documented ·
field-body· current · observed 2026-09-29body: exactly 64 lowercase hex [0-9a-f] (32 random bytes); 68 in all (Dated: T1 as of v0.190.0 (2026-06-23), not a claim about the live cloud. A post-v0.190.0 format change is an accepted false negative.)
- daytonaio/daytona @ 5271af9f13fd: apps/api/src/api-key/api-key.service.tsprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports the same inline form since 2025-04-28 · #L27
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports randomBytes(32).toString(hex) · #L8-L18
- github.com/redact-secret/redact-secret/issues/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports R9: T1 as of the generator date · #issuecomment-5880547337
Provider documented ·
field-separators· current · observed 2026-09-29separators: none; no checksum
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports separators: none; no checksum · #L8-L18
Unresolved ·
field-boundary· current · observed 2026-09-29boundary: a key glued to an identifier on either side ([A-Za-z0-9_-]) is not claimed; this keeps dtn_secret_ and dtn_artifact_ identifiers unclaimed (Handoff boundary decision, not a provider statement.)
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/daytona.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports implementation notes
Provider documented ·
field-transport· current · observed 2026-09-29transport: the DAYTONA_API_KEY environment variable, sent as Authorization: Bearer; Daytona(DaytonaConfig(api_key=...)) and the Terraform provider variable
- www.daytona.io/docs/llms-full.txtprovider-documentation · last read 2026-09-29 · latest outcome read · supports transport: the DAYTONA_API_KEY environment variable, sent as Authorization: Bearer; Daytona(DaytonaConfig(api_key=...)) and the Terraform provider variable
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/daytona.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports test axes
Unresolved ·
field-self-provisioned-runner-key· current · observed 2026-09-29self-provisioned-runner-key: a self-provisioned runner key is unprefixed 64 hex (openssl rand -hex 32), lexically a SHA-256 (No prefix, not attributable: a bare 64-hex value is an encoded-value control, never a positive.)
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/issuance-research/daytona.mdproject-research-note · last read 2026-09-29 · latest outcome read · supports excluded shapes
Tool corroborated ·
field-peer-lag· current · observed 2026-09-29peer-lag: no rule in trufflehog 3.97.4 or gitleaks 8.30.1
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports no daytona rule
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectorsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports no daytona 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.
- www.daytona.io/docs/llms-full.txtprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- daytonaio/daytona @ 5271af9f13fd: apps/api/src/api-key/api-key.service.tsprovider-sdk-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L27
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L8-L18
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/README.mdproject-research-note · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/daytona.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/970issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/issuance-research/daytona.mdproject-research-note · 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/issues/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #issuecomment-5880547337
- 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
- github.com/redact-secret/redact-secret-benchmarks/issues/464issue-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-28Legacy dossier research (verdict ready, tier T1) cited 3 sources; the dossier does not attribute sources to individual properties.
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family · #L8-L18
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/daytona.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports Final research evidence recorded by the legacy dossier
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/issuance-research/daytona.mdproject-research-note · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family
Provider documented ·
taxonomy-sources· current · observed 2026-09-28The legacy taxonomy lists 2 sources for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- daytonaio/daytona @ 01c502bb1f1ff8f2885d0cd490e043736083dca8: apps/api/src/common/utils/api-key.tsprovider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy · #L8-L18
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/860/daytona.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
- prefix
dtn_, then exactly 64 lowercase hex characters (68 in total); no separator or checksum. - Basis
- prefix and body T1 under ruling R1 and R9: the provider generator returns
dtn_+ 32 random bytes hex-encoded (public up to v0.190.0, 2026-06-23; the same inline form since 2025-04-28). Core development moved to a private codebase in June 2026, so the contract is dated. Every later public source (daytona/clientsOpenAPI and CLI, helm-charts scripts, SDK 0.218.0, docs dump) is prefix-only and none contradicts it. - Issuance
- not attempted; R9 accepts the dated generator as T1 until a newer provider source contradicts it. An issuance check is optional confirmation.
- Contract in core
- detector-families.md (no row until the Beta.12 detector, redact-secret#970, is merged).
In this benchmark
- Fixtures
- 44
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
44 fixtures: 19 expect a redaction, 25 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 19 | 0 | 0 | 0 |
| T2Tool-corroborated | 16 | 0 | 0 | 0 |
| T3Project policy | 9 | 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 | 44 | 17 | 2 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 44 | 6 | 0 | 3 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 44 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabledNo rule maps to it | 44 | 19 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- T1 only as of v0.190.0 (2026-06-23); a post-release format change is an accepted false negative.
Looks like it, but isn't
- Collisions
- without the prefix the body is SHA-256 hex (including Daytona's own stored key hash), so the prefix is load-bearing.
dtn_secret_<random>Secrets placeholders anddtn_artifact_markers are not credentials.
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 |
|---|---|---|
daytona-api-key-actions-envdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-bare-prosedaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-bearer-headerdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-chat-pastedaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-compose-envdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-curl-bearerdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-dotenvdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-exportdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-json-api-keydaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-json-tokendaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-key-shape-baredaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-key-shape-quoteddaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-key-shape-unicode-crlfdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-openapi-example-placeholderdaytona · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
daytona-api-key-python-configdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-sandbox-logdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-sdk-kwargdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-secret-then-hex-near-missdaytona · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
daytona-api-key-terraform-variabledaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-trailing-underscore-twindaytona · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-ts-clientdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-x-api-key-headerdaytona · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
daytona-api-key-actions-secret-referencedaytona · templated-reference | Must not flagT3 · Project policy | Quiet |
daytona-api-key-artifact-marker-near-missdaytona · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
daytona-api-key-bare-sha256-encoded-valuedaytona · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
daytona-api-key-body-63-twindaytona · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-body-65-twindaytona · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-ellipsis-placeholderdaytona · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
daytona-api-key-env-reference-referencedaytona · templated-reference | Must not flagT3 · Project policy | Quiet |
daytona-api-key-hyphen-separator-twindaytona · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-key-guidance-prosedaytona · prose-mention | Must not flagT3 · Project policy | Quiet |
daytona-api-key-label-prosedaytona · benign-lookalike | Must not flagT3 · Project policy | Quiet |
daytona-api-key-leading-glue-twindaytona · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-leading-underscore-twindaytona · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-maskdaytona · benign-lookalike | Must not flagT3 · Project policy | Quiet |
daytona-api-key-masked-placeholderdaytona · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
daytona-api-key-non-hex-letter-twindaytona · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-prefix-onlydaytona · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
daytona-api-key-referencedaytona · benign-lookalike | Must not flagT3 · Project policy | Quiet |
daytona-api-key-secret-placeholder-near-missdaytona · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
daytona-api-key-short-bodydaytona · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
daytona-api-key-trailing-hyphen-twindaytona · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-uppercase-hex-byte-twindaytona · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
daytona-api-key-uppercase-prefix-twindaytona · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
Sources
Documentation and code
- github.com/daytonaio/daytona/blob/01c502bb1f1ff8f2885d0cd490e043736083dca8/apps/api/src/common/utils/api-key.ts#L8-L18
- github.com/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/860/daytona.md
- github.com/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/860/issuance-research/daytona.md
Research log
- redact-secret/redact-secret#860Research issue
- redact-secret/redact-secret#970Research issue
- redact-secret/redact-secret-benchmarks#464Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/860/daytona.md