hashicorp/packer · error

The post-processor %s is unknown by Packer, and is likely pa

Error message

The post-processor %s is unknown by Packer, and is likely part of a plugin that is not installed.
You may find the needed plugin along with installation instructions documented on the Packer integrations page.

https://developer.hashicorp.com/packer/integrations?filter=%s

What it means

Thrown by Core.Build in packer/core.go:536 when a template declares a post-processor whose type is not registered in the loaded PluginConfig. Packer cannot find a plugin binary providing that post-processor, so the build cannot be constructed. The message includes an integrations-page link filtered on the plugin prefix (the part before the first '-').

Source

Thrown at packer/core.go:536

	for _, rawPs := range c.Template.PostProcessors {
		current := make([]CoreBuildPostProcessor, 0, len(rawPs))
		for _, rawP := range rawPs {
			if rawP.Skip(rawName) {
				continue
			}
			// -except skips post-processor & build
			foundExcept := false
			for _, except := range c.except {
				if except != "" && except == rawP.Name {
					foundExcept = true
				}
			}
			if foundExcept {
				break
			}

			if !c.components.PluginConfig.PostProcessors.Has(rawP.Type) {
				err := fmt.Errorf(
					"The post-processor %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+
						"You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+
						"https://developer.hashicorp.com/packer/integrations?filter=%s",
					rawP.Type,
					strings.Split(rawP.Type, "-")[0],
				)

				if sugg := didyoumean.NameSuggestion(rawP.Type, c.components.PluginConfig.PostProcessors.List()); sugg != "" {
					err = fmt.Errorf("Did you mean to use %q?", sugg)
				}

				return nil, err
			}

			// Get the post-processor
			postProcessor, err := c.components.PluginConfig.PostProcessors.Start(rawP.Type)
			if err != nil {
				return nil, fmt.Errorf(

View on GitHub (pinned to eb36e3c3e4)

Solutions

  1. Run `packer init <template>` to install plugins declared in required_plugins, or run `packer plugins install <source>` for the missing plugin
  2. Check the integrations page link in the error for the correct plugin and its install instructions
  3. Verify the post-processor type spelling in the HCL template (check for typos)
  4. If following older docs, replace a removed built-in post-processor (e.g. vagrant, checksum) with the equivalent community plugin

Example fix

// before (template references plugin not installed)
post-processors {
  type = "vagrant"
}
// after (add to packer block and run packer init)
packer {
  required_plugins {
    vagrant = { version = ">= 1.0.0", source = "github.com/hashicorp/vagrant" }
  }
}
Defensive patterns

Strategy: validation

Validate before calling

# before running a build, verify the plugin is present
packer init .
packer plugins installed
grep -R 'post-processor\|post-processors' *.pkr.hcl

Prevention

When it happens

Trigger: Calling Core.Build (directly or via GetBuilds/packer validate/packer build) while c.components.PluginConfig.PostProcessors.Has(rawP.Type) returns false — i.e. the template's post-processor 'type' matches no discovered plugin, and no close NameSuggestion match exists.

Common situations: Using a built-in-legacy post-processor name that was removed or renamed in Packer 1.13+ (plugins were split out of core); forgetting `packer init` / `required_plugins` so the plugin binary was never downloaded; plugin installed under a different name than the template references; typo in the type string.

Related errors


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