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

  1. Correct the post-processor type spelling/casing in the template.
  2. Run `packer init .` to fetch required third-party plugins.
  3. Confirm the plugin binary is installed under the expected PACKER_PLUGIN_PATH name.
  4. 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

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


AI-assisted analysis of hashicorp/packer@eb36e3c3e4 (2026-09-05). Data as JSON: /api/errors/6479595c3677ec94. Report an issue: GitHub.