{"record":{"id":"1acddf35b1843179","repo":"hashicorp/packer","slug":"no-protocol-version-known-for-version-s","errorCode":null,"errorMessage":"no protocol version known for version %s","messagePattern":"no protocol version known for version (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packer/plugin-getter/remote/getter.go","lineNumber":312,"sourceCode":"\n\treturn nil\n}\n\nfunc (g *Getter) Validate(opt plugingetter.GetOptions, expectedVersion string, installOpts plugingetter.BinaryInstallationOptions, entry *plugingetter.ChecksumFileEntry) error {\n\texpectedBinVersion := \"v\" + expectedVersion\n\tif entry.BinVersion != expectedBinVersion {\n\t\treturn fmt.Errorf(\"wrong version: %s does not match expected %s\", entry.BinVersion, expectedBinVersion)\n\t}\n\tif entry.Os != installOpts.OS || entry.Arch != installOpts.ARCH {\n\t\treturn fmt.Errorf(\"wrong system, expected %s_%s\", installOpts.OS, installOpts.ARCH)\n\t}\n\n\tif entry.ProtVersion == \"\" {\n\t\t// The protocol version was resolved from the version's manifest.json\n\t\t// when its checksum file was fetched.\n\t\tpv, ok := g.protVersions[opt.VersionString()]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"no protocol version known for version %s\", expectedVersion)\n\t\t}\n\t\tentry.ProtVersion = pv\n\t}\n\n\treturn installOpts.CheckProtocolVersion(entry.ProtVersion)\n}\n\nfunc (g *Getter) ExpectedFileName(pr *plugingetter.Requirement, version string, entry *plugingetter.ChecksumFileEntry, _ string) string {\n\t// The filename is rebuilt from the validated entry fields; the name the\n\t// remote source reported is never used, so it cannot traverse paths.\n\treturn strings.Join([]string{\n\t\t\"packer-plugin-\" + pr.Identifier.Name(),\n\t\tentry.BinVersion,\n\t\tentry.ProtVersion,\n\t\tentry.Os,\n\t\tentry.Arch + entry.Ext,\n\t}, \"_\")\n}","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/hashicorp/packer/blob/eb36e3c3e48a036f3e8cc94087636ee72e1303c9/packer/plugin-getter/remote/getter.go#L294-L330","documentation":"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.","triggerScenarios":"Thrown at packer/plugin-getter/remote/getter.go:312 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"eb36e3c3e48a036f3e8cc94087636ee72e1303c9","analyzedAt":"2026-09-05T13:20:43.127Z","contentChangedAt":"2026-09-05T13:20:43.127Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}