-
Notifications
You must be signed in to change notification settings - Fork 296
Description
Summary
AWF v0.18.0 introduces a regression where /home/runner/.claude.json is bind-mounted or protected in the chroot, preventing Claude Code from writing its config file. Claude Code crashes silently on startup with zero tool calls executed.
This is the same class of bug as #13979 (Copilot home directory ownership).
Reproduction
Any workflow compiled with AWF v0.18.0 that uses Claude as the engine will fail. The agent starts, attempts to write .claude.json, gets EBUSY on atomic rename followed by EACCES on direct write, then exits with code 0 (silent failure).
Workaround: Recompile with gh-aw v0.43.23 which targets AWF v0.17.0.
Evidence
AWF v0.17.0 — Working
agent-stdio.log: 625 lines- 5 MCP tool calls executed (3x
pull_request_read, 1xcreate_pull_request_review_comment, 1xsubmit_pull_request_review) .claude.jsonwrite:ENOENT(file didn't exist) → created successfully → agent proceeds normally
AWF v0.18.0 — Broken
agent-stdio.log: 168 lines (just infra setup/teardown)- 0 MCP tool calls executed
- No safe outputs produced
- MCP gateway started successfully (GitHub + safe outputs servers connected)
Reverting to AWF v0.17.0 — Working again
- Recompiled with gh-aw v0.43.23 (AWF v0.17.0), same workflows work again
Crash trace from agent-stdio.log (AWF v0.18.0)
[entrypoint] Chroot working directory: /home/runner/work/contextual/contextual
[entrypoint] Running as host user: runner (UID: 1001)
2026-02-16T19:33:42.120Z [DEBUG] Writing to temp file: /home/runner/.claude.json.tmp.137.1771270422120
2026-02-16T19:33:42.120Z [DEBUG] Preserving file permissions: 100644
2026-02-16T19:33:42.121Z [DEBUG] Temp file written successfully, size: 50 bytes
2026-02-16T19:33:42.121Z [DEBUG] Applied original permissions to temp file
2026-02-16T19:33:42.121Z [DEBUG] Renaming /home/runner/.claude.json.tmp.137.1771270422120 to /home/runner/.claude.json
2026-02-16T19:33:42.121Z [DEBUG] Failed to write file atomically: Error: EBUSY: resource busy or locked, rename '...' -> '/home/runner/.claude.json'
2026-02-16T19:33:42.121Z [DEBUG] Falling back to non-atomic write for /home/runner/.claude.json
2026-02-16T19:33:42.121Z [DEBUG] Non-atomic write also failed: Error: EACCES: permission denied, open '/home/runner/.claude.json'
2026-02-16T19:33:42.122Z [ERROR] Failed to save config with lock: Error: EACCES: permission denied, open '/home/runner/.claude.json'
The error repeats twice, then Claude Code exits silently (exit code 0). The MCP gateway was ready and waiting but never received any requests.
Environment
- gh-aw CLI: v0.45.0 (also reproduced with v0.44.0)
- Claude Code: 2.1.42 (also reproduced with 2.1.39 via version pin)
- AWF v0.18.0: broken
- AWF v0.17.0: working
- Runner: GitHub-hosted ubuntu-latest
Additional context
- AWF v0.17.0 → v0.18.0 transition happened in gh-aw v0.44.0
- The
aw_info.jsonfrom broken runs confirmsawf_version: "v0.18.0" - MCPG version (v0.1.4) and GitHub MCP Server version (v0.30.3) are identical between working and broken runs
- The artifact upload step also shows EACCES on MCP log files, suggesting broader permission issues in the v0.18.0 chroot