Skip to content

[Bug]: Global model fallbacks not inherited by session runner (fallbackConfigured: false) #71111

Description

@amitylabs

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Description:
Despite having agents.defaults.model.fallbacks correctly configured in openclaw.json, the system fails to trigger the failover mechanism when the primary model returns a server error (e.g., HTTP 500). Instead of switching to the backup models, the system surfaces the error directly to the user.

Expected Behavior:
When the primary model (google/gemma-4-31b-it) fails with a 500 error, the runner should identify the configured fallbacks and attempt to process the request with the next model in the list.

Actual Behavior:
The runner reports that no fallbacks are configured for the current run, ignoring the global defaults.

Evidence (Logs):
The following log sequence shows the failure. Note the embedded_run_failover_decision event explicitly stating "fallbackConfigured": false despite global configuration being present.

// 1. Primary model fails with 500 Internal Error
{
"event": "embedded_run_agent_end",
"isError": true,
"error": "LLM request timed out.",
"failoverReason": "timeout",
"model": "gemma-4-31b-it",
"provider": "google",
"rawErrorPreview": "Google Generative AI API error (500): {\n "error": {\n "code": 500,\n "message": "Internal error encountered.",\n "status": "INTERNAL"\n }\n}"
}

// 2. Failover decision ignores global configuration
{
"event": "embedded_run_failover_decision",
"decision": "surface_error",
"failoverReason": "timeout",
"model": "gemma-4-31b-it",
"fallbackConfigured": false,
"timedOut": true
}

Configuration used (openclaw.json):

"agents": {
"defaults": {
"model": {
"primary": "google/gemma-4-31b-it",
"fallbacks": [
"meta-llama/llama-3.3-70b-instruct:free",
"nvidia/nemotron-4-340b-instruct:free",
"qwen/qwen3-next-80b-a3b-instruct:free"
]
}
}
}

Analysis:
There seems to be a disconnection between the global configuration layer and the session execution runner. The fallbackConfigured flag is returning false at runtime, indicating that the defaults.model.fallbacks list is not being properly inherited or injected into the session context.

Steps to reproduce

NOT_ENOUGH_INFO

Expected behavior

NOT_ENOUGH_INFO

Actual behavior

NOT_ENOUGH_INFO

OpenClaw version

2026.4.22

Operating system

debian 13

Install method

rpm global

Model

gemma 4

Provider / routing chain

openclaw

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingregressionBehavior that previously worked and now fails

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions