redact-secret · Report
OAuth client secret
GOCSPX- + exactly 28 [A-Za-z0-9_-]: the client secret of a Google OAuth client.
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
^GOCSPX-[A-Za-z0-9_-]{28}$
Parts are shown as recorded. Evidence classes belong to the facts below; no class is assigned to a part.
Format facts
Tool corroborated ·
tool-corroboration· current · observed 2026-09-29Pinned scanner rules are consistent with the contract grammar (3 artifacts: CredSweeper; google/osv-scalibr (Google-authored, R2 not applied); noseyparker).
- google/osv-scalibr @ 5ab8022c6d67ff99d91d9750f2456ed9549fe8cb: veles/secrets/gcpoauth2client/detector.goscanner-rule-source · last read 2026-09-29 · latest outcome read · supports google/osv-scalibr (Google-authored, R2 not applied): gcpoauth2client: \bGOCSPX-[a-zA-Z0-9_-]{28} (exactly 28 since 2025-12-03) · #L51-L58
- praetorian-inc/noseyparker @ 2e6e7f36ce36619852532bbe698d8cb7a26d2da7: crates/noseyparker/data/default/builtin/rules/google.ymlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports noseyparker: \b(GOCSPX-[a-zA-Z0-9_-]{28})(?:[^a-zA-Z0-9_-]|$) · #L17-L29
- Samsung/CredSweeper @ f21ab2f2553eea288a72273b9658cd297ab1d11f: credsweeper/rules/config.yamlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports CredSweeper: GOCSPX-[0-9A-Za-z_-]{28}(?![0-9A-Za-z_-]) · #L463-L475
Tool corroborated ·
field-prefix· current · observed 2026-09-29prefix: GOCSPX- (T2; T1 only if R2 is applied to the Google-authored rule.)
- google/osv-scalibr @ 5ab8022c6d67ff99d91d9750f2456ed9549fe8cb: veles/secrets/gcpoauth2client/detector.goscanner-rule-source · last read 2026-09-29 · latest outcome read · supports prefix: GOCSPX- · #L51-L58
- googleworkspace/cli @ a3768d0e82ad83cca2da97724e46bea4ff0e6dbd: crates/google-workspace-cli/src/oauth_config.rsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports GOCSPX-... placeholder (R4, prefix only) · #L26
- praetorian-inc/noseyparker @ 2e6e7f36ce36619852532bbe698d8cb7a26d2da7: crates/noseyparker/data/default/builtin/rules/google.ymlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports prefix: GOCSPX- · #L17-L29
- Samsung/CredSweeper @ f21ab2f2553eea288a72273b9658cd297ab1d11f: credsweeper/rules/config.yamlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports prefix: GOCSPX- · #L463-L475
Tool corroborated ·
field-body· current · observed 2026-09-29body: exactly 28 [A-Za-z0-9_-] (35 in all)
- google/osv-scalibr @ 5ab8022c6d67ff99d91d9750f2456ed9549fe8cb: veles/secrets/gcpoauth2client/detector.goscanner-rule-source · last read 2026-09-29 · latest outcome read · supports narrowed from {10,40} to exactly 28 on 2025-12-03 · #L51-L58
- praetorian-inc/noseyparker @ 2e6e7f36ce36619852532bbe698d8cb7a26d2da7: crates/noseyparker/data/default/builtin/rules/google.ymlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports body: exactly 28 [A-Za-z0-9_-] (35 in all) · #L17-L29
- Samsung/CredSweeper @ f21ab2f2553eea288a72273b9658cd297ab1d11f: credsweeper/rules/config.yamlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports body: exactly 28 [A-Za-z0-9_-] (35 in all) · #L463-L475
Tool corroborated ·
field-boundary· current · observed 2026-09-29boundary: not [A-Za-z0-9_-] on either side
- praetorian-inc/noseyparker @ 2e6e7f36ce36619852532bbe698d8cb7a26d2da7: crates/noseyparker/data/default/builtin/rules/google.ymlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports boundary: not [A-Za-z0-9_-] on either side · #L17-L29
- Samsung/CredSweeper @ f21ab2f2553eea288a72273b9658cd297ab1d11f: credsweeper/rules/config.yamlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports boundary: not [A-Za-z0-9_-] on either side · #L463-L475
Provider documented ·
field-public-client-id· current · observed 2026-09-29public-client-id: the OAuth client id (<digits>-<id>.apps.googleusercontent.com) is public, never this family
- developers.google.com/identity/protocols/oauth2provider-documentation · last read 2026-09-29 · latest outcome read · supports public-client-id: the OAuth client id (<digits>-<id>.apps.googleusercontent.com) is public, never this family
- redact-secret/redact-secret @ 4fb78827f1ddf5b3106f25130ca510a836ada186: docs/audits/evidence/1012/google-oauth2-credential.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports excluded shapes
Unresolved ·
field-sibling-tokens· current · observed 2026-09-29sibling-tokens: ya29. access tokens and 1// refresh tokens are separate credentials whose grammar is BLOCKED (Not claimed; neither a positive nor a control.)
- redact-secret/redact-secret @ 4fb78827f1ddf5b3106f25130ca510a836ada186: docs/audits/evidence/1012/google-oauth2-credential.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports ya29. and 1// exact missing evidence
Tool corroborated ·
field-peer-lag· current · observed 2026-09-29peer-lag: no GOCSPX- rule in gitleaks 8.30.1; trufflehog 3.97.4 googleoauth2 reads access tokens, not client secrets
- gitleaks/gitleaks @ v8.30.1: config/gitleaks.tomlscanner-rule-source · last read 2026-10-04 · latest outcome read · supports no GOCSPX rule
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectorsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports googleoauth2 access-token detector
Unresolved ·
listed-references· current · observed 2026-09-29The legacy contract lists 12 references without stating which property each supports.
- developers.google.com/identity/protocols/oauth2provider-documentation · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- google/osv-scalibr @ 5ab8022c6d67ff99d91d9750f2456ed9549fe8cb: veles/secrets/gcpoauth2client/detector.goscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L51-L58
- googleworkspace/cli @ a3768d0e82ad83cca2da97724e46bea4ff0e6dbd: crates/google-workspace-cli/src/oauth_config.rsscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L26
- praetorian-inc/noseyparker @ 2e6e7f36ce36619852532bbe698d8cb7a26d2da7: crates/noseyparker/data/default/builtin/rules/google.ymlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L17-L29
- redact-secret/redact-secret @ 4fb78827f1ddf5b3106f25130ca510a836ada186: docs/audits/evidence/1012/google-oauth2-credential.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/860issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #issuecomment-5871306275
- github.com/redact-secret/redact-secret/issues/1012issue-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/528issue-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/1029issue-or-discussion · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- redact-secret/redact-secret @ 4fb78827f1ddf5b3106f25130ca510a836ada186: docs/audits/evidence/1012/README.mdproject-research-note · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
- Samsung/CredSweeper @ f21ab2f2553eea288a72273b9658cd297ab1d11f: credsweeper/rules/config.yamlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract · #L463-L475
- support.google.com/cloud/answer/15549257other · last read 2026-09-29 · latest outcome read · supports Listed as a reference by the legacy contract
Tool corroborated ·
dossier-research· current · observed 2026-09-29Legacy dossier research (verdict ready, tier T2) cited 4 sources; the dossier does not attribute sources to individual properties.
- google/osv-scalibr @ 5ab8022c6d67ff99d91d9750f2456ed9549fe8cb: veles/secrets/gcpoauth2client/detector.goscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family · #L51-L58
- praetorian-inc/noseyparker @ 2e6e7f36ce36619852532bbe698d8cb7a26d2da7: crates/noseyparker/data/default/builtin/rules/google.ymlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family · #L17-L29
- redact-secret/redact-secret @ 4fb78827f1ddf5b3106f25130ca510a836ada186: docs/audits/evidence/1012/google-oauth2-credential.mdprovider-documentation · last read 2026-09-29 · latest outcome read · supports Final research evidence recorded by the legacy dossier
- Samsung/CredSweeper @ f21ab2f2553eea288a72273b9658cd297ab1d11f: credsweeper/rules/config.yamlscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family · #L463-L475
Unresolved ·
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.
- google/osv-scalibr @ 5ab8022c6d67ff99d91d9750f2456ed9549fe8cb: veles/secrets/gcpoauth2client/detector.goscanner-rule-source · last read 2026-09-29 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy · #L51-L58
- redact-secret/redact-secret @ 4fb78827f1ddf5b3106f25130ca510a836ada186: docs/audits/evidence/1012/google-oauth2-credential.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
GOCSPX-followed by exactly 28 characters from letters, digits, underscore and hyphen, 35 in all.- Basis
- T2. Google's own osv-scalibr rule (narrowed to exactly 28 by a Google engineer on 2025-12-03), noseyparker and CredSweeper agree: three dated references, three owners, two classes. Google documents no format. The #1012 research record (google-oauth2-credential.md) is READY-T2, and T1 only if the maintainer applies R2 to the Google-authored rule.
- Contract in core
- detector-families.md.
In this benchmark
- Fixtures
- 40
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
40 fixtures: 16 expect a redaction, 24 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T2Tool-corroborated | 30 | 0 | 0 | 0 |
| T3Project policy | 10 | 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 | 40 | 15 | 1 | 0 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 40 | 7 | 0 | 0 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 40 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 40 | 16 | 0 | 0 |
Looks like it, but isn't
- Collisions
- the OAuth client ID is public. Unprefixed pre-
GOCSPX-secrets are caught only by aclient_secretname.
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| trufflehog · rules 3.97.4 | gcpapplicationdefaultcredentials | application default credentials JSON with a client_secret |
No rule maps to this family in flare-redact, gitleaks, openredaction.
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
google-oauth-client-secret-bare-prosegoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-bearer-headergoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-chat-pastegoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-dotenvgoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-exportgoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-flask-configgoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-json-api-keygoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-json-client-filegoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-json-tokengoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-json-web-client-filegoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-key-shape-baregoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-key-shape-quotedgoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-key-shape-unicode-crlfgoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-sdk-kwarggoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-token-curlgoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-x-api-key-headergoogle · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
google-oauth-client-secret-actions-secret-referencegoogle · templated-reference | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-angle-placeholdergoogle · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-body-27-twingoogle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-body-29-twingoogle · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-client-id-public-idgoogle · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
google-oauth-client-secret-consent-url-public-idgoogle · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
google-oauth-client-secret-console-guidance-prosegoogle · prose-mention | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-dot-in-body-twingoogle · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-ellipsis-placeholdergoogle · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-env-reference-referencegoogle · templated-reference | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-environ-lookup-referencegoogle · templated-reference | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-label-prosegoogle · benign-lookalike | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-leading-glue-twingoogle · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-lowercase-prefix-twingoogle · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-maskgoogle · benign-lookalike | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-prefix-onlygoogle · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
google-oauth-client-secret-prefix-without-hyphen-twingoogle · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-project-id-public-idgoogle · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
google-oauth-client-secret-referencegoogle · benign-lookalike | Must not flagT3 · Project policy | Quiet |
google-oauth-client-secret-short-bodygoogle · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
google-oauth-client-secret-truncated-marker-twingoogle · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-truncated-near-missgoogle · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
google-oauth-client-secret-underscore-separator-twingoogle · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
google-oauth-client-secret-x-run-placeholdergoogle · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
Sources
Documentation and code
- github.com/google/osv-scalibr/blob/5ab8022c6d67ff99d91d9750f2456ed9549fe8cb/veles/secrets/gcpoauth2client/detector.go#L51-L58
- github.com/redact-secret/redact-secret/blob/4fb78827f1ddf5b3106f25130ca510a836ada186/docs/audits/evidence/1012/google-oauth2-credential.md
- github.com/praetorian-inc/noseyparker/blob/2e6e7f36ce36619852532bbe698d8cb7a26d2da7/crates/noseyparker/data/default/builtin/rules/google.yml#L17-L29
- github.com/Samsung/CredSweeper/blob/f21ab2f2553eea288a72273b9658cd297ab1d11f/credsweeper/rules/config.yaml#L463-L475
Research log
- redact-secret/redact-secret#1012Research issue
- redact-secret/redact-secret#1029Research issue
- redact-secret/redact-secret-benchmarks#528Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/4fb78827f1ddf5b3106f25130ca510a836ada186/docs/audits/evidence/1012/google-oauth2-credential.md