hashicorp/vagrant · error · Vagrant::Errors::ProviderChecksumMismatch

The checksum of the downloaded provider '%{provider}' did no

Error message

The checksum of the downloaded provider '%{provider}' did not match the
expected value. If the problem persists, please install the provider
manually.

Expected: %{expected}
Received: %{actual}

What it means

Windows twin of the macOS checksum guard: plugins/hosts/windows/cap/provider_install_virtualbox.rb:40 raises Vagrant::Errors::ProviderChecksumMismatch after `Vagrant::Util::Downloader` fetches the VirtualBox installer and `FileChecksum.new(path, Digest::SHA2).checksum` does not equal the pinned SHA256SUM. The package is never executed on mismatch.

Source

Thrown at plugins/hosts/windows/cap/provider_install_virtualbox.rb:40

        def self.provider_install_virtualbox(env)
          path = Dir::Tmpname.create("vagrant-provider-install-virtualbox") {}

          # Prefixed UI for prettiness
          ui = Vagrant::UI::Prefixed.new(env.ui, "")

          # Start by downloading the file using the standard mechanism
          ui.output(I18n.t(
            "vagrant.hosts.windows.virtualbox_install_download",
            version: VERSION))
          ui.detail(I18n.t(
            "vagrant.hosts.windows.virtualbox_install_detail"))
          dl = Vagrant::Util::Downloader.new(URL, path, ui: ui)
          dl.download!

          # Validate that the file checksum matches
          actual = FileChecksum.new(path, Digest::SHA2).checksum
          if actual != SHA256SUM
            raise Vagrant::Errors::ProviderChecksumMismatch,
              provider: "virtualbox",
              actual: actual,
              expected: SHA256SUM
          end

          # Launch it
          ui.output(I18n.t(
            "vagrant.hosts.windows.virtualbox_install_install"))
          ui.detail(I18n.t(
            "vagrant.hosts.windows.virtualbox_install_install_detail"))
          script = File.expand_path("../../scripts/install_virtualbox.ps1", __FILE__)
          result = Vagrant::Util::PowerShell.execute(script, path)
          if result.exit_code != 0
            raise Vagrant::Errors::ProviderInstallFailed,
              provider: "virtualbox",
              stdout: result.stdout,
              stderr: result.stderr
          end

View on GitHub (pinned to 35f3160f4a)

Solutions

  1. Retry the download (re-run `vagrant up`) with stable connectivity
  2. Install VirtualBox manually from virtualbox.org so auto-install is skipped
  3. Update Vagrant so the pinned checksum matches the published artifact
  4. Verify manually: `Get-FileHash -Algorithm SHA256 <file>` and compare to the error's Expected value; fix proxy/AV if they differ
Defensive patterns

Strategy: retry

Try / catch

attempts = 0
begin
  provider_install.call
rescue Vagrant::Errors::ProviderChecksumMismatch => e
  attempts += 1
  warn "checksum mismatch (expected #{e.data[:expected]}, got #{e.data[:actual]})"
  retry if attempts < 2
  raise # then instruct manual install / proxy investigation
end

Prevention

When it happens

Trigger: `vagrant up` on Windows with VirtualBox absent triggers auto-install; the download completes but hashes differently — proxy/AV content rewriting, truncated transfer, or the upstream artifact at the URL differing from what this Vagrant release pinned.

Common situations: Corporate proxies injecting block pages; Defender/AV altering downloads; unstable links truncating large files; stale pinned checksums after VirtualBox re-releases under the same URL.

Related errors


AI-assisted analysis of hashicorp/vagrant@35f3160f4a (2026-08-21). Data as JSON: /api/errors/07746b93da6c9218. Report an issue: GitHub.