GitHub Actions "RUNNER_TEMP is not writable"
Actions write scratch files to RUNNER_TEMP. In container jobs running as a non-root user, that directory can be owned by root, so writes are denied and tooling fails.
What this error means
A step or action fails writing to the temp directory with a permission-denied error.
github-actions
Error: EACCES: permission denied, open '/home/runner/work/_temp/abc123.sh'
##[error]Process completed with exit code 1.Common causes
Container user cannot write RUNNER_TEMP
The runner mounts the temp directory owned by root, but the container job runs as a different UID without write access.
How to fix it
Run as a user with write access or fix ownership
- Run the container as root, or set the container user to match the runner-mounted ownership.
- Alternatively, chown the temp and workspace directories early in the job.
- Re-run.
.github/workflows/ci.yml
jobs:
build:
runs-on: ubuntu-latest
container:
image: node:20-bookworm
options: --user root
steps:
- uses: actions/checkout@v4
- run: npm ciHow to prevent it
- Match the container user to the runner-mounted directory ownership.
- Avoid minimal images that drop to a UID without write access to RUNNER_TEMP.
Related guides
GitHub Actions "EACCES: permission denied" in a container jobFix GitHub Actions "EACCES: permission denied" inside a container job - the container user cannot write to th…
GitHub Actions container job "HOME is not set"Fix the GitHub Actions error where tools fail inside a container job because the HOME environment variable is…
GitHub Actions "Post job cleanup failed"Fix the GitHub Actions error where an action's post step (cache save, checkout cleanup) fails after the job's…