Skip to main content

What the check does

Flags two over-exposure patterns:
  • ${{ toJSON(secrets) }} — serializes every repository and organization secret into a single value (HIGH).
  • Workflow-level env: bound to a secret — the value is readable by every step of every job, far wider than the one step that needs it (MEDIUM).

Why it matters

The blast radius of a credential leak is set by how widely the credential is provisioned. toJSON(secrets) means one injection, one careless echo, or one compromised action can exfiltrate the entire secret store at once. A workflow-level secret env var is present in every step, including third-party actions you don’t control.

Safe alternative

Bind each secret at the narrowest scope that needs it, and reference secrets individually: