{"record":{"id":"d3eef75326f1648d","repo":"hashicorp/vagrant","slug":"you-requested-to-remove-the-box-name-version-d3eef7","errorCode":null,"errorMessage":"You requested to remove the box '%{name}' version '%{version}'. This\nbox has multiple providers. You must explicitly select a single provider to\nremove with `--provider` or specify the `--all-providers` flag to remove\nall providers.\n\nAvailable providers: %{providers}","messagePattern":"You requested to remove the box '%(.+?)' version '%(.+?)'\\. This\nbox has multiple providers\\. You must explicitly select a single provider to\nremove with `--provider` or specify the `--all-providers` flag to remove\nall providers\\.\n\nAvailable providers: %(.+?)","errorType":"exception","errorClass":"Vagrant::Errors::BoxRemoveMultiProvider","httpStatus":null,"severity":"error","filePath":"lib/vagrant/action/builtin/box_remove.rb","lineNumber":68,"sourceCode":"              if !box_info.keys.include?(box_version)\n                raise Errors::BoxRemoveVersionNotFound,\n                  name: box_name,\n                  version: box_version,\n                  versions: box_info.keys.sort.map { |k| \" * #{k}\" }.join(\"\\n\")\n              else\n                box_info.delete_if { |k, _| k != box_version }\n              end\n            end\n\n            # Only a single version remains\n            box_version = box_info.keys.first\n\n            # Further filtering only matters if not removing all providers\n            if !box_remove_all_providers\n              # If no provider was given, check if there are more\n              # than a single provider for the version\n              if !box_provider && box_info.values.first.size > 1\n                raise Errors::BoxRemoveMultiProvider,\n                  name: box_name,\n                  version: box_version,\n                  providers: box_info.values.first.keys.map(&:to_s).sort.join(\", \")\n              end\n\n              # If a provider was given, check the version has it\n              if box_provider\n                if !box_info.values.first.key?(box_provider)\n                  raise Errors::BoxRemoveProviderNotFound,\n                    name: box_name,\n                    version: box_version,\n                    provider: box_provider.to_s,\n                    providers: box_info.values.first.keys.map(&:to_s).sort.join(\", \")\n                else\n                  box_info.values.first.delete_if { |k, _| k.to_s != box_provider.to_s }\n                end\n              end\n","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/lib/vagrant/action/builtin/box_remove.rb#L50-L86","documentation":"Errors::BoxRemoveMultiProvider is raised when, after version filtering, the target version of the box exists under multiple providers, no --provider was given, and --all-providers was not requested. Vagrant will not guess which provider's files to delete.","triggerScenarios":"box_remove_all_providers is falsy, box_provider is nil, and box_info.values.first.size > 1 (more than one provider key for the remaining single version); the raise carries name, version, and the sorted provider names joined with ', '.","commonSituations":"A box added for both virtualbox and vmware_workstation on one machine; switching hypervisors left dual entries; cleanup scripts assuming a single provider per box.","solutions":["Choose a provider from the error's list: vagrant box remove NAME --provider PROVIDER [--box-version V].","Remove every provider for the version: vagrant box remove NAME --all-providers.","Use 'vagrant box list' to see provider columns before scripting removal."],"exampleFix":"# before\nvagrant box remove ubuntu/jammy64 --box-version 202303.0.0   # has virtualbox + vmware\n\n# after (one provider)\nvagrant box remove ubuntu/jammy64 --box-version 202303.0.0 --provider virtualbox\n\n# after (all providers)\nvagrant box remove ubuntu/jammy64 --box-version 202303.0.0 --all-providers","handlingStrategy":"validation","validationCode":"providers = env.box_collection.all\n  .select { |n, v, *, | n == box_name && v == box_version }\n  .map { |*, p, | p }.uniq\nif providers.size > 1\n  remove(box_name, box_version: box_version, provider: providers.first)\nend","typeGuard":"def single_provider_version?(collection, name, version)\n  collection.all\n    .select { |n, v, *, | n == name && v == version }\n    .map { |*, p, | p }.uniq.size == 1\nend","tryCatchPattern":"begin\n  env.cli(\"box\", \"remove\", name, \"--box-version\", ver)\nrescue Vagrant::Errors::BoxRemoveMultiProvider => e\n  # e.extra_data[:providers] lists the choices, comma-separated\n  env.cli(\"box\", \"remove\", name, \"--box-version\", ver, \"--provider\", e.extra_data[:providers].split(\", \").first)\nend","preventionTips":["Include --provider in scripted removals whenever a box may exist under multiple hypervisors.","Review 'vagrant box list' provider columns before writing cleanup automation."],"tags":["vagrant","box-remove","provider","disambiguation"],"backgroundTag":"ambiguous-resource-disambiguation","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}