Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
Cron jobs with payload.model set to a specific model (e.g., openai-codex/gpt-5.3-codex) always resolve to the agents.defaults.model.primary model instead. The payload model override is completely ignored.
Per the docs (automation/cron-jobs.md), the resolution priority should be:
- Job payload override (highest)
- Hook-specific defaults
- Agent config default
In practice, step 1 is skipped and all isolated cron jobs run on the agent default.
Steps to reproduce
- Set agents.defaults.model.primary to anthropic/claude-opus-4-6
- Create an isolated cron job with payload.model: "openai-codex/gpt-5.3-codex"
- Run the job (manual or scheduled)
- Check cron runs — the model field in the run log shows claude-opus-4-6, not gpt-5.3-codex
Expected behavior
Cron jobs with payload.model set (e.g., openai-codex/gpt-5.3-codex) should use that model for the run, overriding agents.defaults.model.primary, as documented in automation/cron-jobs.md under "Resolution priority."
Actual behavior
The payload.model field is ignored. All isolated cron runs resolve to agents.defaults.model.primary (anthropic/claude-opus-4-6) regardless of what model is specified in the cron payload. Confirmed across 945+ runs, persists after gateway restart, secrets reload, and OAuth re-authentication.
OpenClaw version
2026.3.28
Operating system
Ubuntu 24.04.4 LTS
Install method
No response
Model
anthropic/claude-opus-4-6 (agent default primary)
Provider / routing chain
anthropic/claude-opus-4-6 (primary), openai-codex/gpt-5.4 (fallback #1), openai-codex/gpt-5.3-codex (fallback #2)
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
// agents.defaults.model in openclaw.json
{
"primary": "anthropic/claude-opus-4-6",
"fallbacks": ["openai-codex/gpt-5.4", "openai-codex/gpt-5.3-codex"]
}
// Cron payload (heartbeat example)
{
"kind": "agentTurn",
"model": "openai-codex/gpt-5.3-codex",
"message": "...",
"timeoutSeconds": 120
}
Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
Cron jobs with payload.model set to a specific model (e.g., openai-codex/gpt-5.3-codex) always resolve to the agents.defaults.model.primary model instead. The payload model override is completely ignored.
Per the docs (automation/cron-jobs.md), the resolution priority should be:
In practice, step 1 is skipped and all isolated cron jobs run on the agent default.
Steps to reproduce
Expected behavior
Cron jobs with payload.model set (e.g., openai-codex/gpt-5.3-codex) should use that model for the run, overriding agents.defaults.model.primary, as documented in automation/cron-jobs.md under "Resolution priority."
Actual behavior
The payload.model field is ignored. All isolated cron runs resolve to agents.defaults.model.primary (anthropic/claude-opus-4-6) regardless of what model is specified in the cron payload. Confirmed across 945+ runs, persists after gateway restart, secrets reload, and OAuth re-authentication.
OpenClaw version
2026.3.28
Operating system
Ubuntu 24.04.4 LTS
Install method
No response
Model
anthropic/claude-opus-4-6 (agent default primary)
Provider / routing chain
anthropic/claude-opus-4-6 (primary), openai-codex/gpt-5.4 (fallback #1), openai-codex/gpt-5.3-codex (fallback #2)
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
// agents.defaults.model in openclaw.json
{
"primary": "anthropic/claude-opus-4-6",
"fallbacks": ["openai-codex/gpt-5.4", "openai-codex/gpt-5.3-codex"]
}
// Cron payload (heartbeat example)
{
"kind": "agentTurn",
"model": "openai-codex/gpt-5.3-codex",
"message": "...",
"timeoutSeconds": 120
}