redact-secret · Report
API key
gsk_ prefixed API key; the 52-character alphanumeric body is tool-corroborated, not provider-stated.
Research record
3 events in the review history: 2 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
- Descriptive pattern
^gsk_[A-Za-z0-9]{52}$
Parts are shown as recorded. Evidence classes belong to the facts below; no class is assigned to a part.
Format facts
Unresolved ·
tool-corroboration· current · observed 2026-09-24Pinned scanner rules are consistent with the contract grammar (1 artifact: trufflehog 3.97.4).
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/groq/groq.goscanner-rule-source · last read 2026-09-24 · latest outcome read · supports trufflehog 3.97.4: Groq: \b(gsk_[a-zA-Z0-9]{52})\b
Provider documented ·
field-prefix· current · observed 2026-09-24prefix: gsk_
- console.groq.com/docs/echokitprovider-documentation · last read 2026-09-24 · latest outcome read · supports prefix: gsk_
- console.groq.com/docs/production-readiness/security-onboardingprovider-documentation · last read 2026-09-24 · latest outcome read · supports placeholder gsk_your_secret_key_here
Tool corroborated ·
field-body-length-and-alphabet· current · observed 2026-09-24body-length-and-alphabet: 52 characters of [A-Za-z0-9] after gsk_ (A four-sample maintainer observation (#218 row 17) agrees on 52 mixed-case alphanumerics; it is corroboration, not #205 intake.)
- praetorian-inc/noseyparker @ main: crates/noseyparker/data/default/builtin/rules/groq.ymlscanner-rule-source · last read 2026-09-24 · latest outcome read · supports {50,54}
- secretlint/secretlint @ master: packages/@secretlint/secretlint-rule-groqscanner-rule-source · last read 2026-09-24 · latest outcome read · supports body-length-and-alphabet: 52 characters of [A-Za-z0-9] after gsk_
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/groq/groq.goscanner-rule-source · last read 2026-09-24 · latest outcome read · supports body-length-and-alphabet: 52 characters of [A-Za-z0-9] after gsk_
Unresolved ·
field-fixed-segment· current · observed 2026-09-24fixed-segment: Body offsets 20–27 read WGdyb3FY in four observed keys (n=4, undocumented and used by no tool. Not a grammar requirement: positives do not carry it and no fixture asserts silence on its absence.)
- github.com/redact-secret/redact-secret-benchmarks/issues/218project-research-note · last read 2026-09-24 · latest outcome read · supports fixed-segment: Body offsets 20–27 read WGdyb3FY in four observed keys
Unresolved ·
field-alternate-length· current · observed 2026-09-24alternate-length: 48-character body (gitleaks PR #2181) (Contradicted by every tool rule and the observation above; no fixture uses a 48-character body.)
- github.com/gitleaks/gitleaks/pull/2181third-party-writeup · last read 2026-09-24 · latest outcome read · supports alternate-length: 48-character body (gitleaks PR #2181)
Unresolved ·
field-encoded-form· current · observed 2026-09-24encoded-form: GitHub secret scanning detects Base64-encoded Groq keys (Whether an encoded key is in family scope is a contract decision #208 has not made; no Base64-of-key fixture is authored.)
- docs.github.com/en/code-security/secret-scanning/introduction/supported-secret-scanning-patternsprovider-documentation · last read 2026-10-05 · latest outcome read · supports encoded-form: GitHub secret scanning detects Base64-encoded Groq keys
Unresolved ·
listed-references· current · observed 2026-09-24The legacy contract lists 3 references without stating which property each supports.
- console.groq.com/docs/api-referenceother · last read 2026-09-24 · latest outcome read · supports Listed as a reference by the legacy contract
- console.groq.com/docs/production-readiness/security-onboardingprovider-documentation · last read 2026-09-24 · latest outcome read · supports Listed as a reference by the legacy contract
- secretlint/secretlint @ master: packages/@secretlint/secretlint-rule-groqscanner-rule-source · last read 2026-09-24 · latest outcome read · supports Listed as a reference by the legacy contract
Tool corroborated ·
dossier-research· current · observed 2026-09-24Legacy dossier research (verdict ready, tier T2) cited 3 sources; the dossier does not attribute sources to individual properties.
- console.groq.com/docs/production-readiness/security-onboardingprovider-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/726/README.mdproject-research-note · last read 2026-09-27 · latest outcome read · supports Final research evidence recorded by the legacy dossier
- trufflesecurity/trufflehog @ 363923b901c911a9164f50b6c423f47c15372b1c: pkg/detectors/groq/groq.goother · last read 2026-09-24 · latest outcome read · supports Cited by the legacy dossier research for this family
Tool corroborated ·
taxonomy-sources· current · observed 2026-09-24The legacy taxonomy lists 2 sources for this family. The taxonomy records no date; the dossier researchedAt is used as the observed-at date.
- console.groq.com/docs/production-readiness/security-onboardingprovider-documentation · last read 2026-09-24 · latest outcome read · supports Listed as a source for this family in the legacy taxonomy
- trufflesecurity/trufflehog @ v3.97.4: pkg/detectors/groq/groq.goscanner-rule-source · last read 2026-09-24 · 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
gsk_followed by 52 letters and digits (56 in total). The provider pages show the prefix only as a placeholder and state no length or alphabet. TruffleHog (since 2024-05), secretlint, betterleaks and noseyparker agree on 52; a gitleaks proposal and blogs that copy it say 48 with no primary source. A four-sample maintainer observation of public.envfiles found an internalWGdyb3FYsegment at body offsets 20 to 27; it is unconfirmed and is not a grammar requirement. - Basis
- T2. Provider docs and the Python SDK give the prefix, env var (
GROQ_API_KEY) and Bearer header, and the SDK validates nothing. Body: scanner rules and the observation report, so the body claim is empirical. - Issuance
- not attempted; needs a GroqCloud account. The console checklist is in benchmarks#218.
- Contract in core
- detector-families.md (frozen in the #726 record; the internal segment is not required).
In this benchmark
- Fixtures
- 41
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
41 fixtures: 19 expect a redaction, 22 must stay quiet. See every row
| Evidence level | Fixtures | Left readable | Too much | False alarms |
|---|---|---|---|---|
| T2Tool-corroborated | 34 | 0 | 0 | 0 |
| T3Project policy | 7 | 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 engine1 rule targets it | 41 | 0 | 1 | 2 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rulesNo rule maps to it | 41 | 5 | 0 | 1 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 41 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 41 | 0 | 0 | 0 |
Benchmark dossier questions
- Open caveat
- No provider source states length or alphabet; the 52-character body is tool-corroborated plus a four-sample maintainer observation (checklist in benchmarks#218).
Looks like it, but isn't
- Collisions
- xAI
xai-keys (theGROK_API_KEYvsGROQ_API_KEYmix-up is seen in the wild). Groq response ids (chatcmpl-,req_,file_,batch_) are public.gsk_also occurs in unrelated identifiers, so the prefix alone is weak.
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| flare-redact · rules 1.6.1 | groq_key | gsk_ + 40-60 characters |
| trufflehog · rules 3.97.4 | groq | gsk_ + 52 characters |
No rule maps to this family in gitleaks, openredaction.
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
groq-api-key-bearer-long-body-twingroq · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-curl-modelsgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-env-short-body-twingroq · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-key-shape-baregroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-key-shape-quotedgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-key-shape-unicode-crlfgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-secrets-listgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-short-body-twingroq · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-space-appgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-base64-config-encoded-valuegroq · benign-encoded-value | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-bearer-headergroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-chat-pastegroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-compose-envgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-docs-prosegroq · prose-mention | Must not flagT3 · Project policy | Quiet |
groq-api-key-envgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-env-lookup-referencegroq · templated-reference | Must not flagT3 · Project policy | Quiet |
groq-api-key-env-template-placeholdergroq · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
groq-api-key-exportgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-identifier-near-missgroq · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-label-prosegroq · benign-lookalike | Must not flagT3 · Project policy | Quiet |
groq-api-key-maskgroq · benign-lookalike | Must not flagT3 · Project policy | Quiet |
groq-api-key-masked-console-placeholdergroq · documentation-placeholder | Must not flagT3 · Project policy | Quiet |
groq-api-key-models-and-endpoint-public-idgroq · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-openai-compatiblegroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-prefix-onlygroq · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-prefix-separator-twingroq · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-printenvgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-printenv-glued-twingroq · boundary-violation | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-python-dash-body-twingroq · wrong-alphabet | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-python-sdkgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-referencegroq · benign-lookalike | Must not flagT3 · Project policy | Quiet |
groq-api-key-response-ids-public-idgroq · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-settings-hyphen-prefix-twingroq · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-settings-jsongroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-short-bodygroq · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-space-no-separator-twingroq · prefix-near-miss | Must not flagT2 · Tool-corroborated · twin | Quiet |
groq-api-key-startup-loggroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-toml-providergroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-truncated-near-missgroq · format-near-miss | Must not flagT2 · Tool-corroborated | Quiet |
groq-api-key-twin-base-dotenvgroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
groq-api-key-twin-base-pythongroq · documented-format-literal | Must redactT2 · Tool-corroborated | Redacted |
Sources
Documentation and code
- console.groq.com/docs/production-readiness/security-onboarding
- github.com/trufflesecurity/trufflehog/blob/v3.97.4/pkg/detectors/groq/groq.go
- github.com/trufflesecurity/trufflehog/blob/363923b901c911a9164f50b6c423f47c15372b1c/pkg/detectors/groq/groq.go
Research log
- redact-secret/redact-secret-benchmarks#218Research issue
- redact-secret/redact-secret#726Research issue
- redact-secret/redact-secret#727Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/726/README.md