You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Rootless runtime fails with EPERM chown on chroot home when the runner's primary GID is below 1000 #10255
getSafeHostGid() in src/host-identity.ts replaces any GID below 1000 with 1000 (validateIdNotInSystemRange). prepareChrootHomeMounts() in src/chroot-home-setup.ts then calls fs.chownSync(emptyHomeDir, 1001, 1000). A non-root process can only chown to a group it belongs to, so this fails with EPERM. The code is the same at v0.28.66 and on main.
Many self-hosted images create the runner user as a system account, so a primary GID below 1000 is common.
Workaround
sandbox.agent.runtime: docker-sudo-iptables runs AWF through sudo and avoids the failure, but it gives up the rootless default.
Suggested fix
In rootless mode, use the real process.getgid() (or skip the chown when the directory is already owned by the current user) instead of substituting 1000. Alternatively, fail with a clear preflight message naming the GID requirement. The system-range substitution makes sense when AWF runs as root through sudo, but not when it runs as the unprivileged user.
Activity