Skip to content
Latchkey

GitHub Actions reusable workflow secret not inherited

A called reusable workflow does not automatically receive the caller secrets. You must pass each secret under secrets:, or use secrets: inherit to forward all of the caller secrets.

What this error means

A reusable workflow sees empty secret values, even though the caller has them configured, because no secrets were forwarded.

github-actions
# In the reusable workflow, secrets.NPM_TOKEN is '' because the caller did not forward it

Common causes

Secrets not forwarded by the caller

Without secrets: inherit or explicit pass-through, the callee gets no secrets.

Secret not declared in the reusable workflow

A reusable workflow must declare expected secrets under on.workflow_call.secrets.

How to fix it

Forward secrets to the reusable workflow

  1. In the caller, add secrets: inherit or pass secrets explicitly.
  2. In the reusable workflow, declare expected secrets under workflow_call.
  3. Reference them as secrets.NAME inside the reusable workflow.
.github/workflows/ci.yml
# caller
jobs:
  call:
    uses: ./.github/workflows/reusable.yml
    secrets: inherit

How to prevent it

  • Use secrets: inherit or explicit pass-through for every reusable workflow.
  • Declare required secrets in the reusable workflow_call definition.

Frequently asked questions

What causes "reusable secret not inherited"?
Without secrets: inherit or explicit pass-through, the callee gets no secrets.
How do I fix reusable secret not inherited?
Forward secrets to the reusable workflow

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card