Matched signals
- No space left on device
- disk quota exceeded
- Write failed: No space left
- not enough disk space
- insufficient disk space
- out of disk space
- Disk is full
- Error processing tar file
CI runner disk full
What this failure means
The CI runner has run out of available disk space. The build, test, or artifact step cannot write files and fails with ENOSPC.
Symptoms
Faultline looks for one or more of these log fragments:
No space left on device
disk quota exceeded
Write failed: No space left
not enough disk space
insufficient disk space
out of disk space
Disk is full
Error processing tar file
Diagnosis
The CI runner has run out of available disk space. The build, test, or artifact step cannot write files and fails with ENOSPC.
Fix steps
- Check remaining space before diagnosing:
df -handdu -sh /* | sort -rh | head -20. - Remove Docker build cache and dangling images:
docker system prune -af --volumes. - Clear dependency caches:
rm -rf ~/.npm ~/.gradle/caches ~/.m2/repository ~/.cache/pip. - In GitHub Actions, add the
jlumbroso/free-disk-spaceaction before large build steps. - In GitLab CI, prune images in
before_scriptand reduce artifact retention. - In CircleCI, choose a larger
resource_classor clean up large workspace directories. - Upgrade to a runner or agent tier with more disk, or split the job across multiple stages.
- Reduce
.dockerignoreexclusions to keep the build context small. - Add a cheap guard near the top of the job so storage problems fail fast with a clear message instead of surfacing mid-build.
Validation
- Re-run the failing workflow step after confirming free space with
df -h. - Confirm the original failure signature for CI runner disk full is gone.
Why it matters
Disk space is consumed by: Docker image layers pulled during the build, large build artifacts not cleaned up between jobs, excessive logging, test fixtures, dependency caches, or container image builds that layer many files.
Prevention
- Add a disk space check at the start of long jobs:
df -h. - Prune Docker build cache between jobs in your CI runner configuration.
- Use remote layer caching (BuildKit registry cache or kaniko) to avoid re-downloading large layers.
- Set explicit artifact/cache expiry policies on your CI platform to avoid accumulation across runs.
Try it locally
df -h
docker system df
df -h
How Faultline detects it
Use faultline explain runner-disk-full to see the full playbook.
faultline analyze build.log
faultline explain runner-disk-full
Generated from playbooks/bundled/log/ci/runner-disk-full.yaml. Do not edit directly.
Try it on your own failed log
$ faultline analyze failed.log
Want this across every CI run?
Faultline Teams tracks recurring failures across all your repos and surfaces patterns in a shared dashboard.