redact-secret · Report
Personal API key
Personal API key, prefixed lin_api_.
Research record
2 events in the review history: 1 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
^lin_api_[A-Za-z0-9]{40}$
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-23Linear-specific API and OAuth prefixes: the provider documents lin_api_ for API keys and lin_oauth_ for OAuth access tokens; the 40-character body and alphabet remain tool-corroborated
- linear.app/changelog/2021-08-19-github-secret-scanningprovider-documentation · last read 2026-09-29 · latest outcome read · supports the provider documents lin_api_ for API keys and lin_oauth_ for OAuth access tokens; the 40-character body and alphabet remain tool-corroborated
Tool corroborated ·
tool-corroboration· current · observed 2026-09-23Pinned scanner rules are consistent with the contract grammar (2 artifacts: gitleaks 8.30.1; trufflehog 3.97.4).
- 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/linearapi/linearapi.goscanner-rule-source · last read 2026-09-23 · latest outcome read · supports trufflehog 3.97.4: linearapi/linearapi
Provider documented ·
dossier-research· current · observed 2026-09-23Legacy dossier research (verdict ready, tier T1) cited 2 sources; the dossier does not attribute sources to individual properties.
- redact-secret/redact-secret @ 8b6a5fde52ecb4dfce13f09c7a947062d21483c7: docs/audits/evidence/642/README.mdproject-research-note · last read 2026-09-23 · latest outcome read · supports Final research evidence recorded by the legacy dossier
- linear.app/changelog/2021-08-19-github-secret-scanningprovider-documentation · last read 2026-09-29 · latest outcome read · supports Cited by the legacy dossier research for this family
Open questions
No open question is recorded for this revision.
Benchmark dossier notes
- Shape
- prefix
lin_api_followed by 40 alphanumeric characters (no_or-in the body). - Basis
- T1 for the prefix: Linear's changelog says API keys and OAuth access tokens were changed to include the prefixes
lin_api_andlin_oauth_. Length and alphabet come from gitleaks 8.30.1 (linear-api-key) and trufflehog 3.97.4 (linearapi), which agree. - Contract in core
- detector-families.md.
In this benchmark
- Fixtures
- 27
- Left readable
- 0
- Redacted too much
- 0
- False alarms
- 0
27 fixtures: 11 expect a redaction, 16 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 |
| T3Project policy | 2 | 0 | 0 | 0 |
| T0Pending review | 3 | 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 | 27 | 0 | 0 | 1 |
| gitleaksRepository scanner · 8.30.1 · Directory scan · default rules1 rule targets it | 27 | 0 | 0 | 3 |
| redact-secretProduct measured here · 0.1.0-beta.14 · Published npm package · default detectors1 detector mapped | 27 | 0 | 0 | 0 |
| trufflehogRepository scanner · 3.97.4 · Filesystem scan · verification disabled1 rule targets it | 27 | 0 | 0 | 1 |
Benchmark dossier questions
- Open caveat
- The 40-character alphanumeric body is tool-corroborated (gitleaks, trufflehog); Linear states only the lin_api_ prefix.
Looks like it, but isn't
- Collisions
lin_oauth_is a separate credential. Gitleaks also has a context-gated 32-hexlinear-client-secretrule for another Linear value.
Scanner rules for this family
| Scanner | Rule | What the rule matches |
|---|---|---|
| flare-redact · rules 1.6.1 | linear_key | lin_api_ + 40-48 characters |
| gitleaks · rules 8.30.1 | linear-api-key | lin_api_ + 40 characters |
| trufflehog · rules 3.97.4 | linearapi | lin_api_ + 40 characters |
No rule maps to this family in openredaction.
Fixtures in this family
| Fixture | Kind and evidence | redact-secret |
|---|---|---|
linear-token-dash-identifier-embeddinglinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-leading-identifier-embeddinglinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-trailing-identifier-embeddinglinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-api-plainlinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-api-plain-twinlinear · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
linear-token-api-unicode-crlflinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-api-unicode-crlf-twinlinear · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
linear-token-env-api-keylinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-graphql-authorization-headerlinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-linear-client-tslinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-masklinear · benign-lookalike | Must not flagT3 · Project policy | Quiet |
linear-token-oauth-dash-identifier-embeddinglinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-oauth-leading-identifier-embeddinglinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-oauth-trailing-identifier-embeddinglinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-prefix-onlylinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-referencelinear · benign-lookalike | Must not flagT3 · Project policy | Quiet |
linear-token-shape-1-barelinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-shape-1-bare-twinlinear · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
linear-token-shape-1-quotedlinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-shape-1-quoted-twinlinear · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
linear-token-shape-1-unicode-crlflinear · documented-format-literal | Must redactT1 · Provider-documented | Redacted |
linear-token-shape-1-unicode-crlf-twinlinear · wrong-length | Must not flagT2 · Tool-corroborated · twin | Quiet |
linear-token-shape-2-barelinear · unsettled-evidence-input | Pending reviewT0 · Pending | Unscored |
linear-token-shape-2-quotedlinear · unsettled-evidence-input | Pending reviewT0 · Pending | Unscored |
linear-token-shape-2-unicode-crlflinear · unsettled-evidence-input | Pending reviewT0 · Pending | Unscored |
linear-token-short-bodylinear · benign-lookalike | Must not flagT2 · Tool-corroborated | Quiet |
linear-token-team-and-issue-ids-public-idlinear · public-identifier | Must not flagT2 · Tool-corroborated | Quiet |
Sources
Documentation and code
- linear.app/changelog/2021-08-19-github-secret-scanning
Research log
- redact-secret/redact-secret#367Research issue
- redact-secret/redact-secret#374Research issue
- redact-secret/redact-secret#642Research issue
- Final evidence, pinned to a commit/redact-secret/redact-secret/blob/8b6a5fde52ecb4dfce13f09c7a947062d21483c7/docs/audits/evidence/642/README.md