hasura/graphql-engine · warning

update check request: %w

Error message

update check request: %w

What it means

getLatestVersion performs the HTTP GET against the update-check URL and wraps transport-level failures. This means DNS resolution failure, connection refused/timeout, TLS errors, or a proxy blocking the request - anything before a response is received.

Source

Thrown at cli/update/update.go:32

	"time"

	"github.com/Masterminds/semver/v3"
	"github.com/hasura/graphql-engine/cli/v2/internal/errors"
)

const updateCheckURL = "https://releases.hasura.io/graphql-engine?agent=cli"

type updateCheckResponse struct {
	Latest     *semver.Version `json:"latest"`
	PreRelease *semver.Version `json:"prerelease"`
}

func getLatestVersion() (*semver.Version, *semver.Version, error) {
	var op errors.Op = "update.getLatestVersion"

	res, err := http.Get(updateCheckURL)
	if err != nil {
		return nil, nil, errors.E(op, fmt.Errorf("update check request: %w", err))
	}

	defer res.Body.Close()

	var response updateCheckResponse

	err = json.NewDecoder(res.Body).Decode(&response)
	if err != nil {
		return nil, nil, errors.E(op, fmt.Errorf("decoding update check response: %w", err))
	}

	if response.Latest == nil && response.PreRelease == nil {
		return nil, nil, errors.E(
			op,
			fmt.Errorf("expected version info not found at %s", updateCheckURL),
		)
	}

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Check network/proxy configuration (HTTP_PROXY/HTTPS_PROXY) and retry when online
  2. If running offline or in CI, disable update checks via config/env so HasUpdate is not called
  3. Verify the update endpoint is reachable: curl -I the updateCheckURL from the same environment
  4. Update CA certificates if TLS handshake is the underlying cause

Example fix

// before
latest, pre, err := update.HasUpdate()
if err != nil { return err }

// after
latest, pre, err := update.HasUpdate()
if err != nil {
    log.Printf("update check skipped: %v", err) // non-fatal, degrade gracefully
}
Defensive patterns

Strategy: fallback

Try / catch

if _, _, err := update.HasUpdate(); err != nil {
    // treat as 'no update info': log at debug level and continue
    log.Printf("update check unavailable: %v", err)
}

Prevention

When it happens

Trigger: Calling update.HasUpdate() with no internet access, a firewall/proxy blocking the update endpoint, broken DNS, or an expired TLS root store in old runtimes.

Common situations: CI runners or air-gapped environments with egress restrictions, corporate proxies requiring configuration, captive portals, or intermittent network drops during a CLI run.

Related errors


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/8f7f5eea87b52bd3. Report an issue: GitHub.