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

  1. Ensure the mirror serves the release's manifest.json (which carries protocol_version)
  2. 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.