GitHub Actions GITHUB_OUTPUT not set / set-output deprecated
The ::set-output:: workflow command was deprecated and disabled. Steps must now write key=value lines to the file at \${GITHUB_OUTPUT}; the old command produces no output and may warn or error.
What this error means
A downstream reference to steps.<id>.outputs.* is empty, and logs show a deprecation warning for set-output or no output is recorded at all.
github-actions
Error: Unable to process command '::set-output name=foo::bar' successfully.
The `set-output` command is deprecated and disabled.Common causes
Using ::set-output::
The workflow command form was removed; outputs are not captured.
Writing to the wrong target
Echoing to stdout instead of the GITHUB_OUTPUT file does not set an output.
How to fix it
Write to the GITHUB_OUTPUT file
- Append key=value to \${GITHUB_OUTPUT}.
- Give the step an id so the output can be referenced.
- Reference it as steps.<id>.outputs.<key>.
.github/workflows/ci.yml
- id: meta
run: echo "version=1.2.3" >> "${GITHUB_OUTPUT}"
- run: echo "Built ${{ steps.meta.outputs.version }}"How to prevent it
- Replace all ::set-output:: usages with GITHUB_OUTPUT writes.
- Keep third-party actions updated so they use the file-based commands.
Related guides
GitHub Actions save-state deprecated (use GITHUB_STATE)Fix the GitHub Actions save-state deprecation - write state to the GITHUB_STATE file instead of the ::save-st…
GitHub Actions multiline GITHUB_OUTPUT broken without heredocFix a GitHub Actions multiline step output that is truncated - multiline GITHUB_OUTPUT values need a heredoc…
GitHub Actions needs.<job>.outputs undefined when upstream skippedFix GitHub Actions where needs.<job>.outputs.* is empty - a skipped or failed upstream job produces no output…