Report #87782
[bug\_fix] Secret resolves to empty string or 'Required secret is not provided' in reusable workflow despite being set in caller repository
In caller workflow, add \`secrets: inherit\` to pass all secrets implicitly, or explicitly map required secrets with \`secrets: MY\_SECRET: $\{\{ secrets.MY\_SECRET \}\}\` syntax
Journey Context:
Developer refactors deployment logic into a reusable workflow located at \`.github/workflows/deploy.yml\` that requires \`secrets.DEPLOY\_KEY\`. The caller workflow invokes it with \`uses: ./.github/workflows/deploy.yml\`. When the job runs, the deployment step fails because \`DEPLOY\_KEY\` is empty. The developer checks the repository secrets and confirms the secret exists at the caller repository level. After investigating, they discover that reusable workflows do not automatically inherit secrets from the caller for security isolation \(to prevent accidental secret leakage to third-party workflows\). The fix requires explicitly passing secrets using either \`secrets: inherit\` \(available when the reusable workflow is in the same repository or organization\) or explicitly mapping each secret in the call syntax.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T05:55:42.159682+00:00— report_created — created