hashicorp/packer · error
Unknown post-processor %s
Error message
Unknown post-processor %s
What it means
MapOfPostProcessor.Start returns this error when the requested post-processor name is not present in the registry map. It means Packer resolved a post-processor reference in the build pipeline to nothing registered — usually a typo, a missing plugin install, or a builtin renamed/removed.
Source
Thrown at packer/maps.go:53
}
return res
}
type MapOfPostProcessor map[string]func() (packersdk.PostProcessor, error)
func (mopp MapOfPostProcessor) Has(postProcessor string) bool {
_, res := mopp[postProcessor]
return res
}
func (mopp MapOfPostProcessor) Set(postProcessor string, starter func() (packersdk.PostProcessor, error)) {
mopp[postProcessor] = starter
}
func (mopp MapOfPostProcessor) Start(postProcessor string) (packersdk.PostProcessor, error) {
p, found := mopp[postProcessor]
if !found {
return nil, fmt.Errorf("Unknown post-processor %s", postProcessor)
}
return p()
}
func (mopp MapOfPostProcessor) List() []string {
res := []string{}
for k := range mopp {
res = append(res, k)
}
return res
}
type MapOfBuilder map[string]func() (packersdk.Builder, error)
func (mob MapOfBuilder) Has(builder string) bool {
_, res := mob[builder]
return res
}View on GitHub (pinned to eb36e3c3e4)
Solutions
- Correct the post-processor type spelling/casing in the template.
- Run `packer init .` to fetch required third-party plugins.
- Confirm the plugin binary is installed under the expected PACKER_PLUGIN_PATH name.
- In embedded Go usage, ensure Set() was called for that name before Start().
Example fix
// before
post-processor "checksum-manifest" { ... }
// after
post-processor "manifest" {
output = "packer-manifest.json"
} Defensive patterns
Strategy: validation
Validate before calling
if !postProcessors.Has(name) {
return fmt.Errorf("post-processor %q not registered; known: %v", name, postProcessors.List())
}
pp, err := postProcessors.Start(name) Try / catch
if err != nil {
if strings.Contains(err.Error(), "Unknown post-processor") { /* re-run packer init or fix template */ }
} Prevention
- Run `packer validate` to catch unknown post-processor types early.
- Keep required_plugins in sync with the post-processors referenced in templates.
- Pin plugin versions to avoid removals/renames across releases.
When it happens
Trigger: Calling Start(postProcessor) with an unregistered name: a post-processor block type misspelled (e.g. "artificat" instead of "artifact"), a third-party post-processor plugin not installed, or invoking Start before the corresponding Set() registration.
Common situations: Typo in post-processor type in the template; `packer init` not run after adding a required_plugin; using a community plugin whose binary isn't on the plugin path; referencing a post-processor removed in a newer Packer release.
Related errors
- Unknown provisioner %s
- Unknown builder %s
- Unknown data source %s
- Can only have 1 input file when not using tar/zip. Found %d
- The `bucket_name` must be specified
AI-assisted analysis of hashicorp/packer@eb36e3c3e4 (2026-09-05).
Data as JSON: /api/errors/6479595c3677ec94.
Report an issue: GitHub.