jesseduffield/lazygit · error
Could not find any binary at
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.
Solutions
- Retry shortly after — assets can lag the tag while uploads complete.
- 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.
- Check proxy/firewall settings if the URL clearly exists but the HEAD request fails.
- 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
- Retry a few minutes later if a release just went out — binaries upload after tagging.
- For exotic platforms, script your own build-from-source instead of relying on auto-update.
- Ensure GitHub release domains are reachable from your network/proxy.
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
- Failed to retrieve version information
- GraphQL query failed with status
- New version ( }) has non-backwards compatible changes…
- Password, passphrase and/or username wrong
- You already have the latest version
AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15).
Data as JSON: /api/errors/29c5022872ad432f.
Report an issue: GitHub.
Appendix: 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)