Repository navigation
fix(routing): keep keyless custom-compatible connections in the auto/* pool - #11198
Merged
diegosouzapw merged 1 commit intoAug 23, 2026
Conversation
…* pool A custom openai-compatible-* / anthropic-compatible-* connection pointing at a keyless self-hosted backend (llama.cpp, Ollama, vLLM started without an API key) has no apiKey, no OAuth token and no provider-specific session data, so hasUsableConnectionCredential dropped it from validConnections before the auto/* candidate pool was built. For those generated IDs 'no credential' is the normal configuration rather than an unconfigured connection. The relaxation is scoped to the four compatible-provider ID shapes via the existing isCompatibleProviderConnectionId helper, so an unconfigured first-party connection stays excluded and the no-auth registry allowlist is untouched. Closes cheaper-inference#11180
pacocartones
force-pushed
the
fix/11180-keyless-custom-provider-auto-pool
branch
from
August 23, 2026 02:57
51a7c33 to
aa1814c
Compare
diegosouzapw
merged commit Aug 23, 2026
a966c75
into
cheaper-inference:release/v3.8.50
10 of 16 checks passed
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…* pool (cheaper-inference#11198) Validated on the combined batch board over tip 429b730: static gates clean (changelog, file-size 158 frozen, complexity 2626<=2774, cognitive 1183<=1223, dead-code 409<=416), typecheck:core clean, 70 focused tests green (PR suites 49/49 + auth/combo neighbors 21/21). Keyless custom-compatible connections stay in auto/* pools — the credential filter now recognizes a registry-free keyless endpoint instead of dropping the connection before pool construction. Fixes cheaper-inference#11180. Thank you @pacocartones!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A custom OpenAI-compatible connection pointing at a keyless local backend is silently dropped from every
auto/*candidate pool. It never appears as a routing candidate, so no strategy, weight or priority setting can select it, while direct<provider>/<model>calls keep working.Root cause
open-sse/services/autoCombo/virtualFactory.ts:489filters the pool throughhasUsableConnectionCredential, which requires one of three things:A keyless local endpoint has none of them:
api_keyisNULL, there is no OAuth token, and there is no web session data. The connection is removed before the pool is built.This is one gate later than #5873. That fix made the registry-absent path fall back to
defaultModel, and it still works; the connection's models do get enumerated. It is then dropped by the credential filter.Fix
Treat the four generated compatible-provider ID shapes as credential-optional, reusing the existing
isCompatibleProviderConnectionIdhelper rather than a new inline regex (the lesson of #8326, where an inline pattern matched only 1 of the 4 shapes).Deliberately narrow. A first-party provider with an empty key really is unconfigured and stays filtered out, and
AUTO_COMBO_NOAUTH_ALLOWLISTis untouched, so this does not widen the no-auth registry policy.Red / green
Before, on a clean checkout at
62ab93d78:After:
The second test is a negative control: it fails if the relaxation is ever widened to first-party providers.
noauth-autocombo-allowlist,-exclude-7622,-hidden-7620and-lockout-7623were also run and stay green.@diegosouzapw one note on CI:
release/v3.8.50is red at the base right now (stale ESLint suppressions, unit shards, Fast Quality Gates), so those reds should appear on other PRs too and are not from this change.Closes #11180