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
gh-aw version: v0.83.1 (v0.83.2 only bumps container versions, so it should reproduce there too) AWF version: v0.27.38 Engine: claude · Runner: ubuntu-latest (GitHub-hosted)
Summary
Opting a workflow into legacy security mode per the migration notes in #45360 produces a lock file whose agent job cannot start: the AWF execution command uses sudo -E awf, but the install step installs the binary with --rootless into ~/.local/bin, which is not on sudo's secure_path. The agent job dies immediately with:
sudo: awf: command not found
and the run fails with ERR_CONFIG: Claude execution failed: no structured log entries were produced. Claude startup failed before structured logging.
Run the workflow. install_awf_binary.sh --rootless installs to ${HOME}/.local/bin (per the script's rootless branch); sudo resets PATH to secure_path, which doesn't include it. Startup fails.
Root cause
BuildAWFArgs/GetAWFCommandPrefix correctly switch to the legacy (sudo -E awf) invocation when LegacySecurity is set (#45360), but the install-step emission still passes --rootless unconditionally in the agent job. Notably, the same lock file's detection job installs without --rootless — the compiler already emits both forms; the agent job's install step just doesn't account for legacy mode.
Expected
When legacy-security: enable is set, the agent job should install awf without --rootless (i.e., to /usr/local/bin via sudo), matching the sudo -E awf invocation.
Context / impact
We have workflows whose egress requires host network access on the runner (the use case legacy-security exists for). Strict mode's rootless topology breaks them at runtime, and the documented opt-in is unusable due to this bug — the only workaround we found is pinning the compiler to a pre-v0.82.10 release.
gh-aw version: v0.83.1 (v0.83.2 only bumps container versions, so it should reproduce there too)
AWF version: v0.27.38
Engine: claude · Runner: ubuntu-latest (GitHub-hosted)
Summary
Opting a workflow into legacy security mode per the migration notes in #45360 produces a lock file whose agent job cannot start: the AWF execution command uses
sudo -E awf, but the install step installs the binary with--rootlessinto~/.local/bin, which is not on sudo'ssecure_path. The agent job dies immediately with:and the run fails with
ERR_CONFIG: Claude execution failed: no structured log entries were produced. Claude startup failed before structured logging.Reproduction
gh aw compilewith v0.83.1.Inspect the generated
.lock.yml— the two steps disagree:install_awf_binary.sh --rootlessinstalls to${HOME}/.local/bin(per the script's rootless branch);sudoresetsPATHtosecure_path, which doesn't include it. Startup fails.Root cause
BuildAWFArgs/GetAWFCommandPrefixcorrectly switch to the legacy (sudo -E awf) invocation whenLegacySecurityis set (#45360), but the install-step emission still passes--rootlessunconditionally in the agent job. Notably, the same lock file's detection job installs without--rootless— the compiler already emits both forms; the agent job's install step just doesn't account for legacy mode.Expected
When
legacy-security: enableis set, the agent job should install awf without--rootless(i.e., to/usr/local/binvia sudo), matching thesudo -E awfinvocation.Context / impact
We have workflows whose egress requires host network access on the runner (the use case
legacy-securityexists for). Strict mode's rootless topology breaks them at runtime, and the documented opt-in is unusable due to this bug — the only workaround we found is pinning the compiler to a pre-v0.82.10 release.