Summary
In gh-aw v0.81.6, gh aw compile resolves container digest pins only from (a) a table baked into the binary and (b) the containers cache in .github/aw/actions-lock.json — never from a live registry query. The baked table for the 0.27.11 firewall image set includes agent, api-proxy, and squid, but omits ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.11.
Impact
If a repo's actions-lock.json loses its containers cache entry for cli-proxy (e.g. the file is regenerated from scratch, or the cache is pruned), recompiling produces lock files that reference cli-proxy:0.27.11 unpinned (tag-only, no @sha256: digest), silently downgrading the digest-pinning guarantee for that one image while its 0.27.11 siblings stay pinned.
Reproduction
- In a repo using gh-aw v0.81.6 with firewall enabled, remove the
containers entries from .github/aw/actions-lock.json.
- Run
gh aw compile.
- Observe:
agent/api-proxy/squid 0.27.11 images come out digest-pinned (from the baked table); cli-proxy:0.27.11 comes out tag-only.
Restoring the cache entry manually (digest verified against the registry) and recompiling is stable/idempotent, confirming the cache path works — the gap is only the baked table.
Suggested fix
Include the cli-proxy digest alongside its siblings in the baked default pin table (and perhaps warn when compile emits an unpinned container reference).
Summary
In gh-aw v0.81.6,
gh aw compileresolves container digest pins only from (a) a table baked into the binary and (b) thecontainerscache in.github/aw/actions-lock.json— never from a live registry query. The baked table for the 0.27.11 firewall image set includesagent,api-proxy, andsquid, but omitsghcr.io/github/gh-aw-firewall/cli-proxy:0.27.11.Impact
If a repo's
actions-lock.jsonloses itscontainerscache entry for cli-proxy (e.g. the file is regenerated from scratch, or the cache is pruned), recompiling produces lock files that referencecli-proxy:0.27.11unpinned (tag-only, no@sha256:digest), silently downgrading the digest-pinning guarantee for that one image while its 0.27.11 siblings stay pinned.Reproduction
containersentries from.github/aw/actions-lock.json.gh aw compile.agent/api-proxy/squid0.27.11 images come out digest-pinned (from the baked table);cli-proxy:0.27.11comes out tag-only.Restoring the cache entry manually (digest verified against the registry) and recompiling is stable/idempotent, confirming the cache path works — the gap is only the baked table.
Suggested fix
Include the cli-proxy digest alongside its siblings in the baked default pin table (and perhaps warn when compile emits an unpinned container reference).