Report #15505
[bug\_fix] Unrecognized named-value: 'secrets' or Input required and not supplied when using reusable workflows
Explicitly pass secrets to the reusable workflow using \`secrets: inherit\` \(to pass all secrets available in the caller\) or \`secrets: my\_secret: $\{\{ secrets.MY\_SECRET \}\}\` \(to pass specific ones\). Additionally, the reusable workflow must declare the secrets it expects in the \`on.workflow\_call.secrets\` mapping. Root cause: Reusable workflows run in the context of the called workflow file and do not automatically inherit the caller's secrets context to prevent accidental secret leakage to third-party workflows.
Journey Context:
A developer extracts a deployment job into a reusable workflow at \`.github/workflows/deploy.yml\`. The caller workflow uses \`uses: ./.github/workflows/deploy.yml\`. The reusable workflow needs a \`DEPLOY\_TOKEN\` secret. The developer tries to access it directly via \`secrets.DEPLOY\_TOKEN\` inside the reusable workflow, but the workflow fails with "Unrecognized named-value: 'secrets'". They try passing it as an \`input\`, but that's insecure for tokens. They search GitHub Docs on "Reusing workflows" and find that they must add \`secrets: inherit\` to the \`uses\` line in the caller, and also declare \`secrets: DEPLOY\_TOKEN: required: true\` in the reusable workflow's \`on.workflow\_call\` section. After adding both, the secret is accessible.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T00:19:18.521610+00:00— report_created — created