redact-secret · Report
Application key (ddapp_-prefixed)
Current application key: literal ddapp_ prefix, then 34 alphanumeric characters (40 total).
Research record
3 events in the review history: 2 observed, 1 reviewed. Latest: observed on 2026-09-23 by automation, project maintainer. Project-maintained review is not independent validation. The family record at this release.
Format
What it looks like
- Descriptive pattern
^ddapp_[A-Za-z0-9]{34}$
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-22Access-token comparison table (mirrored at /account_management/service-access-tokens/): Application keys column: "Identifiable prefix … ddapp_ (new)" establishes ddapp_ as the identifying prefix of current-format application keys. Body length (34 characters) and alphabet are not stated on this page; both are corroborated only by Datadog-owned code and a third-party partner doc, never by a provider-domain page
- docs.datadoghq.com/account_management/personal-access-tokens/provider-documentation · last read 2026-09-23 · latest outcome read · supports Application keys column: "Identifiable prefix … ddapp_ (new)" establishes ddapp_ as the identifying prefix of current-format application keys. Body length (34 characters) and alphabet are not stated on this page; both are corroborated only by Datadog-owned code and a third-party partner doc, never by a provider-domain page
Tool corroborated ·
tool-corroboration· current · observed 2026-09-22Pinned scanner rules are consistent with the contract grammar (7 artifacts: AWS Secrets Manager partner doc; DataDog/cloudformation-template; DataDog/datadog-agent (Agent app-key validator); DataDog/datadog-agent (Agent log/config scrubber); DataDog/terraform-module-datadog-agentless-scanner; gitleaks 8.30.1; trufflehog 3.97.4).
- docs.aws.amazon.com/secretsmanager/latest/userguide/mes-partner-DatadogApplicationKey.htmlscanner-rule-source · last read 2026-09-22 · latest outcome read · supports AWS Secrets Manager partner doc: DatadogApplicationKey rotation guide
- DataDog/cloudformation-template @ master: aws_quickstart/datadog_agentless_saas.yamlscanner-rule-source · last read 2026-09-22 · latest outcome read · supports DataDog/cloudformation-template: aws_quickstart/datadog_agentless_saas.yaml AllowedPattern
- DataDog/datadog-agent @ main: pkg/util/scrubber/default.goprovider-sdk-source · last read 2026-09-22 · latest outcome read · supports DataDog/datadog-agent (Agent log/config scrubber): pkg/util/scrubber/default.go · #L65-L70
- DataDog/datadog-agent @ main: pkg/privateactionrunner/util/keys.goprovider-sdk-source · last read 2026-09-22 · latest outcome read · supports DataDog/datadog-agent (Agent app-key validator): pkg/privateactionrunner/util/keys.go · #L16
- DataDog/terraform-module-datadog-agentless-scanner @ main: azure/arm/agentless-api-call.ps1scanner-rule-source · last read 2026-09-22 · latest outcome read · supports DataDog/terraform-module-datadog-agentless-scanner: azure/arm ValidatePattern · #L12
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports gitleaks 8.30.1: gitleaks.toml
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/datadogtoken/datadogtoken.goscanner-rule-source · last read 2026-09-24 · latest outcome read · supports trufflehog 3.97.4: datadogtoken/datadogtoken
Provider documented ·
field-prefix· current · observed 2026-09-22prefix: ddapp_
- docs.datadoghq.com/account_management/personal-access-tokens/provider-documentation · last read 2026-09-23 · latest outcome read · supports Application keys column: "Identifiable prefix … ddapp_ (new)"
Provider documented ·
field-body-length· current · observed 2026-09-22body-length: 34 characters after ddapp_ (40 total) (Every Datadog-owned validator (Agent keys.go, CloudFormation, ARM) agrees on 34; no provider-domain page states it. No length twin is authored.)
- DataDog/datadog-agent @ main: pkg/privateactionrunner/util/keys.goprovider-sdk-source · last read 2026-09-22 · latest outcome read · supports body-length: 34 characters after ddapp_ (40 total) · #L16
- github.com/redact-secret/redact-secret/issues/645provider-sdk-source · last read 2026-09-22 · latest outcome read · supports body-length: 34 characters after ddapp_ (40 total)
Provider documented ·
field-body-alphabet· current · observed 2026-09-22body-alphabet: [A-Za-z0-9] (The scrubber's wider class is read as lenient-by-design (redact-secret#645); no alphabet twin is authored.)
- DataDog/datadog-agent @ main: pkg/util/scrubber/default.goprovider-sdk-source · last read 2026-09-22 · latest outcome read · supports the Agent scrubber alone also allows "_" · #L65-L70
Unresolved ·
field-legacy-40-hex-generation· current · observed 2026-09-22legacy-40-hex-generation: bare 40 lowercase hex, keyword-gated (The separate datadog-application-key-legacy contract; not this family.)
- github.com/redact-secret/redact-secret/issues/645provider-sdk-source · last read 2026-09-22 · latest outcome read · supports legacy-40-hex-generation: bare 40 lowercase hex, keyword-gated
Provider documented ·
dossier-research· current · observed 2026-09-23Legacy dossier research (verdict ready, tier T1) cited 5 sources; the dossier does not attribute sources to individual properties.
- docs.datadoghq.com/account_management/personal-access-tokens/provider-documentation · last read 2026-09-23 · latest outcome read · supports Cited by the legacy dossier research for this family
- docs.datadoghq.com/account_management/service-access-tokens/provider-documentation · last read 2026-09-23 · latest outcome read · supports Cited by the legacy dossier research for this family
- DataDog/cloudformation-template @ db39dcd1de0019f0bc5b03420a66750c69ef3038: aws_quickstart/datadog_agentless_saas.yamlother · last read 2026-09-24 · latest outcome read · supports Cited by the legacy dossier research for this family
- DataDog/datadog-agent @ f0012103d472748fae9f09011b4ebe124c3da98c: pkg/privateactionrunner/util/keys.goother · 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/645/README.mdproject-research-note · last read 2026-09-24 · latest outcome read · supports Final research evidence recorded by the legacy dossier
Provider documented ·
taxonomy-sources· current · observed 2026-09-23The legacy taxonomy lists 1 source for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- docs.datadoghq.com/account_management/personal-access-tokens/provider-documentation · last read 2026-09-23 · 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
- literal
ddapp_then 34 alphanumeric characters, 40 in total. The prefix table on the personal and service access token pages listsddapp_ (new)for application keys. Datadog's own Agent scrubber alone admits_in the body. - Basis
- T1 for the prefix (two Datadog docs pages, re-fetched 2026-09-23). Body length and alphabet: Datadog Agent app-key validator, CloudFormation and ARM templates, and an AWS Secrets Manager partner page, none of them a documentation page. The documented CRC32 checksum applies to
ddpat_only. - Issuance
- not attempted; a fresh key would settle body length and alphabet.
- Contract in core
- detector-families.md; evidence #645 record. The split from the legacy shape was made in redact-secret#671.
In this benchmark
- Fixtures
- 29
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
29 fixtures: 12 expect a redaction, 17 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T1Provider-documented | 12 | 0 | 0 | 0 |
| T2Tool-corroborated | 12 | 0 | 0 | 0 |
| T3Project policy | 5 | 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 | 29 | 12 | 0 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 29 | 12 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 29 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabledNo rule maps to it | 29 | 12 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- The ddapp_ prefix is T1; the 34-character alphanumeric body is corroborated by Datadog-owned code and AWS only, not by a provider page.
Looks like it, but isn't
- Collisions
ddpat_andddsat_tokens can be sent where an application key is expected, so a value under an app-key name may not beddapp_.
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 |
|---|---|---|
datadog-application-key-api-client-pythondatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-datadog-ci-jsondatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-dogshell-flagdatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-env-app-keydatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-gitlab-ci-variablesdatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-helm-valuesdatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-http-headerdatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-prefixed-env-marker-baredatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-prefixed-env-marker-quoteddatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-prefixed-env-marker-unicode-crlfdatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-shell-export-app-keydatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-terraform-providerdatadog · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
datadog-application-key-api-client-python-prefix-twindatadog · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-app-key-template-placeholderdatadog · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
datadog-application-key-audit-fingerprint-encoded-valuedatadog · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
datadog-application-key-http-header-separator-twindatadog · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-key-id-listing-public-iddatadog · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
datadog-application-key-label-prosedatadog · benign-lookalike | Must not flagT3 · Project policy | Quiet |
datadog-application-key-maskdatadog · benign-lookalike | Must not flagT3 · Project policy | Quiet |
datadog-application-key-ordinary-prosedatadog · benign-lookalike | Must not flagT3 · Project policy | Quiet |
datadog-application-key-prefixed-env-marker-bare-twindatadog · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-prefixed-env-marker-boundary-bare-twindatadog · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-prefixed-env-marker-boundary-quoted-twindatadog · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-prefixed-env-marker-boundary-unicode-crlf-twindatadog · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-prefixed-env-marker-quoted-twindatadog · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-prefixed-env-marker-unicode-crlf-twindatadog · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
datadog-application-key-prefixed-short-keydatadog · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
datadog-application-key-referencedatadog · benign-lookalike | Must not flagT3 · Project policy | Quiet |
datadog-application-key-terraform-provider-prefix-case-twindatadog · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
Sources
Documentation and code
- docs.datadoghq.com/account_management/personal-access-tokens/
- docs.datadoghq.com/account_management/service-access-tokens/
- github.com/DataDog/datadog-agent/blob/f0012103d472748fae9f09011b4ebe124c3da98c/pkg/privateactionrunner/util/keys.go
- github.com/DataDog/cloudformation-template/blob/db39dcd1de0019f0bc5b03420a66750c69ef3038/aws_quickstart/datadog_agentless_saas.yaml
Research log
- redact-secret/redact-secret#645Research issue
- redact-secret/redact-secret#671Research issue
- redact-secret/redact-secret-benchmarks#162Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/645/README.md