Report #38831
[bug\_fix] Secrets are empty or 'Input required and not supplied' in reusable workflows
Explicitly pass secrets to the reusable workflow using either secrets: inherit to pass all secrets, or map individual secrets with secrets: \{ AWS\_KEY: $\{\{ secrets.AWS\_KEY \}\} \}. Do not assume secrets are automatically available in the called workflow.
Journey Context:
A team refactors duplicate deployment jobs into a reusable workflow stored in .github/workflows/deploy-reusable.yml. The reusable workflow defines workflow\_call inputs and expects secrets like AWS\_ACCESS\_KEY\_ID. They update the caller workflow to use the reusable job, assuming secrets defined at the organization or repository level will automatically flow into the reusable workflow like they do for regular jobs. The workflow fails immediately with "Input required and not supplied: AWS\_ACCESS\_KEY\_ID" or the secret value is empty string. The developer checks the repository settings and confirms the secret exists. They try adding env: at the job level in the caller, but the environment variables don't propagate to the reusable workflow's context. After searching GitHub issues, they discover that reusable workflows run in an isolated security context and must explicitly receive secrets. The fix is to add secrets: inherit to the uses block, or explicitly map the required secrets, which then makes them available as secrets context in the reusable workflow.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T19:39:15.984024+00:00— report_created — created