openclaw - 💡(How to fix) Fix [Bug]: Cron payload.model does not resolve configured model aliases before allowlist validation [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#75854Fetched 2026-05-02 05:28:55
View on GitHub
Comments
2
Participants
3
Timeline
3
Reactions
2
Timeline (top)
commented ×2closed ×1

After upgrading to OpenClaw 2026.4.29, cron jobs with payload.model set to configured model aliases such as easy, medium, or hard fail model allowlist validation. The aliases are configured and visible via openclaw models aliases list, but cron appears to validate the raw payload string as a provider/model ref before alias resolution.

Error Message

Alternatively, if cron intentionally does not support aliases, the cron update/create path should reject aliases immediately with a clear validation error instead of accepting the job and failing later at runtime.

Root Cause

This works but makes future model migrations brittle because every cron job must be manually rewritten whenever aliases change.

Fix Action

Workaround

Patch cron jobs to use full model refs instead of aliases:

easy   -> ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M
medium -> lmstudio/qwen3.6-35b-a3b
hard   -> openai-codex/gpt-5.5

This works but makes future model migrations brittle because every cron job must be manually rewritten whenever aliases change.

Code Example

hard   -> openai-codex/gpt-5.5
medium -> lmstudio/qwen3.6-35b-a3b
easy   -> ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M

---

{
  "openai-codex/gpt-5.4": {},
  "openai-codex/gpt-5.5": { "alias": "hard" },
  "lmstudio/qwen3.6-35b-a3b": { "alias": "medium" },
  "ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M": { "alias": "easy" }
}

---

openclaw models aliases add medium lmstudio/qwen3.6-35b-a3b

---

{
     "payload": {
       "kind": "agentTurn",
       "model": "medium",
       "message": "..."
     }
   }

---

cron payload.model 'medium' rejected by agents.defaults.models allowlist: openai-codex/medium

---

cron payload.model 'easy' rejected by agents.defaults.models allowlist: openai-codex/easy
cron payload.model 'hard' rejected by agents.defaults.models allowlist: openai-codex/hard
cron payload.model 'openai-codex/medium' rejected by agents.defaults.models allowlist: openai-codex/medium

---

easy   -> ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M
medium -> lmstudio/qwen3.6-35b-a3b
hard   -> openai-codex/gpt-5.5
RAW_BUFFERClick to expand / collapse

Summary

After upgrading to OpenClaw 2026.4.29, cron jobs with payload.model set to configured model aliases such as easy, medium, or hard fail model allowlist validation. The aliases are configured and visible via openclaw models aliases list, but cron appears to validate the raw payload string as a provider/model ref before alias resolution.

Environment

  • OpenClaw: 2026.4.29 (a448042)
  • OS: Linux x64, kernel 6.17.0-23-generic
  • Node: 25.8.0
  • Gateway: systemd service, local loopback reachable

Config

Aliases:

hard   -> openai-codex/gpt-5.5
medium -> lmstudio/qwen3.6-35b-a3b
easy   -> ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M

Allowlist:

{
  "openai-codex/gpt-5.4": {},
  "openai-codex/gpt-5.5": { "alias": "hard" },
  "lmstudio/qwen3.6-35b-a3b": { "alias": "medium" },
  "ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M": { "alias": "easy" }
}

Reproduction

  1. Configure a model alias, e.g.:

    openclaw models aliases add medium lmstudio/qwen3.6-35b-a3b
  2. Create or update a cron job with:

    {
      "payload": {
        "kind": "agentTurn",
        "model": "medium",
        "message": "..."
      }
    }
  3. Run the cron job.

Actual behavior

The job fails before execution with allowlist validation errors like:

cron payload.model 'medium' rejected by agents.defaults.models allowlist: openai-codex/medium

Similarly:

cron payload.model 'easy' rejected by agents.defaults.models allowlist: openai-codex/easy
cron payload.model 'hard' rejected by agents.defaults.models allowlist: openai-codex/hard
cron payload.model 'openai-codex/medium' rejected by agents.defaults.models allowlist: openai-codex/medium

This suggests cron is either not resolving aliases at all, or is resolving bare strings through the default provider before checking configured aliases.

Expected behavior

Cron payload.model should follow the same model ref resolution rules as documented for model selection:

  • alias match first
  • then unique configured-provider match
  • then provider/default fallback behavior if applicable

So payload.model: "medium" should resolve to lmstudio/qwen3.6-35b-a3b before allowlist validation.

Alternatively, if cron intentionally does not support aliases, the cron update/create path should reject aliases immediately with a clear validation error instead of accepting the job and failing later at runtime.

Workaround

Patch cron jobs to use full model refs instead of aliases:

easy   -> ollama/bcluzel/LFM2.5-1.2B-Instruct:Q4_K_M
medium -> lmstudio/qwen3.6-35b-a3b
hard   -> openai-codex/gpt-5.5

This works but makes future model migrations brittle because every cron job must be manually rewritten whenever aliases change.

Related

Possibly related to model allowlist / cron model validation regressions such as #75753 and older alias-resolution issue #54166.

extent analysis

TL;DR

Update cron jobs to use full model references instead of aliases to bypass the allowlist validation issue.

Guidance

  • Verify that the model aliases are correctly configured and visible via openclaw models aliases list.
  • Check the allowlist configuration to ensure that the full model references are included.
  • Update cron jobs to use the full model references instead of aliases, as shown in the workaround section.
  • Consider filing a bug report or feature request to improve cron job support for model aliases.

Example

No code snippet is provided as the issue is related to configuration and not code.

Notes

The current workaround requires manual updates to cron jobs, which can be brittle and prone to errors. A more robust solution would involve improving cron job support for model aliases.

Recommendation

Apply the workaround by updating cron jobs to use full model references instead of aliases, as this is the most straightforward way to resolve the issue in the short term.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Cron payload.model should follow the same model ref resolution rules as documented for model selection:

  • alias match first
  • then unique configured-provider match
  • then provider/default fallback behavior if applicable

So payload.model: "medium" should resolve to lmstudio/qwen3.6-35b-a3b before allowlist validation.

Alternatively, if cron intentionally does not support aliases, the cron update/create path should reject aliases immediately with a clear validation error instead of accepting the job and failing later at runtime.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Cron payload.model does not resolve configured model aliases before allowlist validation [2 comments, 3 participants]