GitHub Actions needs.<job>.outputs Undefined Across Jobs
A downstream job reads needs.<job>.outputs.<name> and gets nothing because the upstream job did not expose that value as a job output, or the job is not listed in needs.
What this error means
A consumer job sees an empty value from needs.<job>.outputs even though the producing step set a step output. The data does not cross the job boundary.
.github/workflows/ci.yml
jobs:
build:
runs-on: ubuntu-latest
steps:
- id: v
run: echo "ver=1.0.0" >> "$GITHUB_OUTPUT"
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- run: echo "${{ needs.build.outputs.ver }}" # empty: build never mapped itCommon causes
Job output not mapped from the step output
Step outputs are local to a job. To cross jobs, the producing job must declare jobs.<id>.outputs and map each one to a steps.<id>.outputs reference.
Consumer missing needs on the producer
The needs context only contains jobs the current job depends on. Without needs: build, needs.build is unavailable.
How to fix it
Map step outputs to job outputs
.github/workflows/ci.yml
jobs:
build:
runs-on: ubuntu-latest
outputs:
ver: ${{ steps.v.outputs.ver }}
steps:
- id: v
run: echo "ver=1.0.0" >> "$GITHUB_OUTPUT"
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- run: echo "${{ needs.build.outputs.ver }}"Verify the dependency chain
- List every producer in the consumer job needs.
- Match the job output name in the producer to the needs reference.
- Remember a skipped or failed producer leaves its outputs empty.
How to prevent it
- Always declare jobs.<id>.outputs when another job consumes a value.
- Keep output names identical between producer and consumer.
- Guard consumers with if: needs.<job>.result == 'success' where appropriate.
Related guides
GitHub Actions steps.<id>.outputs Empty - Missing or Wrong Step idFix GitHub Actions steps.<id>.outputs coming back empty - a step with no id, a typo in the id, or reading the…
GitHub Actions Job Outputs Truncated or Dropped at Size LimitFix GitHub Actions job outputs that come through truncated or empty - job and step outputs have a size cap, s…
GitHub Actions concurrency Group Expression Evaluated Too EarlyFix GitHub Actions concurrency group errors - referencing a context not available at workflow level, or an em…