fix: expose qwen3.6-plus on Coding Plan endpoints#66367
Conversation
Greptile SummaryRemoves the three places in the Qwen plugin that hard-blocked Confidence Score: 5/5
|
| @@ -165,14 +165,8 @@ export default defineSingleProviderPluginEntry({ | |||
| }, | |||
| applyNativeStreamingUsageCompat: ({ providerConfig }) => | |||
| applyQwenNativeStreamingUsageCompat(providerConfig), | |||
| normalizeConfig: ({ providerConfig }) => { | |||
| if (!isQwenCodingPlanBaseUrl(providerConfig.baseUrl)) { | |||
| return undefined; | |||
| } | |||
| const models = providerConfig.models?.filter((model) => model.id !== QWEN_36_PLUS_MODEL_ID); | |||
| return models && models.length !== providerConfig.models?.length | |||
| ? { ...providerConfig, models } | |||
| : undefined; | |||
| normalizeConfig: () => { | |||
| return undefined; | |||
| }, | |||
| suppressBuiltInModel: (ctx) => { | |||
| const provider = normalizeProviderId(ctx.provider); | |||
| @@ -183,11 +177,7 @@ export default defineSingleProviderPluginEntry({ | |||
| ) { | |||
| return undefined; | |||
| } | |||
| return { | |||
| suppress: true, | |||
| errorMessage: | |||
| "Unknown model: qwen/qwen3.6-plus. qwen3.6-plus is not supported on the Qwen Coding Plan endpoint; use a Standard pay-as-you-go Qwen endpoint or choose qwen/qwen3.5-plus.", | |||
| }; | |||
| return undefined; | |||
There was a problem hiding this comment.
Dead stub and unreachable branch
isQwen36PlusUnsupportedForConfig always returns false, so !isQwen36PlusUnsupportedForConfig(...) is always true, which means the if in suppressBuiltInModel is always entered and the second return undefined at line 180 is unreachable. The stub function and the whole conditional can be deleted — the hook can just be suppressBuiltInModel: () => undefined.
| suppressBuiltInModel: () => undefined, |
isQwen36PlusUnsupportedForConfig (lines 42–47) should be removed as well since it has no callers after this cleanup.
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/qwen/index.ts
Line: 42-180
Comment:
**Dead stub and unreachable branch**
`isQwen36PlusUnsupportedForConfig` always returns `false`, so `!isQwen36PlusUnsupportedForConfig(...)` is always `true`, which means the `if` in `suppressBuiltInModel` is always entered and the second `return undefined` at line 180 is unreachable. The stub function and the whole conditional can be deleted — the hook can just be `suppressBuiltInModel: () => undefined`.
```suggestion
suppressBuiltInModel: () => undefined,
```
`isQwen36PlusUnsupportedForConfig` (lines 42–47) should be removed as well since it has no callers after this cleanup.
How can I resolve this? If you propose a fix, please make it concise.|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
|
Codex review: keeping this open for maintainer follow-up; there is still a little grit to resolve. Keep this PR open. Current main still does not implement the broad behavior this PR proposes: Best possible solution: Keep this PR open for maintainer product and security review. If maintainers want the broader provider-truth behavior, rebase or land an equivalent patch that removes Coding Plan filtering from What I checked:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 0b82a7e718e3. |
e399564 to
8f31c97
Compare
8ea42c5 to
a69fb71
Compare
|
Thanks for pushing this forward. The fix has now landed via the narrower replacement PR #72664, which preserves explicit |
Summary
This change removes OpenClaw-side filtering that hides
qwen3.6-pluswhen the configured Qwen base URL points at Alibaba's Coding Plan endpoints.Why
Alibaba Cloud Coding Plan now supports
qwen3.6-plusfor all Coding Plan Pro users, so OpenClaw should not hard-block the model before the upstream provider responds.The current Qwen integration blocks
qwen3.6-plusin two places:buildQwenModelCatalogForBaseUrl(...)normalizeConfigThat means OpenClaw can reject a model that Coding Plan Pro users are already allowed to use.
Without this change, OpenClaw hides
qwen3.6-plusfrom the Qwen catalog and strips it from provider config on Coding Plan endpoints, so Coding Plan Pro users cannot select or use a model they already have access to.Changes
qwen3.6-plusfiltering from the Qwen catalogqwen3.6-plusin plugin config normalizationNotes
This change prefers provider truth over OpenClaw-side preemption.
If the upstream provider ever returns an unsupported-model error for a specific account or plan, that error should come from the provider directly rather than from OpenClaw hard-blocking the model in advance.