jesseduffield/lazygit · error

Could not find any binary at {{.url}}

Error message

Could not find any binary at {{.url}}

What it means

After determining a new version exists, the updater builds the download URL for your OS/arch and issues a HEAD request (verifyResourceFound). If the resource is not reachable/does not exist, it returns CouldNotFindBinaryErr with the URL. The release exists on GitHub but the binary asset for your platform is missing or the check failed.

Source

Thrown at pkg/updates/updates.go:134

			u.Tr.MajorVersionErr, map[string]string{
				"newVersion":     newVersion,
				"currentVersion": currentVersion,
			},
		)
		return "", errors.New(errMessage)
	}

	rawUrl := u.getBinaryUrl(newVersion)

	u.Log.Info("Checking for resource at url " + rawUrl)
	if !u.verifyResourceFound(rawUrl) {
		errMessage := utils.ResolvePlaceholderString(
			u.Tr.CouldNotFindBinaryErr, map[string]string{
				"url": rawUrl,
			},
		)

		return "", errors.New(errMessage)
	}
	u.Log.Info("Verified resource is available, ready to update")

	return newVersion, nil
}

// CheckForNewUpdate checks if there is an available update
func (u *Updater) CheckForNewUpdate(onFinish func(string, error) error, userRequested bool) {
	if !userRequested && u.skipUpdateCheck() {
		return
	}

	newVersion, err := u.checkForNewUpdate()
	if err = onFinish(newVersion, err); err != nil {
		u.Log.Error(err)
	}
}

View on GitHub (pinned to c477a2959b)

Solutions

  1. Retry shortly after — assets can lag the tag while uploads complete.
  2. Open the URL from the error in a browser; if 404, your platform has no prebuilt binary — build from source or use a package manager.
  3. Check proxy/firewall settings if the URL clearly exists but the HEAD request fails.
  4. Install the update manually from the GitHub release page.
Defensive patterns

Strategy: retry

Validate before calling

// Pre-flight the asset before offering the update:
if !u.verifyResourceFound(u.getBinaryUrl(newVersion)) {
    // skip/degrade: no binary for this platform
}

Try / catch

// Retry with backoff — assets lag tags and networks blip:
for attempt := 0; attempt < 3; attempt++ {
    ver, err := updater.getLatestVersionNumberAndCheck()
    if err == nil {
        break
    }
    if strings.Contains(err.Error(), u.Tr.CouldNotFindBinaryErr) || isTransient(err) {
        time.Sleep(time.Duration(attempt+1) * 30 * time.Second)
        continue
    }
    return err
}

Prevention

When it happens

Trigger: getBinaryUrl produces an asset name with no matching file in the release (unsupported GOOS/GOARCH combination), the network blocked the HEAD request, or the release was published without binaries and is still uploading.

Common situations: Running on an uncommon platform (e.g. some ARM variants, FreeBSD); corporate proxy/firewall intercepting GitHub; checking moments after a release was tagged but before assets finished uploading; a release published as source-only.

Related errors


AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15). Data as JSON: /api/errors/29c5022872ad432f. Report an issue: GitHub.