hashicorp/vagrant · warning

cloud_command.box.show_filter_empty

Error message

cloud_command.box.show_filter_empty

What it means

Warning plus failure exit from `vagrant cloud box show` (plugins/commands/cloud/box/show.rb) when filter options (--providers, --architectures, --versions) reduce the provider list to empty. It prints 'No matches found for org/box' with the applied filters ('N/A' for unset ones) and returns status 1; it is distinct from a network/API failure, which goes through the rescue VagrantCloud::Error branch instead.

Source

Thrown at plugins/commands/cloud/box/show.rb:114

                    v.providers.any? { |p|
                      options[:architectures].include?(p.architecture)
                    }
                  }
                else
                  item.providers.any? { |p|
                    options[:architectures].include?(p.architecture)
                  }
                end
              } if !Array(options[:architectures]).empty?

              if !list.empty?
                list.each do |b|
                  format_box_results(b, @env, options.slice(:providers, :architectures))
                  @env.ui.output("")
                end
                0
              else
                @env.ui.warn(I18n.t("cloud_command.box.show_filter_empty",
                  org: org,
                  box_name: box_name,
                  architectures: Array(options[:architectures]).empty? ? "N/A" : Array(options[:architectures]).join(", "),
                  providers: Array(options[:providers]).empty? ? "N/A" : Array(options[:providers]).join(", "),
                  versions: Array(options[:versions]).empty? ? "N/A" : Array(options[:versions]).join(", ")
                ))
                1
              end
            end
          rescue VagrantCloud::Error => e
            @env.ui.error(I18n.t("cloud_command.errors.box.show_fail", org: org, box_name:box_name))
            @env.ui.error(e.message)
            1
          end
        end
      end
    end
  end

View on GitHub (pinned to 35f3160f4a)

Solutions

  1. First list unfiltered: `vagrant cloud box show org/box` to see which providers/architectures/versions actually exist.
  2. Correct the filter spelling to match the published values exactly (provider names and architecture strings are matched literally).
  3. Loosen the filter (drop --architectures or --providers) and filter client-side.
  4. In scripts, treat exit 1 with this warning as 'no match', not as a transport error, and branch accordingly.

Example fix

# before
vagrant cloud box show myorg/base --providers virtualbox --architectures arm
# -> No matches found ... exit 1

# after
vagrant cloud box show myorg/base                       # inspect real values first
vagrant cloud box show myorg/base --providers virtualbox --architectures arm64
Defensive patterns

Strategy: validation

Validate before calling

# discover real values before filtering
raw=$(vagrant cloud box show "$ORG/$BOX")
provider_exists=$(printf '%s' "$raw" | grep -c "$PROVIDER")
[ "$provider_exists" -gt 0 ] || { echo "provider $PROVIDER not published" >&2; exit 1; }

Prevention

When it happens

Trigger: Running `vagrant cloud box show org/box --providers virtualbox --architectures arm` when no provider entry matches that provider+architecture combination; filtering by a version string that exists in the box but has no matching provider/architecture pair.

Common situations: Looking for ARM builds that were never published; typos in provider names ('vmware' vs 'vmware_desktop'); architecture filters (amd64 vs x86_64 naming) that mismatch how the publisher tagged entries; shell scripts assuming exit 0 means 'shown' and treating filter misses as API errors.

Related errors


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