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

  1. Retry the install — checksum download failures are usually transient
  2. Add GitHub credentials/token to raise the rate limit in CI
  3. 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

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


AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15). Data as JSON: /api/errors/e5b9b80d935a2352. Report an issue: GitHub.