feat: add configurable tmpfs mount for GH_AW_SETUP_DIR with comprehensive healthcheck#1117
feat: add configurable tmpfs mount for GH_AW_SETUP_DIR with comprehensive healthcheck#1117
Conversation
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
|
| Metric | Base | PR | Delta |
|---|---|---|---|
| Lines | 82.03% | 82.07% | 📈 +0.04% |
| Statements | 82.01% | 82.05% | 📈 +0.04% |
| Functions | 82.50% | 82.50% | ➡️ +0.00% |
| Branches | 74.20% | 74.11% | 📉 -0.09% |
📁 Per-file Coverage Changes (1 files)
| File | Lines (Before → After) | Statements (Before → After) |
|---|---|---|
src/docker-manager.ts |
83.1% → 83.3% (+0.16%) | 82.4% → 82.6% (+0.16%) |
Coverage comparison generated by scripts/ci/compare-coverage.ts
Build Test: Bun ✅
Overall: PASS Bun version: 1.3.10
|
Go Build Test Results
Overall: PASS ✅
|
|
Smoke Test Results — PASS ✅
|
Build Test: Node.js
Overall: ✅ PASS
|
Rust Build Test Results
Overall: PASS
|
Deno Build Test Results
Overall: ✅ PASS
|
.NET Build Test Results
Overall: PASS Run outputhello-world: json-parse:
|
C++ Build Test Results
Overall: PASS
|
Smoke Test Results
Overall: PASS
|
|
PR titles:
|
Chroot Version Comparison Results
Result: FAILED — Python and Node.js versions differ between host and chroot environments.
|
|
@claude[agent] fix pr title and summary |
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Done! I've expanded the healthcheck to verify all tmpfs mounts that should be empty: Paths now checked:
What changed:
All 189 tests pass ✅ (commit fe89dee) |
✅ Coverage Check PassedOverall Coverage
📁 Per-file Coverage Changes (1 files)
Coverage comparison generated by |
|
@claude[agent] the empty setup directory health check only needs to be done once in the beginning, similar to how there is an api-proxy health check |
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
.NET Build Test Results
Overall: PASS Run outputhello-world: json-parse:
|
Done! Changed the healthcheck to run only once during startup by setting What changed:
All 189 tests pass ✅ (commit db2923b) |
Go Build Test Results ✅
Overall: PASS
|
C++ Build Test Results
Overall: PASS 🎉
|
|
Smoke Test Results — PASS
|
Deno Build Test Results
Overall: ✅ PASS
|
🧪 Build Test: Bun Results
Overall: ✅ PASS Test Detailselysia — hono —
|
|
Smoke test results for run ✅ GitHub MCP — Last 2 merged PRs:
✅ Playwright — github.com title contains "GitHub" Overall: PASS
|
.NET Build Test Results
Overall: PASS Run outputhello-world: json-parse: {
"Name": "AWF Test",
"Version": 1,
"Success": true
}
Name: AWF Test, Success: True
|
Smoke Test Results
Overall: PASS
|
🦕 Deno Build Test Results
Overall: ✅ PASS
|
🦀 Rust Build Test Results
Overall: ✅ PASS
|
🟢 Build Test: Node.js — PASS
Overall: PASS
|
Go Build Test Results
Overall: ✅ PASS
|
C++ Build Test Results
Overall: PASS ✅ All C++ projects configured and built successfully.
|
Bun Build Test Results
Overall: ✅ PASS Bun version: 1.3.10
|
Java Build Test Results
Overall: ✅ PASS All Maven projects compiled and tests passed successfully.
|
Chroot Version Comparison Results
Result: ❌ Not all tests passed — Python and Node.js versions differ between host and chroot environments.
|
|
Merged PRs: fix: add explicit execute directive to smoke-codex to prevent noop | fix(deps): resolve high-severity rollup vulnerability in docs-site
|
Added a configurable tmpfs mount over a specified directory (default:
/home/runner/setup-gh-aw) to prevent the agent container from accessing it, even though the parent directory (/home/runner) is mounted.Changes
src/types.ts): AddedghAwSetupDirproperty toWrapperConfiginterface with comprehensive documentationsrc/cli.ts): Added--gh-aw-setup-dirflag with default value/home/runner/setup-gh-aw, also supportsGH_AW_SETUP_DIRenvironment variablesrc/docker-manager.ts):/hostprefixed path whenghAwSetupDiris configuredsrc/docker-manager.test.ts): Added 2 new tests to verify tmpfs mounts and comprehensive healthcheck functionalitySecurity
The tmpfs mount creates an empty in-memory filesystem over the target directory, effectively hiding its contents from the agent container while maintaining filesystem structure. This follows the same security pattern used for hiding MCP logs, workDir, and /dev/shm.
Healthcheck
The agent container now includes a comprehensive healthcheck that verifies ALL tmpfs mounts that should be empty are working correctly:
Paths verified:
/tmp/gh-aw/mcp-logsand/host/tmp/gh-aw/mcp-logs(MCP logs isolation)${config.workDir}and/host${config.workDir}(docker-compose.yml and configs)${config.ghAwSetupDir}and/host${config.ghAwSetupDir}(when configured)The healthcheck runs only once during container startup (
retries: 0) within the first 5 seconds (start_period: '5s'). It usesls -Ato verify each path is empty, with all conditions joined with&&to ensure comprehensive validation. If any directory is not empty, the healthcheck fails, indicating a tmpfs mount is not working properly.Usage
Testing