openclaw - 💡(How to fix) Fix [Bug]: 2026.4.29 silently drops claude-cli/* entries from agents.defaults.models, breaking every cron with payload.model: "claude-cli/..." [2 comments, 2 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#75753Fetched 2026-05-02 05:30:43
View on GitHub
Comments
2
Participants
2
Timeline
4
Reactions
2
Timeline (top)
commented ×2cross-referenced ×2

After updating from 2026.4.27 → 2026.4.29, every cron job with payload.model: "claude-cli/<model>" fails with:

cron payload.model 'claude-cli/claude-sonnet-4-6' rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6

…even though the entry is present in ~/.openclaw/openclaw.json under agents.defaults.models. openclaw models confirms claude-cli/* entries are silently filtered out of the configured-models catalog at parse time. anthropic/* and github-copilot/* entries continue to work.

8 of my crons were broken by this in one night. The same crons ran successfully on 2026.4.27.

Error Message

  1. Add a cron with payload.model: "claude-cli/claude-sonnet-4-6" and run it. Job fails with the rejection error above. ts=1777642200550 status=error provider=- err='cron payload.model claude-cli/claude-sonnet-4-6 rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6' (post-2026.4.29) ts=1777647673390 status=error provider=- err=same as above Source location of the error string: dist/isolated-agent-DPBQL0rZ.js, function formatCronPayloadModelRejection, called when resolveAllowedModelRefFromAliasIndex returns { error: "model not allowed: <key>" } — i.e., the resolved key for the cron payload is not present in the set returned by buildAllowedModelSetWithFallbacks (dist/model-selection-shared-CJbAuPhe.js).

Root Cause

After updating from 2026.4.27 → 2026.4.29, every cron job with payload.model: "claude-cli/<model>" fails with:

cron payload.model 'claude-cli/claude-sonnet-4-6' rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6

…even though the entry is present in ~/.openclaw/openclaw.json under agents.defaults.models. openclaw models confirms claude-cli/* entries are silently filtered out of the configured-models catalog at parse time. anthropic/* and github-copilot/* entries continue to work.

8 of my crons were broken by this in one night. The same crons ran successfully on 2026.4.27.

Fix Action

Fix / Workaround

8 of my production crons broke overnight from a single point release: K-2 Morning Brief, K2 Dashboard Inbox Poller, K2 Inbox AM, Async Context Dump, K2 Memory Maintenance, Memory Dreaming Promotion, Tennis Paper Picks 5pm, K-2 Paper Picks Card (6am), healthcheck:security-audit. Switching them to anthropic/<model> passes validation but loses cron-session FS write tools (Bash/Write/Edit), silently producing degraded output — so the prefix flip is not a viable workaround.

Code Example

cron payload.model 'claude-cli/claude-sonnet-4-6' rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6

---

"agents": {
     "defaults": {
       "models": {
         "anthropic/claude-sonnet-4-6": {},
         "claude-cli/claude-sonnet-4-6": {}
       },
       "cliBackends": {
         "claude-cli": { "command": "/path/to/claude" }
       }
     }
   }

---

Configured models (17): anthropic/claude-haiku-4-5-20251001, anthropic/claude-sonnet-4-6-20260514, anthropic/claude-opus-4-7, anthropic/claude-sonnet-4-6, anthropic/claude-opus-4-6, anthropic/claude-opus-4-5, anthropic/claude-sonnet-4-5, anthropic/claude-haiku-4-5, github-copilot/claude-opus-4.6, github-copilot/claude-sonnet-4.6, github-copilot/gpt-5, github-copilot/gpt-5.1-codex, github-copilot/gemini-3.1-pro-preview, github-copilot/gpt-5.1-codex-max, github-copilot/gpt-4.1, github-copilot/gpt-4o, github-copilot/gpt-5-mini

---

ts=1777556368863 status=ok    provider=claude-cli model=claude-sonnet-4-6  (pre-2026.4.29)
ts=1777642200550 status=error provider=-          err='cron payload.model claude-cli/claude-sonnet-4-6 rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6'  (post-2026.4.29)
ts=1777647673390 status=error provider=-          err=same as above
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

After updating from 2026.4.27 → 2026.4.29, every cron job with payload.model: "claude-cli/<model>" fails with:

cron payload.model 'claude-cli/claude-sonnet-4-6' rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6

…even though the entry is present in ~/.openclaw/openclaw.json under agents.defaults.models. openclaw models confirms claude-cli/* entries are silently filtered out of the configured-models catalog at parse time. anthropic/* and github-copilot/* entries continue to work.

8 of my crons were broken by this in one night. The same crons ran successfully on 2026.4.27.

Steps to reproduce

  1. In ~/.openclaw/openclaw.json, add:
    "agents": {
      "defaults": {
        "models": {
          "anthropic/claude-sonnet-4-6": {},
          "claude-cli/claude-sonnet-4-6": {}
        },
        "cliBackends": {
          "claude-cli": { "command": "/path/to/claude" }
        }
      }
    }
  2. Run openclaw config validate → reports Config valid.
  3. Run openclaw models → output reports the catalog. claude-cli/claude-sonnet-4-6 is missing. anthropic/claude-sonnet-4-6 is present.
  4. Add a cron with payload.model: "claude-cli/claude-sonnet-4-6" and run it. Job fails with the rejection error above.
  5. Change the same cron's payload.model to anthropic/claude-sonnet-4-6 → passes validation (but loses claude-cli backend behavior, including FS write tools in cron sessions).

Expected behavior

Each claude-cli/<model> entry in agents.defaults.models is added to the cron-validation allowlist. Crons whose payload.model matches an allowlisted claude-cli/<model> key should pass validation and run via the claude-cli backend, as they did on 2026.4.27.

Actual behavior

claude-cli/<model> entries are accepted by openclaw config validate and present in the on-disk JSON, but absent from the in-memory catalog used to build the cron allowlist. Cron payload validation rejects them as not allowed, even though the exact key (provider/model) is in the file. openclaw doctor reports Blocked by allowlist: 0 and gives no signal that the entries were dropped.

OpenClaw version

2026.4.29 (regressed from 2026.4.27, which worked)

Operating system

macos (Darwin 25.3.0)

Install method

npm global (npm install -g openclaw)

Model

Confirmed for: claude-cli/claude-sonnet-4-6, claude-cli/claude-opus-4-7, claude-cli/claude-haiku-4-5. Likely affects all claude-cli/* keys.

Provider / routing chain

claude-cli backend (synthetic plugin-owned auth, command path: ~/.local/bin/claude)

Additional provider/model setup details

  • agents.defaults.agentRuntime.id: "claude-cli"
  • agents.defaults.cliBackends.claude-cli.command is set and the binary exists
  • claude-cli auth profile is healthy (expiring in 7h per openclaw models)

Logs, screenshots, and evidence

openclaw models output (only catalog line shown; note no claude-cli/* entries):

Configured models (17): anthropic/claude-haiku-4-5-20251001, anthropic/claude-sonnet-4-6-20260514, anthropic/claude-opus-4-7, anthropic/claude-sonnet-4-6, anthropic/claude-opus-4-6, anthropic/claude-opus-4-5, anthropic/claude-sonnet-4-5, anthropic/claude-haiku-4-5, github-copilot/claude-opus-4.6, github-copilot/claude-sonnet-4.6, github-copilot/gpt-5, github-copilot/gpt-5.1-codex, github-copilot/gemini-3.1-pro-preview, github-copilot/gpt-5.1-codex-max, github-copilot/gpt-4.1, github-copilot/gpt-4o, github-copilot/gpt-5-mini

The claude-cli/claude-sonnet-4-6, claude-cli/claude-opus-4-7, and claude-cli/claude-haiku-4-5 entries from agents.defaults.models do not appear, despite being valid JSON keys in that map.

openclaw cron runs --id <jobId> — same job, before and after the binary update at 2026-04-30 18:15 PT:

ts=1777556368863 status=ok    provider=claude-cli model=claude-sonnet-4-6  (pre-2026.4.29)
ts=1777642200550 status=error provider=-          err='cron payload.model claude-cli/claude-sonnet-4-6 rejected by agents.defaults.models allowlist: claude-cli/claude-sonnet-4-6'  (post-2026.4.29)
ts=1777647673390 status=error provider=-          err=same as above

Source location of the error string: dist/isolated-agent-DPBQL0rZ.js, function formatCronPayloadModelRejection, called when resolveAllowedModelRefFromAliasIndex returns { error: "model not allowed: <key>" } — i.e., the resolved key for the cron payload is not present in the set returned by buildAllowedModelSetWithFallbacks (dist/model-selection-shared-CJbAuPhe.js).

Impact and severity

8 of my production crons broke overnight from a single point release: K-2 Morning Brief, K2 Dashboard Inbox Poller, K2 Inbox AM, Async Context Dump, K2 Memory Maintenance, Memory Dreaming Promotion, Tennis Paper Picks 5pm, K-2 Paper Picks Card (6am), healthcheck:security-audit. Switching them to anthropic/<model> passes validation but loses cron-session FS write tools (Bash/Write/Edit), silently producing degraded output — so the prefix flip is not a viable workaround.

Additional information

openclaw config validate returns Config valid. openclaw doctor reports Blocked by allowlist: 0. Neither surfaces the silent drop, so users will not realize the regression until cron runs start failing, often hours later. A validation warning when entries in agents.defaults.models are not added to the configured catalog would help.

extent analysis

TL;DR

The issue can be fixed by downgrading to OpenClaw version 2026.4.27, as the regression occurred after updating to 2026.4.29.

Guidance

  • Verify that the claude-cli/<model> entries are present in the agents.defaults.models section of the ~/.openclaw/openclaw.json file.
  • Check the output of openclaw models to confirm that the claude-cli/<model> entries are missing from the configured-models catalog.
  • Consider downgrading to OpenClaw version 2026.4.27, as it is confirmed to work with the claude-cli/<model> entries.
  • If downgrading is not feasible, try to identify any other changes made to the configuration or environment that may be contributing to the issue.

Example

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

Notes

The root cause of the issue is not explicitly stated, but it appears to be related to a change in how OpenClaw handles claude-cli/<model> entries in the agents.defaults.models section. The issue is specific to OpenClaw version 2026.4.29 and does not occur in version 2026.4.27.

Recommendation

Downgrade to OpenClaw version 2026.4.27, as it is confirmed to work with the claude-cli/<model> entries and does not exhibit the regression.

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

Each claude-cli/<model> entry in agents.defaults.models is added to the cron-validation allowlist. Crons whose payload.model matches an allowlisted claude-cli/<model> key should pass validation and run via the claude-cli backend, as they did on 2026.4.27.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING