hashicorp/vagrant · warning

vagrant.box_outdated

Error message

vagrant.box_outdated

What it means

Warning emitted by `vagrant box outdated` / `vagrant outdated` (plugins/commands/box/command/outdated.rb) after it fetches the box catalog metadata and metadata-compare (md.compatible_version_update?) reports that a newer version exists for the box's provider and architecture. It prints the current vs latest version ('* <name> for <provider> is outdated! Current: X. Latest: Y'). Note the numeric branch: when versions are integers it coerces with to_i, which can mis-compare unless-quoted versions.

Source

Thrown at plugins/commands/box/command/outdated.rb:97

              next
            end

            box_versions = md.versions(provider: box.provider, architecture: box.architecture)

            if box_versions.empty?
              latest_box_version = box_versions.last.to_i
            else
              latest_box_version = box_versions.last
            end

            if !md.compatible_version_update?(box.version, latest_box_version, provider: box.provider, architecture: box.architecture)
              @env.ui.success(I18n.t(
                "vagrant.box_up_to_date",
                name: box.name,
                provider: box.provider,
                version: box.version))
            else
              @env.ui.warn(I18n.t(
                "vagrant.box_outdated",
                name: box.name,
                provider: box.provider,
                current: box.version,
                latest: latest_box_version.to_s,))
            end
          end
        end
      end
    end
  end
end

View on GitHub (pinned to 35f3160f4a)

Solutions

  1. Update the box: run `vagrant box update` in the project (or `vagrant box update --box <name>`) to pull the latest version.
  2. After updating, rebuild the machine to actually use it: `vagrant destroy && vagrant up` (or `vagrant box outdated --global` then prune).
  3. If you intentionally pin an older version, set a version constraint in the Vagrantfile (config.vm.box_version) so the check knows your target, and ignore the warning.
  4. Clean stale versions afterwards with `vagrant box prune` to reclaim disk space.

Example fix

# before
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"        # always floats to latest, warning reappears
end

# after (pinned)
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.box_version = "20240101.0.0"  # pin the version you test against
end
Defensive patterns

Strategy: validation

Validate before calling

# Vagrantfile: pin the tested version so drift is intentional
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.box_version = "20240101.0.0"
end

Prevention

When it happens

Trigger: Running `vagrant box outdated` (or `vagrant outdated` which iterates machines) when the locally installed box version is lower than the latest version advertised in the box's catalog metadata URL for that provider/architecture.

Common situations: Routine drift: a base image team publishes 1.2.x while developers still have 1.1.x cached; boxes installed from a shrunken or custom catalog; version strings in the catalog stored unquoted so YAML parses them as integers and the comparison path differs.

Related errors


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