-
-
Notifications
You must be signed in to change notification settings - Fork 79.1k
[Bug]: /model picker auth label ignores auth.order resolution #83574
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
The
/modelpicker in Telegram (and presumably other channels) labels the OpenAI provider entry with🔑 api-key (env: OPENAI_API_KEY)even whenauth.order.openaiis configured to route exclusively through an OAuth (Codex) profile and noopenai:defaultAPI-key profile is declared inauth.profiles.This is misleading: users who have explicitly removed the API-key fallback to avoid silent per-token billing still see the picker advertise api-key auth as if it were the active mode. It undercuts the cost-control intent of trimming
auth.order.Environment
v2026.5.16-beta.7/modelConfiguration (relevant excerpt)
Observed
/modelin Telegram displays:The openai provider entry is labeled with api-key auth even though
auth.order.openaireferences only the OAuth profile and noopenai:defaultprofile exists.Expected
Either:
auth.order.openaiactually resolves to (here:🔑 oauth (openai-codex:aaajiao@gmail.com)), orWhy it matters
Users trim
auth.orderdeliberately to prevent silent fallback to per-token billed paths. When the picker label contradicts the configured order, there is no channel-surface way to verify the cost-control change took effect. It also creates an "is this a label bug or did my config not apply?" diagnostic ambiguity.Verified: display-only mismatch
Manual selection of an
openai/*model from this picker dispatches via the OAuth (Codex) profile as expected —/statusafter the pick shows🔑 oauth (openai-codex:aaajiao@gmail.com). Routing correctly honorsauth.order. The bug is purely on the picker's display side: the label rendering reads the provider's intrinsic default auth mode (api-keyfor theopenaiprovider catalog withbaseUrl: https://api.openai.com/v1) instead of the auth thatauth.order.<provider>actually resolves to for that user.Fix target: the channel
/modelpicker's per-provider auth label rendering should resolve throughauth.order.<provider>(and the configuredauth.profiles) before falling back to the provider's intrinsic default auth mode.