charmbracelet/crush · error

no providers found matching %q

Error message

no providers found matching %q

What it means

internal/cmd/models.go raises 'no providers found matching %q' when a search term was supplied to the models listing but zero providers matched the filter. Unlike the no-argument variant, this tells the user their specific query did not match any known provider.

Source

Thrown at internal/cmd/models.go:121

				entry.models = append(entry.models, model.ID)
			}
			if len(entry.models) > 0 {
				slices.Sort(entry.models)
				entries[providerID] = entry
			}
		}

		var providerIDs []string
		for id := range entries {
			providerIDs = append(providerIDs, id)
		}
		sort.Strings(providerIDs)

		if len(providerIDs) == 0 && len(args) == 0 {
			return fmt.Errorf("no providers found")
		}
		if len(providerIDs) == 0 {
			return fmt.Errorf("no providers found matching %q", term)
		}

		if !isatty.IsTerminal(os.Stdout.Fd()) {
			for _, providerID := range providerIDs {
				entry := entries[providerID]
				for _, modelID := range entry.models {
					fmt.Println(providerID + "/" + modelID)
				}
			}
			return nil
		}

		t := tree.New()
		for _, providerID := range providerIDs {
			entry := entries[providerID]
			label := providerID
			if !entry.configured {
				label += " (not configured)"

View on GitHub (pinned to 7944b8e522)

Solutions

  1. Run `crush models` without arguments to list valid provider ids
  2. Correct the spelling/case of the provider id in the search term
  3. Add the missing provider to crushrc if it is genuinely not configured
  4. Check the catalog is up to date (network) if the provider recently changed names

Example fix

// before
crush models antropic
// after
crush models anthropic
Defensive patterns

Strategy: validation

Validate before calling

ids := providerIDsMatching(term)
if len(ids) == 0 {
    fmt.Println("available:", strings.Join(allProviderIDs(), ", "))
}

Try / catch

if err := runModels(term); err != nil {
    if strings.Contains(err.Error(), "no providers found matching") {
        // list valid ids and correct the term
    }
    return err
}

Prevention

When it happens

Trigger: Running `crush models <term>` where <term> does not match any provider id in the resolved catalog (empty entries filtered by term).

Common situations: Typo in provider name (`crush models antropic`); provider removed/renamed in catalog; case-sensitive mismatch; provider not configured locally so it never appears in entries.

Related errors


AI-assisted analysis of charmbracelet/crush@7944b8e522 (2026-08-29). Data as JSON: /api/errors/4d558dc9fc195314. Report an issue: GitHub.