{"record":{"id":"8085621f90a89978","repo":"hashicorp/vagrant","slug":"name-is-not-a-known-provisioner-please-speci","errorCode":null,"errorMessage":"'%{name}' is not a known provisioner. Please specify a valid\nprovisioner.","messagePattern":"'%(.+?)' is not a known provisioner\\. Please specify a valid\nprovisioner\\.","errorType":"exception","errorClass":"Vagrant::Errors::ProvisionerFlagInvalid","httpStatus":null,"severity":"error","filePath":"plugins/commands/up/start_mixins.rb","lineNumber":50,"sourceCode":"      # This validates the provisioner flags and raises an exception\n      # if there are invalid ones.\n      def validate_provisioner_flags!(options, argv)\n        if options[:provision_types].nil?\n          return\n        end\n\n        provisioner_names = Set.new\n        with_target_vms(argv) do |machine|\n          machine.config.vm.provisioners.map(&:name).each do |name|\n            provisioner_names.add(name)\n          end\n        end\n\n        if (provisioner_names & options[:provision_types]).empty?\n          (options[:provision_types] || []).each do |type|\n              klass = Vagrant.plugin(\"2\").manager.provisioners[type]\n              if !klass\n                raise Vagrant::Errors::ProvisionerFlagInvalid,\n                  name: type.to_s\n              end\n          end\n        end\n      end\n    end\n  end\nend\n","sourceCodeStart":32,"sourceCodeEnd":59,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/plugins/commands/up/start_mixins.rb#L32-L59","documentation":"`vagrant up --provision-with X` (and reload/resume) raises ProvisionerFlagInvalid when X matches neither a provisioner name configured in the Vagrantfile nor a provisioner type registered by installed plugins. The check collects provisioner names across the targeted machines; if none of the flag values intersect those names, each value is looked up in the plugin manager's provisioner registry and any miss raises this error.","triggerScenarios":"A typo like `--provision-with shl`; a plugin-provided type (e.g. chef_solo via plugin) whose plugin is not installed; passing a provisioner name defined only in a different machine's config while targeting machines that lack it.","commonSituations":"Custom-named provisioners (`config.vm.provision 'bootstrap', type: 'shell'`) where scripts pass the wrong identifier; workstations missing team plugins; docs drift after provisioners were renamed.","solutions":["Use the exact provisioner name from the Vagrantfile's `config.vm.provision \"<name>\"` (or its type, e.g. `shell`)","Fix typos in the --provision-with value","If the type comes from a plugin, install it (`vagrant plugin install ...`) and confirm with `vagrant plugin list`"],"exampleFix":"# before\nconfig.vm.provision 'bootstrap', type: 'shell' do |p| ... end\n# vagrant up --provision-with boostrap   # typo\n\n# after\n# vagrant up --provision-with bootstrap","handlingStrategy":"validation","validationCode":"declared = File.readlines('Vagrantfile').select { |l| l.include?('vm.provision') }\nabort \"no provisioner named #{flag} in this Vagrantfile\" unless declared.any? { |l| l.include?(flag) }\nsystem(\"vagrant up --provision-with #{flag}\")","typeGuard":null,"tryCatchPattern":"begin\n  command.execute\nrescue Vagrant::Errors::ProvisionerFlagInvalid => e\n  warn \"#{e.extra_data[:name]} is not a known provisioner; check Vagrantfile names\"\n  exit 1\nend","preventionTips":["Extract --provision-with values from the same Vagrantfile source rather than hardcoding them","Name provisioners explicitly (`config.vm.provision 'bootstrap', type: 'shell'`) and reference the names in scripts","Verify plugin-provided provisioners with `vagrant plugin list` before using their type names"],"tags":["vagrant","provisioning","cli","typo","plugins"],"backgroundTag":"unknown-provisioner-name","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}