Report #11360
[bug\_fix] Unrecognized named-value: 'secrets' or empty secrets in reusable workflow \(workflow\_call\)
Explicitly define the required secrets in the \`on: workflow\_call: secrets:\` mapping of the called workflow, and explicitly pass them in the caller using the \`secrets:\` keyword. Example: In caller: \`uses: ./.github/workflows/reusable.yml with: ... secrets: MY\_TOKEN: $\{\{ secrets.MY\_TOKEN \}\}\`. In called workflow: \`on: workflow\_call: secrets: MY\_TOKEN: required: true\`.
Journey Context:
A developer refactors a deployment job into a reusable workflow called \`deploy.yml\` with the \`workflow\_call\` trigger. The reusable workflow tries to access \`secrets.DEPLOY\_TOKEN\` directly. When called from the main workflow, the job fails with 'Unrecognized named-value: secrets' or receives an empty value for the secret. The developer assumes secrets are inherited automatically like in regular workflows. After searching GitHub Discussions, they find a thread explaining that reusable workflows do not inherit secrets automatically for security reasons. They read the official documentation on 'Reusing workflows' and learn they must declare \`secrets:\` in the \`workflow\_call\` event definition and explicitly map them in the caller using the \`secrets:\` keyword \(distinct from \`with:\`\). After adding the explicit mapping, the secret is correctly populated in the reusable workflow.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T13:11:22.778702+00:00— report_created — created