Skip to content

[Bug]: [Dashboard v2] Model switcher incorrectly concatenates provider prefix when switching between different providers #52173

@1esse

Description

@1esse

Bug type

Regression (worked before, now fails)

Summary

When switching models between different providers in Dashboard v2 (chat UI), the model selector incorrectly uses the current provider's prefix instead of the target model's configured provider, resulting in an invalid model ID and "model not allowed" error.

Steps to reproduce

  1. Configure two models from different providers in agent/model.json, e.g.:

    • modelstudio-cn/qwen-plus (通义千问)
    • moonshot-cn/kimi-k2.5 (Moonshot)
  2. Open Dashboard v2 chat UI

  3. Start with model A (e.g., 千问)

  4. Use the model picker to switch to model B (e.g., Kimi)

  5. Observe the error: GatewayRequestError: model not allowed: modelstudio-cn/kimi-k2.5

Expected behavior

Switching from modelstudio-cn/qwen-plus to Kimi should request moonshot-cn/kimi-k2.5.

Actual behavior

Dashboard incorrectly requests modelstudio-cn/kimi-k2.5 (wrong provider prefix).

The bug is bidirectional:

  • From 千问 → Kimi: tries modelstudio-cn/kimi-k2.5
  • From Kimi → 千问: tries moonshot-cn/qwen-plus

OpenClaw version

2026.3.13

Operating system

MacOS 26.3.1

Install method

npm global

Model

kimi-k2.5/qwen-plus

Provider / routing chain

gateway → provider

Additional provider/model setup details

"models": {
"providers": {
"modelstudio-cn": {
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"apiKey": "MODELSTUDIO_API_KEY_1",
"api": "openai-completions",
"models": [
{
"id": "qwen-plus",
"name": "千问",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 200000,
"maxTokens": 8192
}
]
},
"moonshot-cn": {
"baseUrl": "https://api.moonshot.cn/v1",
"apiKey": "MOONSHOT_API_KEY_1",
"api": "openai-completions",
"models": [
{
"id": "kimi-k2.5",
"name": "Kimi",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "moonshot-cn/kimi-k2.5"
},
"models": {
"modelstudio-cn/qwen-plus": {
"alias": "千问"
},
"moonshot-cn/kimi-k2.5": {
"alias": "Kimi"
}
}
}
},

Logs, screenshots, and evidence

Impact and severity

This affects users who configure multiple models from different providers (e.g., comparing cloud providers, using regional APIs, or maintaining fallback options). While less common than single-provider setups, it's a valid and documented configuration pattern.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingregressionBehavior that previously worked and now fails

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions