fix: pin network-isolation-test to concrete release tags#5495
Open
lpcox wants to merge 7 commits into
Open
Conversation
The workflow pinned firewall and mcpg to "latest", but install_awf_binary.sh treats the version as a literal release tag and builds releases/download/latest/checksums.txt, which 404s (there is no GitHub release tagged "latest"). The run failed at the Install AWF binary step with curl exit code 22. Pin to concrete latest tags instead: firewall v0.27.10 and mcpg v0.3.30. The binary download and all GHCR image tags (agent/api-proxy/squid 0.27.10, gh-aw-mcpg v0.3.30) were verified to resolve. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
✅ Coverage Check PassedOverall Coverage
📁 Per-file Coverage Changes (1 files)
Coverage comparison generated by |
Contributor
There was a problem hiding this comment.
Pull request overview
Pins the network-isolation-test agentic workflow to concrete AWF + MCP gateway versions to avoid failures caused by treating "latest" as a literal GitHub release tag, and updates the compiled lock workflow accordingly.
Changes:
- Update
network-isolation-test.mdfrontmatter to pin MCP (v0.3.30) and AWF (v0.27.10) versions. - Regenerate
network-isolation-test.lock.ymlto use versioned GHCR image tags and a versioned schema URL (no/releases/latest/...). - Update the lock workflow’s AWF installation path to build/install
awffrom the checked-out repo rather than downloading a release artifact.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/network-isolation-test.md | Pins MCP and AWF versions in the workflow source frontmatter. |
| .github/workflows/network-isolation-test.lock.yml | Updates compiled workflow to use pinned tags/schema URL and reflects the new AWF install/build steps. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 2/2 changed files
- Comments generated: 2
Comment on lines
+1
to
+2
| # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"1685e6c91573ab3867f9ec0638718b699d8e280b161b52603a1b822c1be72ad9","body_hash":"83aaa4742f377ca9a8a6e368cafea82d3d2dde9a353e329dcdbaaa49a72d3891","compiler_version":"v0.81.2","agent_id":"copilot","agent_model":"claude-haiku-4-5","engine_versions":{"copilot":"1.0.63"}} | ||
| # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache/restore","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/restore","sha":"2c8a9bd7457de244a408f35966fab2fb45fda9c8","version":"v6.0.0"},{"repo":"actions/cache/save","sha":"2c8a9bd7457de244a408f35966fab2fb45fda9c8","version":"v6.0.0"},{"repo":"actions/checkout","sha":"9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0","version":"v7.0.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"b5cde6c5013569c8b0229dd2d7ffd63eaf2c9ad2","version":"v0.81.2"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.10"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.10"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.10"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.30"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b","pinned_image":"ghcr.io/github/gh-aw-node@sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b"},{"image":"ghcr.io/github/github-mcp-server:v1.4.0","digest":"sha256:2afb26356481d1a350e14544a6e160f7f7ec1561a1ea309b823665abf0309036","pinned_image":"ghcr.io/github/github-mcp-server:v1.4.0@sha256:2afb26356481d1a350e14544a6e160f7f7ec1561a1ea309b823665abf0309036"}]} |
Comment on lines
+465
to
+474
| - name: Setup Node.js | ||
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: '24' | ||
| package-manager-cache: false | ||
| - name: Install awf dependencies | ||
| run: npm ci | ||
| - name: Build awf | ||
| run: npm run build | ||
| - name: Install awf binary (local) |
Run 28112808921 failed: the Copilot api-proxy returned a non-retryable 403 on the agent's LLM call. Root cause was the maxRuns hard cap (derived from max-turns) — api-proxy guards return 403 once AWF_MAX_RUNS is exceeded (containers/api-proxy/guards/common-guard-checks.js:84). With max-turns: 5 the agent exhausted its budget inspecting awf (which/--version/--help) before finishing the two curl egress checks. Raise max-turns 5 -> 15 (maxRuns 15) and instruct the agent to run the two curl commands directly without introspecting the awf binary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
|
✅ Copilot review passed with no inline comments. @lpcox Add the |
Manual lock edit to validate rootless network-isolation: removes sudo from the awf binary install (tee/chmod) and the awf invocation, keeping only the artifact-upload chmod. Note: regenerated by gh aw compile / postprocess. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
6 tasks
Recompiled with `gh-aw compile --gh-aw-ref main`, producing a fully rootless lock: install_awf_binary.sh v0.27.10 --rootless (no sudo), digest-pinned container images, and gh-aw-main setup action. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Recompile against gh-aw branch fix/rootless-awf-install-user-prefix (c2d22aa3ac) so the rootless install writes awf to a user-writable $HOME/.local prefix and exports it to $GITHUB_PATH, fixing the "--rootless requires write access to /usr/local/lib/awf" failure on standard ubuntu-latest runners. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The network-isolation smoke test intentionally exercises the PUBLISHED awf
binary (rootless bundle install) and pinned GHCR container images. Postprocess
was rewriting --skip-pull -> --build-local, which the standalone awf bundle
rejects ("--build-local requires a full repository checkout"). Add a
release-mode exclusion set so this lock keeps the raw compiled output:
rootless install + --skip-pull with pre-downloaded pinned images.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The
network-isolation-testworkflow (run 28112343145) failed at Install AWF binary with:The frontmatter pinned firewall + mcpg to
"latest". While GHCR images support a:latesttag,install_awf_binary.shtreats the version as a literal GitHub release tag and buildsreleases/download/latest/checksums.txt— but there is no release taggedlatest(releases are versioned tags with one flagged Latest), so it 404s.Fix
Pin to concrete latest tags:
v0.27.10v0.3.30Verified to resolve:
releases/download/v0.27.10/checksums.txt→ 200agent/api-proxy/squid0.27.10andgh-aw-mcpgv0.3.30manifests → 200Recompiled with gh aw v0.81.2 and re-ran the postprocess script.
actions-lock.jsonleft intact (keeps both v0.81.0 entries used by 43 other locks and the v0.81.2 entry).Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com