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
- Add the {plugin}_{version}_manifest.json file to the mirror, matching the official release
- 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.