OmniRoute Version
3.8.53 (e9cb075cf6)
Installation Method
Built from source
Operating System
Linux
Node.js Version
v26.8.1
Provider(s) Involved
AGY CLI (agy), Antigravity (antigravity)
Model(s) Involved
claude-opus-5-5-high, claude-opus-5-5-medium, claude-opus-5-5-low, claude-sonnet-5-5-high, claude-sonnet-5-5-medium, claude-sonnet-5-5-low, gemini-4-argon-high, gemini-4-argon-medium, gemini-4-argon-low, claude-opus-4-6-thinking
Client Tool
AGY CLI / Dashboard Model Tester / OpenAI-compatible clients
Description
There are three interacting bugs affecting the agy (AGY CLI) provider model catalog, cache reset, and visibility gate:
-
Cross-provider
hiddenModelGateleak (agy→antigravity) causes false404 Model not found:createHiddenModelLookup(src/lib/hiddenModelLookup.ts:27-30) keepsagyandantigravityvisibility overrides separate inmodelCompatOverridesbecause both"agy"and"antigravity"exist inPROVIDER_ID_TO_ALIAS.- However, when a request arrives for
agy/<model>(e.g.agy/claude-opus-5-5-highoragy/gemini-4-argon-high),resolveModelOrError(src/sse/handlers/chatHelpers.ts) resolvesproviderviaALIAS_TO_PROVIDER_ID["agy"] = "antigravity", rewriting the target toantigravity/<model>. handleSingleModelChat(src/sse/handlers/chat.ts:1686-1696) then callsresolvedModelGate(["antigravity/<model>"])(withHiddenModelGateinsrc/sse/handlers/chat/hiddenModelGate.ts:15-25), which checksisHidden("antigravity", model)instead ofisHidden("agy", model).- Consequently, if a model was ever hidden under
modelCompatOverrides["antigravity"], every request toagy/<model>is rejected locally in ~10ms with404 Model not found, even when the model is visible onagyand supported live by Google's/v1internal:streamGenerateContent. - Worse, running Test All on
agywith Auto-hide failed enabled hits that local404and auto-hides all those models undermodelCompatOverrides["agy"]as well.
-
"Clear All Models" button is missing on OAuth providers (
agy/antigravity) and does not resetmodelCompatOverrides:- In
src/app/(dashboard)/dashboard/providers/[id]/components/ProviderModelsSection.tsx:241,clearAllButtononly checksmodelMeta.customModels.length > 0 || providerAliasEntries.length > 0(ignoringsyncedAvailableModels.length > 0) and is omitted from the standard OAuth providerActionBarat lines 403–419. - In
src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts:268,handleClearAllModelsonly callsDELETE /api/provider-models?provider=${providerStorageAlias}&all=true(missing canonicalproviderIdwhenproviderStorageAlias !== providerId, such asagvsantigravity). - In
src/app/api/provider-models/route.ts:535-546,DELETE ?all=trueclearscustomModels,syncedAvailableModels, and managed aliases, but does not clearmodelCompatOverrides(so hidden flags survive a full model reset).
- In
-
Stale
claude-opus-4-6-thinkingin static catalog whenliveCatalogAuthoritativeis active:open-sse/config/antigravitySharedModels.tsstill listsclaude-opus-4-6-thinkingas a default model, while Google's live/v1internal:fetchAvailableModelsforcli/1.3.4returnsclaude-opus-5-5-{high,medium,low},claude-sonnet-5-5-{high,medium,low}, andgemini-4-argon-{high,medium,low}.- Because
liveCatalogAuthoritative: trueis enabled whensyncedAvailableModelsis fresh (src/lib/providers/modelCatalog.ts:276-288), callers or combos still referencingagy/claude-opus-4-6-thinkingfail with:Model 'claude-opus-4-6-thinking' is not available in the active live catalog for provider 'antigravity'.
Steps to Reproduce
- Have an active
agyconnection with synced live models (claude-opus-5-5-high,gemini-4-argon-high, etc.). - Have
claude-opus-5-5-highorgemini-4-argon-highmarked hidden inmodelCompatOverrides["antigravity"](e.g., from an earlier auto-hide test on the Antigravity provider). - Go to the
agyprovider page, ensureclaude-opus-5-5-highandgemini-4-argon-highare visible (unhidden) onagy, and click Test (or send a chat completion request toagy/claude-opus-5-5-high). - Observe that OmniRoute immediately returns
404 Model not foundin ~10ms without contacting upstream.
Expected Behavior
- Visibility checks in
withHiddenModelGateforagy/<model>should respectagy's own visibility state (modelCompatOverrides["agy"]) rather than being blocked bymodelCompatOverrides["antigravity"]. - The Clear All Models button should be available on OAuth providers (
agy,antigravity, etc.) whensyncedAvailableModelsexist, and resetting models should also clear or allow resettingmodelCompatOverridesfor bothproviderStorageAliasandproviderId. - Legacy
claude-opus-4-6-thinking/claude-sonnet-4-6requests should either alias cleanly or remain routable when the live catalog transitions toclaude-opus-5-5-*/claude-sonnet-5-5-*.
Actual Behavior
- Requests to
agy/claude-opus-5-5-*,agy/claude-sonnet-5-5-*, andagy/gemini-4-argon-*fail locally with404 Model not foundwhenevermodelCompatOverrides["antigravity"]has those model IDs hidden. - Clearing
modelCompatOverrideson bothagyandantigravityviaPATCH /api/provider-modelsimmediately restores200 OKresponses from Google's upstream for all 17 models.
Test Impact
Needs a new unit test
Error Logs / Output
{"level":30,"time":"2026-10-21T00:08:57.395Z","service":"omniroute","module":"sse","tag":"HTTP","method":"POST","path":"/v1/chat/completions | agy/gemini-4-argon-high | 1 msgs | effort=none","msg":"📥 POST /v1/chat/completions | agy/gemini-4-argon-high | 1 msgs | effort=none"}
{"level":30,"time":"2026-10-21T00:08:57.400Z","service":"omniroute","module":"sse","tag":"ROUTING","msg":"agy/gemini-4-argon-high → antigravity/gemini-4-argon-high"}
{"level":30,"time":"2026-10-21T00:08:57.402Z","service":"omniroute","module":"sse","tag":"MODEL_TEST_ALL","providerId":"agy","modelId":"agy/gemini-4-argon-high","latencyMs":9,"msg":"Tested agy/gemini-4-argon-high: error"}Validation Plan
npx vitest run src/app/\(dashboard\)/dashboard/providers/\[id\]/__tests__/providerModelsSectionVisibilityKey.test.tsx src/app/\(dashboard\)/dashboard/providers/\[id\]/__tests__/useModelVisibilityHandlers.test.tsx- Unit test verifying
withHiddenModelGate/resolvedModelPolicychecks visibility against the requested provider surface (agy) whenagyaliases toantigravityexecutor.