#Multi-Agent Routing Breaks When Adding Custom Provider

1 messages · Page 1 of 1 (latest)

midnight hare
#

Environment: OpenClaw 2026.2.9, macOS, 3-agent setup, Telegram

Issue

Adding a custom model provider (MLX) breaks agent routing. Messages to specific agents get routed to main agent instead.

Working Config

{
  "agents": {
    "list": [
      { "id": "main" },
      { "id": "mint", "workspace": "/mint", "model": "anthropic/claude-sonnet-4-5" }
    ]
  },
  "bindings": [
    { "agentId": "main", "match": { "accountId": "main_bot" }},
    { "agentId": "mint", "match": { "accountId": "mint_bot" }}
  ]
}

âś… Both agents work correctly

Broken Config

{
  "models": { "providers": { "mlx": { "baseUrl": "http://127.0.0.1:1234/v1", "apiKey": "mlx-local", "api": "openai-completions" }}},
  "agents": { "list": [
    { "id": "main" },
    { "id": "mint", "workspace": "/mint", "model": "mlx/typhoon2-model" }
  ]}
}

❌ Mint messages go to main agent

Symptoms

  • sessions_list only shows agent:main:main (no agent:mint:*)
  • Messages to @mint_bot → routed to main
  • Mint uses main agent's identity
  • Log: inherited auth-profiles from main agent

Reproduce

  1. Working multi-agent (same provider)
  2. Add custom provider to models.providers
  3. Change agent to use new provider
  4. Message affected agent → gets wrong response

Workaround

Remove custom provider, revert to original model → ✅ works

Question

Is this a known issue? Any guidance for multi-agent + custom providers?

Thanks! 🙏
nynat@nynats

austere tartanBOT
# midnight hare **Environment**: OpenClaw 2026.2.9, macOS, 3-agent setup, Telegram ## Issue Add...

This isn’t a known “custom model providers break routing” class of bug — routing is driven by bindings, and in your broken snippet routing will inevitably fall back to main for two separate reasons:

  1. Your broken config has no bindings at all
    Without bindings, inbound messages route to the default agent (agents.list[].default, else the first agent, which is typically main). That exactly matches “mint messages go to main”.

  2. In current config schema, bindings[].match.channel is required
    So bindings like { match: { accountId: "mint_bot" } } are not valid anymore (or will be ignored / warned). Docs: https://docs.openclaw.ai/gateway/configuration#multi-agent-routing-agentslist--bindings

Also: your custom provider entry is incomplete as shown — models.providers.<id>.models is required. (If you omit it, config validation can fail or the provider won’t register models correctly.) Docs: https://docs.openclaw.ai/concepts/model-providers

A “should work” shape (Telegram + custom OpenAI-compatible provider)

{
  models: {
    mode: "merge",
    providers: {
#
      mlx: {
        baseUrl: "http://127.0.0.1:1234/v1",
        apiKey: "mlx-local",
        api: "openai-completions",
        models: [
          { id: "typhoon2-model", name: "Typhoon2" }
        ]
      }
    }
  },

  agents: {
    list: [
      { id: "main" },
      { id: "mint", workspace: "/mint", model: "mlx/typhoon2-model" }
#
    ]
  },

  bindings: [
    { agentId: "main", match: { channel: "telegram", accountId: "main_bot" } },
    { agentId: "mint", match: { channel: "telegram", accountId: "mint_bot" } }
  ]
}

Quick verification commands

  • openclaw agents list --bindings (shows what the Gateway thinks your routing rules are)
  • openclaw status --all (very often reveals “CLI config != service config” on macOS, so you edited a file the daemon isn’t using)

About the log line

inherited auth-profiles from main agent is expected when a new agent has no auth-profiles.json yet — it’s not evidence that routing is broken.