Rootless startup cannot publish resolved config audit under /run/awf-config-audit
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- linux, typescript
Research direction
Start in src/commands/main-action.ts at persistConfigAuditArtifact, which unconditionally calls publishEarlyResolvedConfig in src/resolved-config-artifact.ts, where the /run publication directory is created. Decide how rootless runs should publish audit evidence without weakening the root-owned, symlink, and exclusive-creation checks, since the linked consumer redaction contract depends on that path. Done means a non-root run on a host without /run/awf-config-audit produces a redactable artifact with no EACCES warning, and the privileged security tests still pass.
Written by the indexing model from the issue text.
Description
Summary
AWF v0.28.59 attempts to publish the early resolved-config audit artifact under /run/awf-config-audit even when invoked as a non-root user. On a host where that publication directory has not been provisioned, startup logs an EACCES warning and does not publish the early artifact.
Observed failure
Run: https://github.com/github/gh-aw/actions/runs/38948906270/job/117135462088?pr=69450#step:32:112
The job invokes AWF without sudo, using rootless/network-isolation mode. At step 32, line 112:
[WARN] Failed to publish resolved config artifact: Error: EACCES: permission denied, mkdir '/proc/self/fd/22/awf-config-audit'
The descriptor-relative path points into /run; this is not a workflow-config path or a process-substitution issue.
This warning is caught and execution continues. The linked job later exits for an unrelated unavailable-model error; this issue concerns only audit publication.
Introduction and cause
Introduced by #10014 (merge commit 515c8bfdd520c1890c161d40d189a5b8e54ddb60, October 15), shipped in v0.28.59.
persistConfigAuditArtifactunconditionally callspublishEarlyResolvedConfig.publishEarlyResolvedConfigopens/runand attempts to create the root-owned publication directory. A normal unprivileged process cannot create it on a fresh host.
Expected behavior
Rootless executions should preserve resolved-config audit evidence without requiring sudo or emitting a permission warning for the normal execution mode. Privileged executions must retain the protected publication location and existing ownership, symlink, exclusive-creation, and permission safeguards.
Consumer compatibility
Current gh-aw consumers deliberately accept AWF_RESOLVED_CONFIG only at /run/awf-config-audit/run-<six alphanumeric characters>/awf-resolved-config.json, with root-owned publication-root and caller-owned directory/file permission checks. Exporting an arbitrary user/temp-directory path would cause their redaction step to fail.
See https://github.com/github/gh-aw/blob/0d15bd1649/actions/setup/js/redact_secrets.cjs#L400-L445 and https://github.com/github/gh-aw/blob/0d15bd1649/actions/setup/js/redact_secrets.cjs#L721-L736.
Any fix should preserve that security contract or explicitly coordinate a consumer update. Rootless standard audit-tree publication may be an option without exporting a new incompatible early-artifact path.
Suggested regression coverage
Exercise startup audit publication as a genuinely non-root Linux user on a fresh host without /run/awf-config-audit, verify the resulting artifact is collectable/redactable, and retain privileged publication security tests.
- Dominant language
- TypeScript
- Stars
- 149
- Forks
- 77
- Avg merge
- 4h 36m
- Merged PRs (30d)
- 418
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from github/gh-aw-firewall
-
agentic-workflows automated dependencies
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
github/gh-aw-firewall#3837 ·
Maintainers usually reply within 1 day
-
agentic-workflows
Difficulty 4/5 3-5 days Newbie friendliness 25/100
github/gh-aw-firewall#10175 ·
Maintainers usually reply within 1 day
-
agentic-workflows
Difficulty 4/5 3-5 days Newbie friendliness 35/100
github/gh-aw-firewall#10174 ·
Maintainers usually reply within 1 day
-
agentic-workflows
Difficulty 4/5 3-5 days Newbie friendliness 25/100
github/gh-aw-firewall#10173 ·
Maintainers usually reply within 1 day
-
feat: native protected command-output capture outside agent-visible mountsPossibly taken @lpcox claimed this today. Open
github/gh-aw-firewall#10166 · 1 reaction · 2 assignees ·
Maintainers usually reply within 1 day
All issues in github/gh-aw-firewall
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
jbacalso24/mimry#459 · 1 comment ·
Maintainers usually reply within 1 day
-
architecture help wanted hive/claimed-by-architect origin/architect stage/030-pr-in-progress tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
kubestellar/console#24422 · 1 comment ·
Maintainers usually reply within 1 day
-
area: backends type: docs
Difficulty 1/5 1-3 hours Newbie friendliness 83/100
schlessera/brain-kit#2383 ·
Maintainers usually reply within 1 day
-
agent duplicate providers tool triaged
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day