{"repo":"NousResearch/hermes-agent","public_id":"14940","display_label":"Alibaba provider registration and config persistence fixes","summary":"Multiple issues and fixes related to registering Alibaba Coding Plan as a first-class provider, preserving provider/model selection across switches, and correcting DashScope authentication and model-name handling.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":15045,"merged_at":"2026-04-24T09:59:33+00:00"},"resolution":{"state":"resolved","by":"pr-15045"},"freshness":{"state":"stale","last_verified_at":"2026-04-24T09:59:33+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":14940,"pr_number":15045,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-04-24T09:59:33+00:00"}],"members":[{"kind":"issue","number":14940,"title":"[BUG] Model switching fails when using Alibaba Coding Plan custom provider - auto-resolution ignores user config","url":null,"state":"closed"},{"kind":"pr","number":14961,"title":"fix(providers): register alibaba-coding-plan as a first-class provider","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#15045","number":15045}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":15045,"title":"fix(providers): register alibaba-coding-plan as a first-class provider (salvage #14961)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/auth.py","hermes_cli/providers.py"],"fix_hunks":[{"file":"hermes_cli/auth.py","hunks":["@@ -224,6 +224,14 @@ class ProviderConfig:\n         api_key_env_vars=(\"DASHSCOPE_API_KEY\",),\n         base_url_env_var=\"DASHSCOPE_BASE_URL\",\n     ),\n+    \"alibaba-coding-plan\": ProviderConfig(\n+        id=\"alibaba-coding-plan\",\n+        name=\"Alibaba Cloud (Coding Plan)\",\n+        auth_type=\"api_key\",\n+        inference_base_url=\"https://coding-intl.dashscope.aliyuncs.com/v1\",\n+        api_key_env_vars=(\"ALIBABA_CODING_PLAN_API_KEY\", \"DASHSCOPE_API_KEY\"),\n+        base_url_env_var=\"ALIBABA_CODING_PLAN_BASE_URL\",\n+    ),\n     \"minimax-cn\": ProviderConfig(\n         id=\"minimax-cn\",\n         name=\"MiniMax (China)\",","@@ -1024,6 +1032,8 @@ def resolve_provider(\n         \"step\": \"stepfun\", \"stepfun-coding-plan\": \"stepfun\",\n         \"arcee-ai\": \"arcee\", \"arceeai\": \"arcee\",\n         \"minimax-china\": \"minimax-cn\", \"minimax_cn\": \"minimax-cn\",\n+        \"alibaba_coding\": \"alibaba-coding-plan\", \"alibaba-coding\": \"alibaba-coding-plan\",\n+        \"alibaba_coding_plan\": \"alibaba-coding-plan\",\n         \"claude\": \"anthropic\", \"claude-code\": \"anthropic\",\n         \"github\": \"copilot\", \"github-copilot\": \"copilot\",\n         \"github-models\": \"copilot\", \"github-model\": \"copilot\","]},{"file":"hermes_cli/providers.py","hunks":["@@ -116,6 +116,10 @@ class HermesOverlay:\n         transport=\"openai_chat\",\n         base_url_env_var=\"DASHSCOPE_BASE_URL\",\n     ),\n+    \"alibaba-coding-plan\": HermesOverlay(\n+        transport=\"openai_chat\",\n+        base_url_env_var=\"ALIBABA_CODING_PLAN_BASE_URL\",\n+    ),\n     \"vercel\": HermesOverlay(\n         transport=\"openai_chat\",\n         is_aggregator=True,","@@ -259,6 +263,9 @@ class ProviderDef:\n     \"aliyun\": \"alibaba\",\n     \"qwen\": \"alibaba\",\n     \"alibaba-cloud\": \"alibaba\",\n+    \"alibaba_coding\": \"alibaba-coding-plan\",\n+    \"alibaba-coding\": \"alibaba-coding-plan\",\n+    \"alibaba_coding_plan\": \"alibaba-coding-plan\",\n \n     # google-gemini-cli (OAuth + Code Assist)\n     \"gemini-cli\": \"google-gemini-cli\",\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}