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
- 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
- Password, passphrase and/or username wrong
- Failed to retrieve version information
- You already have the latest version
- New version ({{.newVersion}}) has non-backwards compatible c
- GraphQL query failed with status: %s. Body: %s
AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15).
Data as JSON: /api/errors/29c5022872ad432f.
Report an issue: GitHub.