router-for-me/CLIProxyAPI · error
download checksums.txt: %w
Error message
download checksums.txt: %w
What it means
During installRelease, the archive downloaded successfully but downloading the checksums.txt asset failed; the error wraps the underlying cause. Checksum download happens after the archive, so seeing this error means the archive fetch itself was fine.
Source
Thrown at internal/pluginstore/install.go:127
if releaseVersion != version {
return InstallResult{}, fmt.Errorf("release tag %q resolved version %q, want %q", releaseTag, releaseVersion, version)
}
plugin.Version = version
return c.installRelease(ctx, plugin, release, version, options)
}
func (c Client) installRelease(ctx context.Context, plugin Plugin, release Release, version string, options InstallOptions) (InstallResult, error) {
archiveAsset, checksumAsset, errAssets := SelectReleaseAssets(release, plugin.ID, plugin.Version, options.GOOS, options.GOARCH)
if errAssets != nil {
return InstallResult{}, errAssets
}
archiveData, errArchive := c.DownloadAsset(ctx, archiveAsset)
if errArchive != nil {
return InstallResult{}, fmt.Errorf("download %s: %w", archiveAsset.Name, errArchive)
}
checksumData, errChecksum := c.DownloadAsset(ctx, checksumAsset)
if errChecksum != nil {
return InstallResult{}, fmt.Errorf("download checksums.txt: %w", errChecksum)
}
checksums, errParse := ParseChecksums(checksumData)
if errParse != nil {
return InstallResult{}, errParse
}
if errVerify := VerifyChecksum(archiveAsset.Name, archiveData, checksums); errVerify != nil {
return InstallResult{}, errVerify
}
plugin.Version = version
result, errInstall := InstallArchive(archiveData, plugin, options)
if errInstall != nil {
return InstallResult{}, errInstall
}
result.InstallType = InstallTypeGitHubRelease
result.ReleaseTag = strings.TrimSpace(release.TagName)
return result, nil
}
View on GitHub (pinned to 78f0c4079e)
Solutions
- Retry the install — checksum download failures are usually transient
- Add GitHub credentials/token to raise the rate limit in CI
- Confirm checksums.txt still exists on the release
Defensive patterns
Strategy: retry
Try / catch
if err != nil && strings.Contains(err.Error(), "download checksums.txt") {
// retry once with backoff; persistent failure means the release is broken upstream
} Prevention
- Retry the whole install on checksum download failure (idempotent install dir)
- Respect GitHub rate limits / add a token for CI installs
- Never proceed past a missing checksum — verification is mandatory
When it happens
Trigger: InstallVersion/InstallFromManifest when DownloadAsset for the checksums.txt asset returns an error — transient network failure mid-install, rate limiting on the second request, or the asset becoming unavailable between listing and download.
Common situations: Second consecutive unauthenticated GitHub request hitting a rate limit; flaky connection; checksums.txt removed right after the release listing was fetched.
Related errors
- download %s: %w
- download artifact: %w
- response exceeds maximum allowed size of %d bytes
- checksum mismatch for %s
- artifact checksum mismatch
AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15).
Data as JSON: /api/errors/e5b9b80d935a2352.
Report an issue: GitHub.