hashicorp/packer · error
no protocol version known for version %s
Error message
no protocol version known for version %s
What it means
Validate checks that the plugin binary entry being installed speaks a protocol version Packer understands. Before consulting the cached table, it requires the entry to carry a protocol version at all; this error fires when entry.ProtVersion is empty, meaning the version's manifest.json carried no plugin protocol version in its checksum entry names, so compatibility cannot be verified. The plugin release is malformed; pick another plugin version or reinstall.
Source
Thrown at packer/plugin-getter/remote/getter.go:312
return nil
}
func (g *Getter) Validate(opt plugingetter.GetOptions, expectedVersion string, installOpts plugingetter.BinaryInstallationOptions, entry *plugingetter.ChecksumFileEntry) error {
expectedBinVersion := "v" + expectedVersion
if entry.BinVersion != expectedBinVersion {
return fmt.Errorf("wrong version: %s does not match expected %s", entry.BinVersion, expectedBinVersion)
}
if entry.Os != installOpts.OS || entry.Arch != installOpts.ARCH {
return fmt.Errorf("wrong system, expected %s_%s", installOpts.OS, installOpts.ARCH)
}
if entry.ProtVersion == "" {
// The protocol version was resolved from the version's manifest.json
// when its checksum file was fetched.
pv, ok := g.protVersions[opt.VersionString()]
if !ok {
return fmt.Errorf("no protocol version known for version %s", expectedVersion)
}
entry.ProtVersion = pv
}
return installOpts.CheckProtocolVersion(entry.ProtVersion)
}
func (g *Getter) ExpectedFileName(pr *plugingetter.Requirement, version string, entry *plugingetter.ChecksumFileEntry, _ string) string {
// The filename is rebuilt from the validated entry fields; the name the
// remote source reported is never used, so it cannot traverse paths.
return strings.Join([]string{
"packer-plugin-" + pr.Identifier.Name(),
entry.BinVersion,
entry.ProtVersion,
entry.Os,
entry.Arch + entry.Ext,
}, "_")
}View on GitHub (pinned to eb36e3c3e4)
Solutions
- Ensure the mirror serves the release's manifest.json (which carries protocol_version)
- Use releases.hashicorp.com assets whose names embed the protocol version
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at packer/plugin-getter/remote/getter.go:312 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/1acddf35b1843179.
Report an issue: GitHub.