router-for-me/CLIProxyAPI · error
release asset checksums.txt not found
Error message
release asset checksums.txt not found
What it means
The GitHub release contains the platform archive but no asset named exactly 'checksums.txt'. The installer requires a checksums.txt sibling asset to verify the archive before extraction, so its absence aborts the install. This is a release-publishing defect, not a client configuration issue.
Source
Thrown at internal/pluginstore/github.go:322
}
func SelectReleaseAssets(release Release, id, version, goos, goarch string) (ReleaseAsset, ReleaseAsset, error) {
archiveName := ArchiveName(id, version, goos, goarch)
var archiveAsset ReleaseAsset
var checksumAsset ReleaseAsset
for _, asset := range release.Assets {
switch strings.TrimSpace(asset.Name) {
case archiveName:
archiveAsset = asset
case "checksums.txt":
checksumAsset = asset
}
}
if strings.TrimSpace(archiveAsset.Name) == "" {
return ReleaseAsset{}, ReleaseAsset{}, fmt.Errorf("release asset %s not found", archiveName)
}
if strings.TrimSpace(checksumAsset.Name) == "" {
return ReleaseAsset{}, ReleaseAsset{}, fmt.Errorf("release asset checksums.txt not found")
}
return archiveAsset, checksumAsset, nil
}
func ArchiveName(id, version, goos, goarch string) string {
return fmt.Sprintf(
"%s_%s_%s_%s.zip",
strings.TrimSpace(id),
strings.TrimSpace(version),
strings.TrimSpace(goos),
strings.TrimSpace(goarch),
)
}
View on GitHub (pinned to 78f0c4079e)
Solutions
- Check the release page and confirm an asset named exactly 'checksums.txt' exists
- If it is named differently, fix the plugin's release workflow to upload checksums.txt
- Wait for the release publish to complete before installing
- As a last resort for trusted internal use, publish your own fork/release including checksums.txt
Defensive patterns
Strategy: validation
Validate before calling
hasChecksum := false
for _, a := range release.Assets {
if strings.TrimSpace(a.Name) == "checksums.txt" { hasChecksum = true; break }
}
if !hasChecksum { return errors.New("release missing checksums.txt; refuse install") } Try / catch
if err != nil && strings.Contains(err.Error(), "checksums.txt not found") {
// report upstream publishing defect; do not bypass verification
} Prevention
- Automate a release-asset audit in CI: archive per platform + checksums.txt
- Never skip checksum verification to work around this error
- Track plugin releases you depend on so publishing regressions are caught early
When it happens
Trigger: SelectReleaseAssets / installRelease runs on a release where the checksums.txt asset was not uploaded, renamed (e.g. 'checksum.txt', 'SHA256SUMS'), or is still uploading (draft release in progress).
Common situations: Plugin maintainer's release workflow changed or forgot to attach checksums.txt; asset named differently in a forked plugin; installing from an in-progress/draft release.
Related errors
- release asset %s not found
- download %s: %w
- download checksums.txt: %w
- weight must not exceed %d
- weight must be an integer: %w
AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15).
Data as JSON: /api/errors/dea503d77574cac9.
Report an issue: GitHub.