ipfs/kubo · error

decoding GitHub release: %w

Error message

decoding GitHub release: %w

What it means

Fired by githubReleaseByTag when the HTTP response body from the GitHub API release-by-tag endpoint cannot be decoded into the ghRelease struct (malformed JSON, unexpected response shape, or a truncated/error body). It wraps the underlying decode error and aborts the release lookup used by the self-update flow.

Source

Thrown at core/commands/update_github.go:182

		if len(filtered) >= count {
			break
		}
	}
	return filtered, nil
}

// githubReleaseByTag fetches a single release by its git tag.
func githubReleaseByTag(ctx context.Context, tag string) (*ghRelease, error) {
	url := fmt.Sprintf("%s/tags/%s", githubReleaseBaseURL(), tag)
	resp, err := githubGet(ctx, url)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	var rel ghRelease
	if err := json.NewDecoder(resp.Body).Decode(&rel); err != nil {
		return nil, fmt.Errorf("decoding GitHub release: %w", err)
	}
	return &rel, nil
}

// findReleaseAsset locates the platform-appropriate asset in a release.
// It fails immediately with a clear message if:
//   - the release tag does not exist on GitHub (typo, unreleased version)
//   - the release exists but has no binary for this OS/arch (CI still building)
func findReleaseAsset(ctx context.Context, tag string) (*ghRelease, *ghAsset, error) {
	rel, err := githubReleaseByTag(ctx, tag)
	if err != nil {
		return nil, nil, fmt.Errorf("release %s not found on GitHub: %w", tag, err)
	}

	want := assetNameForPlatformTag(tag)
	for i := range rel.Assets {
		if rel.Assets[i].Name == want {
			return rel, &rel.Assets[i], nil

View on GitHub (pinned to 329838acdf)

Solutions

  1. Retry the command; transient API/rate-limit failures are typical
  2. Confirm the tag exists on github.com/ipfs/kubo/releases
  3. Check proxy or captive-portal interference if persistent
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at core/commands/update_github.go:182 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03). Data as JSON: /api/errors/1aa6314ddfa0f73b. Report an issue: GitHub.