diegosouzapw/OmniRoute · error
No connected providers with valid credentials for virtual…
Error message
No connected providers with valid credentials for virtual auto-combo
What it means
Virtual auto-combo factory abort: after building the candidate pool and applying API-key/channel exclusion filters, zero candidates remain with connected status and valid credentials, so no virtual auto-combo can be constructed. Means no provider is usable for auto routing — connections are disabled, credentials invalid, or the exclusion filter removed everything.
Solutions
- Check the dashboard provider connections: ensure at least one is active with valid, tested credentials.
- Review the API key's auto-candidate overrides (excluded channels/connections) — clear over-broad exclusions.
- Run a connection test to rehabilitate keys stuck in invalid/unavailable state.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at open-sse/services/autoCombo/virtualFactory.ts:879 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/505021c27b80304e.
Report an issue: GitHub.
Appendix: source
Thrown at open-sse/services/autoCombo/virtualFactory.ts:879
// apiKeyId/autoChannel (every caller before #7819) or a DB lookup failure
// both leave the pool untouched, so default (unconfigured) routing stays
// byte-identical to pre-#7819 behavior.
let excludedConnectionIds: Set<string> = new Set();
if (apiKeyId && autoChannel) {
try {
excludedConnectionIds = await getExcludedConnectionIds(apiKeyId, autoChannel);
} catch (err) {
log.warn("AUTO", "Failed to load auto-candidate overrides; routing unfiltered", { err });
}
}
const overrideFilteredPool = filterExcludedCandidates(candidatePool, excludedConnectionIds);
if (overrideFilteredPool !== candidatePool) {
candidatePool.length = 0;
candidatePool.push(...overrideFilteredPool);
}
if (candidatePool.length === 0) {
log.warn("AUTO", "No connected providers with valid credentials for virtual auto-combo");
const emptyPool: string[] = [];
const autoConfig = {
candidatePool: emptyPool,
weights: { ...DEFAULT_WEIGHTS },
explorationRate: 0.05,
routerStrategy: "lkgp",
};
return {
id: `virtual-auto-${variant || "default"}`,
name: `Auto ${variant || "Default"}`,
type: "auto" as const,
strategy: "auto",
models: [],
candidatePool: emptyPool,
weights: autoConfig.weights,
explorationRate: autoConfig.explorationRate,
routerStrategy: autoConfig.routerStrategy,
autoConfig,View on GitHub (pinned to a179ffed5b)