Grant agentic engines read/write access to /tmp/gh-aw in AWF sandbox - #51608
Conversation
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds an explicit read-write /tmp/gh-aw mount to every AWF sandbox, ensuring runtime artifacts remain accessible across supported sandbox runtimes.
Changes:
- Adds
constants.DefaultTmpGhAwMounttoBuildAWFArgs. - Regenerates workflow lock files and Go/WASM golden fixtures.
- Covers all supported agentic engines.
Show a summary per file
| File | Description |
|---|---|
pkg/workflow/awf_command_builder.go |
Adds the shared runtime mount. |
pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden |
Updates compiled fixture. |
pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden |
Updates compiled fixture. |
pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden |
Updates compiled fixture. |
pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden |
Updates compiled fixture. |
pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden |
Updates Pi golden output. |
pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden |
Updates Gemini golden output. |
pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden |
Updates Copilot golden output. |
pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden |
Updates Codex golden output. |
pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden |
Updates Claude golden output. |
.github/workflows/workflow-normalizer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/video-analyzer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/update-astro.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/super-linter.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-update-cross-repo-pr.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-test-tools.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-pydantic.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-pi.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-opencode.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-kiro.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-goose.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-cursor.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-crush.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-create-cross-repo-pr.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-copilot-small.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-copilot-sdk.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-copilot-arm.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-ci.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/smoke-call-workflow.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/sighthound-security-scan.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/schema-feature-coverage.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/schema-consistency-checker.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/repo-tree-map.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/python-data-charts.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/pr-nitpick-reviewer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/ponytail-reviewer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/pdf-summary.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/notion-issue-summary.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/mcp-inspector.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/mattpocock-skills-reviewer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/lint-monster.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/impeccable-skills-reviewer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/hippo-embed.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/grumpy-reviewer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/github-remote-mcp-auth-test.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/firewall.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/example-permissions-warning.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/example-failure-category-filter.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-testify-uber-super-expert.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-team-evolution-insights.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-spec-coverage-kiro.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-schema-audit-cursor.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-regression-audit-kiro.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-pr-review-cursor.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-model-resolution.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-max-ai-credits-test.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-malicious-code-scan.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-formal-spec-verifier.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-credit-limit-test.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-byok-ollama-test.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/daily-arxiv-researcher.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/codex-github-remote-mcp-test.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/chaos-pr-bundle-fuzzer.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/bot-detection.lock.yml |
Regenerates AWF runtime mounts. |
.github/workflows/ace-editor.lock.yml |
Regenerates AWF runtime mounts. |
Review details
Tip
Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 140/294 changed files
- Comments generated: 0
- Review effort level: Balanced
|
@copilot Quick triage nudge for this PR. Please refresh the branch if GitHub can update it cleanly, review the current reviewer state on the latest head, run the Current context:
Branch refresh was requested. Run: https://github.com/github/gh-aw/actions/runs/31322753641
|
Checked the latest head |
|
/smoke-copilot |
|
📰 BREAKING: Smoke Copilot is now investigating this issue comment. Sources say the story is developing... |
Smoke Test ResultsPR: Grant agentic engines read/write access to /tmp/gh-aw in AWF sandbox 1-5 core tools: ✅ Overall: PARTIAL PASS cc Warning Firewall blocked 6 domainsThe following domains were blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "accounts.google.com"
- "android.clients.google.com"
- "clients2.google.com"
- "contentautofill.googleapis.com"
- "safebrowsingohttpgateway.googleapis.com"
- "www.google.com"See Network Configuration for more information.
|
Comment MemoryNote This comment is managed by comment memory.It stores persistent context for this thread in the code block at the top of this comment. Warning Firewall blocked 6 domainsThe following domains were blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "accounts.google.com"
- "android.clients.google.com"
- "clients2.google.com"
- "contentautofill.googleapis.com"
- "safebrowsingohttpgateway.googleapis.com"
- "www.google.com"See Network Configuration for more information.
|
There was a problem hiding this comment.
Smoke test review: automated check pass. Me happy caveman.
Warning
Firewall blocked 6 domains
The following domains were blocked by the firewall during workflow execution:
accounts.google.comandroid.clients.google.comclients2.google.comcontentautofill.googleapis.comsafebrowsingohttpgateway.googleapis.comwww.google.com
To allow these domains, add them to the network.allowed list in your workflow frontmatter:
network:
allowed:
- defaults
- "accounts.google.com"
- "android.clients.google.com"
- "clients2.google.com"
- "contentautofill.googleapis.com"
- "safebrowsingohttpgateway.googleapis.com"
- "www.google.com"See Network Configuration for more information.
📰 BREAKING: Report filed by Smoke Copilot · auto · 42 AIC · ⌖ 2.72 AIC · ⊞ 8.6K
Comment /smoke-copilot to run again
Add label smoke to run again
|
Thanks for this infrastructure improvement! The fix looks solid and well-documented. However, there are a couple of things that would strengthen this PR:
If you would like to add test coverage, assign this prompt to your agent:
|
Agentic engines (Claude, Copilot, Codex, Gemini, Pi) need read/write access to
/tmp/gh-aw/inside the AWF sandbox for logs, cache, and other runtime artifacts.Root cause
gh-aw's sandbox architecture defines two trees:
${RUNNER_TEMP}/gh-aw— read-only "setup tree" (binaries, staged actions, prompts, MCP configs)/tmp/gh-aw— read-write "runtime tree" (logs, cache, agent-generated artifacts)This split is already documented in
actions/setup/setup.shand assumed by engine code (pkg/workflow/codex_engine.gocomments), and containerized MCP servers already mount/tmp/gh-aw:/tmp/gh-aw:rwviaconstants.DefaultTmpGhAwMount. However, the main AWF agent command — shared by all engines — never explicitly mounted/tmp/gh-aw. This relied on incidental chroot filesystem visibility and was not guaranteed under isolated container/VM sandbox runtimes (gVisor, docker-sbx), where only explicitly bind-mounted paths are visible.Changes
pkg/workflow/awf_command_builder.go: add--mount /tmp/gh-aw:/tmp/gh-aw:rwtoBuildAWFArgs, reusing the existingconstants.DefaultTmpGhAwMountconstant, so the mount is explicit and consistent across chroot, gVisor, and docker-sbx runtimes..lock.ymlfiles and regenerated affected Go/wasm golden test fixtures to reflect the new mount argument.