GitHub Actions Job Outputs Truncated or Dropped at Size Limit
A large value passed through job or step outputs is silently truncated or dropped because outputs are meant for small scalars, not multi-megabyte payloads. Downstream jobs then read a partial or empty value.
What this error means
A consumer job receives a cut-off JSON string, an empty output, or a parse error from fromJSON because the upstream output exceeded the per-output size budget.
# build job emits a big JSON manifest as a single output
- id: gen
run: echo "manifest=$(cat large-manifest.json)" >> "$GITHUB_OUTPUT"
# deploy job: fromJSON fails on the truncated valueCommon causes
Passing large blobs through outputs
Job and step outputs are designed for short values. A large JSON document, file list, or log shoved into an output can exceed the limit and be truncated.
Accumulating many outputs in one job
The combined size of a job outputs map also has a ceiling. Many medium values together can push the job over it.
How to fix it
Pass large data as an artifact, not an output
Upload the payload as an artifact in the producer and download it in the consumer instead of stuffing it into an output.
- uses: actions/upload-artifact@v4
with:
name: manifest
path: large-manifest.json
# consumer job:
- uses: actions/download-artifact@v4
with:
name: manifestKeep outputs small and scalar
- Pass an identifier, version, or short flag through outputs, not whole documents.
- Hash or summarize large data and pass the summary.
- For structured data, write a file and share it as an artifact, then fromJSON the small bits you actually need.
How to prevent it
- Reserve outputs for small scalar values.
- Move bulk data between jobs via artifacts.
- Validate fromJSON inputs are complete before parsing.