Report #37863
[bug\_fix] Secrets are empty or undefined in reusable workflows \(workflow\_call\) even when set in the caller repository
Explicitly pass secrets in the caller workflow using \`secrets: inherit\` \(to pass all secrets\) or \`secrets: MY\_SECRET: $\{\{ secrets.MY\_SECRET \}\}\` in the \`uses\` step that invokes the reusable workflow.
Journey Context:
Developer refactors a deployment workflow into a reusable workflow defined in \`.github/workflows/deploy.yml\` with a \`workflow\_call\` trigger. The reusable workflow defines \`secrets: API\_KEY: required: true\`. In the caller workflow \(e.g., \`.github/workflows/ci.yml\`\), the developer adds a step \`uses: ./.github/workflows/deploy.yml\`. The workflow fails immediately with "Input required and not supplied: API\_KEY". The developer verifies the secret \`API\_KEY\` exists in the repository settings. They initially assume secrets are automatically inherited. After reviewing the documentation for \`workflow\_call\`, they realize that reusable workflows run in an isolated context and secrets must be explicitly passed to prevent leakage. The developer modifies the caller to include \`secrets: inherit\` \(or maps the specific secret\), and the reusable workflow successfully receives the secret and completes the deployment.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T18:01:59.861359+00:00— report_created — created