libtool Can't Write To Output File: No Space Left On Device On macOS Runner
When a GitHub Actions macOS job fails during libtool, xcodebuild, archive, or link steps with No space left on device, the failing command is usually the messenger. The real fix is to separate runner temp files, workspace artifacts, Xcode caches, simulator runtimes, and required toolchain state before adding cleanup.
Find what the runner can delete.
Leave your email now; the scan summary or failing job link can follow after the first reply. We send the free SafeDisk AI deletion trial step only if deletion risk is still unclear.
First Split The Failure
- Runner temp: usually safe after the job ends, but can break later steps during the same workflow.
- Workspace artifacts: review before deleting because later jobs may need archives, dSYMs, logs, screenshots, or result bundles.
- Xcode DerivedData and ModuleCache: usually rebuildable, but clean at a controlled point in the workflow.
- Simulator runtimes and DeviceSupport: confirm-first because pinned iOS, watchOS, tvOS, visionOS, MAUI, Flutter, or Appium workflows may require them.
- Package caches: SwiftPM, CocoaPods, npm, pnpm, Gradle, and Homebrew should be cleaned through the owning tool where possible.
Minimal Evidence Step
- name: Capture macOS runner storage evidence
if: runner.os == 'macOS'
shell: bash
run: |
df -h
xcodebuild -version
xcrun simctl list runtimes | sed -n '1,100p'
du -sh "$PWD" "$RUNNER_TEMP" "$HOME/Library/Developer/Xcode/DerivedData" "$HOME/Library/Developer/CoreSimulator" "$HOME/Library/Caches" 2>/dev/null || true
Safe Cleanup Order
- Capture disk usage before cleanup so the next failure can be compared.
- Delete current-job temp files only after they are no longer needed.
- Clean DerivedData and package caches at a predictable boundary.
- Delete unavailable simulators before touching required runtimes.
- Keep archives, dSYMs, result bundles, and required platform runtimes behind review.
- Print disk usage after cleanup and keep enough headroom for the largest archive/link step.
Run the read-only CI scan
Copy the read-only size check first. If the output still needs judgment, send the result for review before pruning volumes or resetting state.
Need a delete / confirm / protect answer for this runner?
Submit the form first; the failing job link can follow. We check whether free guidance is enough before asking for the free SafeDisk AI deletion trial.