{"record":{"id":"40eb175aceb48a74","repo":"hashicorp/vagrant","slug":"the-host-implementation-explicitly-specified-in-yo","errorCode":null,"errorMessage":"The host implementation explicitly specified in your Vagrantfile\n(\"%{value}\") could not be found. Please verify that the plugin is\ninstalled which implements this host and that the value you used\nfor `config.vagrant.host` is correct.","messagePattern":"The host implementation explicitly specified in your Vagrantfile\n\\(\"%(.+?)\"\\) could not be found\\. Please verify that the plugin is\ninstalled which implements this host and that the value you used\nfor `config\\.vagrant\\.host` is correct\\.","errorType":"exception","errorClass":"Vagrant::Errors::HostExplicitNotDetected","httpStatus":null,"severity":"error","filePath":"lib/vagrant/environment.rb","lineNumber":594,"sourceCode":"        @host = Host.new(\n          host_klass,\n          Vagrant.plugin(\"2\").manager.hosts,\n          Vagrant.plugin(\"2\").manager.host_capabilities,\n          self)\n      rescue Errors::CapabilityHostNotDetected\n        # If the auto-detect failed, then we create a brand new host\n        # with no capabilities and use that. This should almost never happen\n        # since Vagrant works on most host OS's now, so this is a \"slow path\"\n        klass = Class.new(Vagrant.plugin(\"2\", :host)) do\n          def detect?(env); true; end\n        end\n\n        hosts     = { generic: [klass, nil] }\n        host_caps = {}\n\n        @host = Host.new(:generic, hosts, host_caps, self)\n      rescue Errors::CapabilityHostExplicitNotDetected => e\n        raise Errors::HostExplicitNotDetected, e.extra_data\n      end\n    end\n\n    # This acquires a process-level lock with the given name.\n    #\n    # The lock file is held within the data directory of this environment,\n    # so make sure that all environments that are locking are sharing\n    # the same data directory.\n    #\n    # This will raise Errors::EnvironmentLockedError if the lock can't\n    # be obtained.\n    #\n    # @param [String] name Name of the lock, since multiple locks can\n    #   be held at one time.\n    def lock(name=\"global\", **opts)\n      f = nil\n\n      # If we don't have a block, then locking is useless, so ignore it","sourceCodeStart":576,"sourceCodeEnd":612,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/lib/vagrant/environment.rb#L576-L612","documentation":"Raised as Vagrant::Errors::HostExplicitNotDetected from Vagrant::Environment#host (lib/vagrant/environment.rb:594). When config.vagrant.host is set to an explicit value, Host.new(...) raises CapabilityHostExplicitNotDetected (capability_host.rb:35) because no registered host plugin matches that name, and the environment converts it into this friendlier error carrying the configured value. Note the contrast: plain detection failure (:detect or nil) falls back to a generic capability-less host instead of raising.","triggerScenarios":"A Vagrantfile with config.vagrant.host = :myhost (or \"myhost\") where :myhost is not in Vagrant.plugin(\"2\").manager.hosts — the plugin providing the host is not installed, the name is misspelled, or the host class was removed in a newer Vagrant release. Any command that touches env.host (most commands) triggers it.","commonSituations":"Vagrantfiles copied from machines that had a host-detection plugin installed; pinning config.vagrant.host = :windows on a Linux-only Vagrant install; upgrading Vagrant after deprecated host classes (e.g. old :bsd/:arch variants) were dropped.","solutions":["Remove or comment out the config.vagrant.host line — auto-detection is correct for almost every setup","If the explicit host is required, install the plugin that registers it (vagrant plugin install <name>) and confirm with `vagrant plugin list`","Use the exact registered host symbol (:darwin, :windows, :linux, ...) rather than an invented name","Re-run `vagrant status` to confirm the host now resolves"],"exampleFix":"# before\nconfig.vagrant.host = \"my_custom_host\"   # plugin that defined it is not installed\n\n# after\nconfig.vagrant.host = :darwin             # a registered host — or delete the line to autodetect","handlingStrategy":"validation","validationCode":"host_name = env.vagrantfile.config.vagrant.host\nregistered = Vagrant.plugin(\"2\").manager.hosts.keys\nif host_name && host_name != :detect && !registered.include?(host_name.to_sym)\n  raise ArgumentError, \"config.vagrant.host=#{host_name} unknown; registered: #{registered.inspect}\"\nend","typeGuard":null,"tryCatchPattern":"begin\n  host = env.host\nrescue Vagrant::Errors::HostExplicitNotDetected => e\n  abort \"Host #{e.extra_data[:value]} not found — install its plugin or remove config.vagrant.host\"\nend","preventionTips":["Omit config.vagrant.host and rely on auto-detection unless you have a proven need","Document plugin dependencies (including host plugins) next to Vagrantfiles you share","Re-run `vagrant status` after Vagrant upgrades when the Vagrantfile pins a host"],"tags":["vagrant","host","plugin","configuration","capability-host"],"backgroundTag":"unsupported-config-value","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}