vxcontrol/pentagi · error

failed to test provider: %w

Error message

failed to test provider: %w

What it means

TestProvider wraps errors from tester.TestProvider, which runs functional checks (parallel workers) against an already-constructed provider. Unlike error 460, the provider was created successfully but at least one of the runtime test cases (model listing, simple call, tool call, etc.) failed.

Source

Thrown at backend/pkg/providers/providers.go:969

		return results, fmt.Errorf("failed to patch provider config: %w", err)
	}

	// Create provider for testing
	providerName := provider.ProviderName("test-provider")
	testProvider, err := pc.buildProviderFromConfig(prvtype, providerName, patchedConfig)
	if err != nil {
		return results, fmt.Errorf("failed to create provider for testing: %w", err)
	}

	// Run full provider testing
	results, err = tester.TestProvider(
		ctx,
		testProvider,
		tester.WithVerbose(false),
		tester.WithParallelWorkers(defaultTestParallelWorkersNumber),
	)
	if err != nil {
		return results, fmt.Errorf("failed to test provider: %w", err)
	}

	return results, nil
}

func (pc *providerController) patchProviderConfig(
	prvtype provider.ProviderType,
	config *pconfig.ProviderConfig,
) (*pconfig.ProviderConfig, error) {
	var (
		defaultCfg *pconfig.ProviderConfig
		ok         bool
	)

	if defaultCfg, ok = pc.defaultConfigs[prvtype]; !ok {
		if reason, hasReason := pc.defaultConfigErrors[prvtype]; hasReason {
			return nil, fmt.Errorf(
				"provider type '%s' has no default config because it failed to load at startup: %w",

View on GitHub (pinned to ea665308ba)

Solutions

  1. Inspect the wrapped error from tester.TestProvider for the failing test case and its HTTP status/cause.
  2. Verify the API key works with a direct curl call to the provider endpoint.
  3. Check the provider server URL and configured model names are valid for that account.
  4. If transient (429/5xx), wait and re-run TestProvider.

Example fix

null
Defensive patterns

Strategy: retry

Validate before calling

resp, err := http.Get(providerEndpoint + "/health")
if err != nil || resp.StatusCode != 200 {
    return fmt.Errorf("provider endpoint unreachable, skip TestProvider")
}

Type guard

null

Try / catch

results, err := pc.TestProvider(ctx, prvtype, cfg)
if err != nil {
    if isTransient(err) { // e.g. 429/5xx in wrapped message
        time.Sleep(backoff)
        results, err = pc.TestProvider(ctx, prvtype, cfg)
    }
}

Prevention

When it happens

Trigger: Calling TestProvider with a valid provider config where tester.TestProvider returns non-nil: API authentication failure, unreachable endpoint, rate limiting, model not available, or tool-calling capability failures during the test suite.

Common situations: Expired or revoked API key; network/proxy blocking the LLM endpoint; provider account without access to the configured model; server URL pointing to the wrong path; transient 429/5xx during parallel test workers.

Related errors


AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01). Data as JSON: /api/errors/5799dc3866aac20c. Report an issue: GitHub.