hashicorp/packer · error

%w The checksum entries of this version carry no plugin prot

Error message

%w
The checksum entries of this version carry no plugin protocol version in their names, so the mirrored version must include its manifest.json, as published on releases.hashicorp.com

What it means

Remote-mirror getter error from resolveProtocolVersion: fetching the version's manifest.json failed, and because the mirror's checksum entries don't embed a protocol version, the manifest is the only way to learn it — so the mirror must serve the manifest exactly as published on releases.hashicorp.com.

Source

Thrown at packer/plugin-getter/remote/getter.go:198

	}
	version := opts.VersionString()
	if _, ok := idx.versions[version]; !ok {
		return nil, "", fmt.Errorf(
			"version %s of %s is not listed in %s/%s/index.json",
			version, idx.pluginType, g.BaseURL, dir)
	}
	return idx, g.BaseURL + "/" + dir + "/" + version, nil
}

// resolveProtocolVersion reads the plugin protocol version from a version's
// manifest.json and caches it for Validate.
func (g *Getter) resolveProtocolVersion(versionURL, pluginType, version string) error {
	if _, ok := g.protVersions[version]; ok {
		return nil
	}
	data, err := g.fetch(versionURL + "/" + pluginType + "_" + version + "_manifest.json")
	if err != nil {
		return fmt.Errorf(
			"%w\nThe checksum entries of this version carry no plugin protocol version in their names, so the mirrored version must include its manifest.json, as published on releases.hashicorp.com", err)
	}
	var meta plugingetter.ManifestMeta
	if err := json.Unmarshal(data, &meta); err != nil {
		return fmt.Errorf("malformed manifest.json for version %s: %w", version, err)
	}
	if meta.Metadata.ProtocolVersion == "" {
		return fmt.Errorf("manifest.json for version %s declares no protocol_version", version)
	}
	if g.protVersions == nil {
		g.protVersions = map[string]string{}
	}
	g.protVersions[version] = "x" + meta.Metadata.ProtocolVersion
	return nil
}

func (g *Getter) Get(what string, opts plugingetter.GetOptions) (io.ReadCloser, error) {
	log.Printf("[TRACE] Getting %s of %s plugin from %s", what, opts.PluginRequirement.Identifier, g.Name)

View on GitHub (pinned to eb36e3c3e4)

Solutions

  1. Add the {plugin}_{version}_manifest.json file to the mirror, matching the official release
  2. Use the official releases.hashicorp.com endpoint instead of the mirror
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at packer/plugin-getter/remote/getter.go:198 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hashicorp/packer@eb36e3c3e4 (2026-09-05). Data as JSON: /api/errors/1eb960a3f388ae33. Report an issue: GitHub.