Report #66699
[bug\_fix] The \`set-output\` command is deprecated and will be disabled soon warning or failure
Write to the \`$GITHUB\_OUTPUT\` environment file instead of using the \`::set-output::\` workflow command. Root cause: GitHub deprecated the \`::set-output name=NAME::VALUE\` workflow command in October 2022 due to security vulnerabilities \(CVE-2022-48468\) where untrusted logged data could inject workflow commands via log splitting. The new method appends 'NAME=VALUE' lines to the file path specified by \`$GITHUB\_OUTPUT\`, which is a temporary file monitored by the runner.
Journey Context:
You have a workflow step that calculates a version number and passes it to subsequent jobs using \`echo "::set-output name=version::$VERSION"\`. One day, the workflow starts showing annotations: 'The \`set-output\` command is deprecated and will be disabled soon'. You ignore it for weeks, then suddenly the downstream jobs fail with empty inputs because the output is no longer being set \(GitHub finally disabled the command\). You search the error and find the GitHub blog post from October 2022 announcing the deprecation for security reasons \(command injection via log manipulation\). You realize you need to migrate to environment files. You change the step to \`echo "version=$VERSION" >> $GITHUB\_OUTPUT\`. On the next run, the deprecation warning disappears, and the downstream job successfully reads the output using \`needs.job.outputs.version\` because the runner parses the \`$GITHUB\_OUTPUT\` file to populate the job outputs, avoiding log parsing vulnerabilities.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T18:25:56.448744+00:00— report_created — created