Summary
The agent and cli-proxy container images pin gh CLI 2.96.0, which embeds grpc v1.81.1 — flagged by GHSA-hrxh-6v49-42gf (google.golang.org/grpc, Critical / CVSS 9.1, fixed in v1.82.1). This finding is currently suppressed via a .grype.yaml ignore entry as a documented risk acceptance.
This issue tracks replacing that risk acceptance with a real fix once upstream gh ships the patched grpc.
Why it's currently accepted (not fixed)
GHSA-hrxh-6v49-42gf covers three server-side grpc-go issues:
- xDS RBAC authorization bypass (fail-open on unsupported matchers)
- HTTP/2 rapid-reset mitigation bypass (DoS)
- panic on crafted xDS RBAC policies
grpc is a transitive dependency compiled into the gh client binary. gh does not run a gRPC server, use xDS RBAC, or accept HTTP/2 from untrusted peers, so none of the vulnerable code paths are reachable in our usage. The finding is present but not exploitable here.
Why we can't fix it today
gh 2.96.0 is the latest tagged release (2026-07-02) and still pins grpc v1.81.1 (confirmed in its go.mod).
- Building
gh from unreleased trunk would ship an untagged, non-official binary — a worse supply-chain tradeoff than a non-reachable finding.
- The fix is already merged on
gh trunk (go.sum on trunk shows grpc v1.82.1), so the next tagged release will carry it.
Action when gh >= v2.97.0 (grpc >= 1.82.1) is released
References
Summary
The agent and cli-proxy container images pin
ghCLI 2.96.0, which embeds grpcv1.81.1— flagged by GHSA-hrxh-6v49-42gf (google.golang.org/grpc, Critical / CVSS 9.1, fixed inv1.82.1). This finding is currently suppressed via a.grype.yamlignoreentry as a documented risk acceptance.This issue tracks replacing that risk acceptance with a real fix once upstream
ghships the patched grpc.Why it's currently accepted (not fixed)
GHSA-hrxh-6v49-42gf covers three server-side grpc-go issues:
grpc is a transitive dependency compiled into the
ghclient binary.ghdoes not run a gRPC server, use xDS RBAC, or accept HTTP/2 from untrusted peers, so none of the vulnerable code paths are reachable in our usage. The finding is present but not exploitable here.Why we can't fix it today
gh2.96.0 is the latest tagged release (2026-07-02) and still pins grpcv1.81.1(confirmed in itsgo.mod).ghfrom unreleased trunk would ship an untagged, non-official binary — a worse supply-chain tradeoff than a non-reachable finding.ghtrunk (go.sumontrunkshows grpcv1.82.1), so the next tagged release will carry it.Action when gh >= v2.97.0 (grpc >= 1.82.1) is released
gh=/GH_VERSIONpin incontainers/agent/Dockerfile(apt) — currentlygh=2.96.0GH_VERSIONpin + per-archGH_SHA256incontainers/cli-proxy/Dockerfile— currently2.96.0ghrelease'sgo.modpins grpc>= 1.82.1GHSA-hrxh-6v49-42gfentry from.grype.yamlReferences
go.mod: https://github.com/cli/cli/blob/v2.96.0/go.mod (grpcv1.81.1)go.sum: grpcv1.82.1(fix merged, awaiting release).grype.yaml