Skip to content

v2.3.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Oct 01:18
· 438 commits to main since this release
d983429

v2.3.0-rc.2

[2.3.0-rc.2] - 2026-10-02

Changed

  • Building from source now needs Go 1.27. go.mod's go line moves from 1.26.0 to 1.27.0 because sigstore/sigstore v1.10.10 requires it, and the toolchain line moves to go1.27.1. Release binaries and images have been built with Go 1.27 since 2.2.1, so this only affects people who compile sockguard themselves. scripts/local-fuzz.sh --docker defaults to golang:1.27.1, because the old golang:1.26.2 image can no longer build the module.

  • BuildKit mediation runs on net/http's HTTP/2 instead of golang.org/x/net/http2. x/net v0.59.0 deprecates the per-connection API (http2.Server.ServeConn, http2.Transport.NewClientConn) that both tunnel legs and the frontend runner were built on, and under Go 1.27 that API was already a wrapper around net/http. The new internal/h2conn package serves and dials prior-knowledge HTTP/2 on an already-established connection with http.Server and http.Transport, so golang.org/x/net is now only an indirect dependency. Stream limits, idle and ping timeouts, the 10 second preface timeout, denial handling and audit events are unchanged. Two edges differ: sockguard waits for the peer's client preface before sending its own SETTINGS (every gRPC client sends the preface first), and GODEBUG=http2server=0 now turns off the server side of a mediated tunnel, the way http2client=0 already turned off the client side.

  • Go dependency bumps. go-containerregistry v0.21.9 to v0.22.1, sigstore/sigstore v1.10.9 to v1.10.10 and golang.org/x/net v0.58.0 to v0.59.0, with their indirect updates (golang.org/x/{crypto,mod,sync,sys,term,text}, docker/cli, go-securesystemslib, klauspost/compress). What changes for sockguard: go-containerregistry now parses sha384 and sha512 digest references and single-character repository names, so a remap_image rule or result of that shape passes the reference check it used to fail, and image-trust resolution no longer stops at a registry that answers with a sha512 manifest digest (a trusted signature still has to bind that digest). Its redirect and token-realm guards also reject non-canonical private IP literals. sigstore's key loader accepts ML-DSA public keys. The key fingerprint calls x509.MarshalPKIXPublicKey directly now that sigstore deprecates its one-line wrapper.

  • The Docker builder image moves from golang:1.27.0-alpine3.23 to golang:1.27.1-alpine3.23, pinned by digest, so the image and go.mod's toolchain line name the same Go patch.

  • Security: Gosec SAST runs the gosec 2.29.0 image directly. The gosec action's v2.29.0 tag still runs the 2.28.0 image, which is built with Go 1.26 and sets GOTOOLCHAIN=local. Against a module whose go line is 1.27 it loads no packages and exits 1 with an empty SARIF and no error in the log, which is how the check failed on the Renovate PR that first raised the go line. 2.29.0 is the first image built with Go 1.27.

  • The validated Docker Engine API ceiling moves from 1.55 to 1.56, which turns the monthly Upstream API Watch green again. The 1.56 changelog adds a GET /containers/json annotation filter and HostConfig.Umask on POST /containers/create. Neither needs a filter change: the annotation filter can only narrow a list that owner and visibility filtering have already scoped, and a umask grants no host access, mounts or capabilities, so the create inspector passes it through like any other field it does not gate.

Fixed

  • The website and docs builds no longer fetch Google Fonts. IBM Plex is now self-hosted with next/font/local, so a build no longer fails when Google answers the font request with URLs Turbopack can't resolve.