Cron Model Fix
by @mklue
Diagnose and fix OpenClaw cron job model override issues. Use when cron jobs show "not allowed, falling back to agent defaults" in logs, experience unexpecte...
clawhub install cron-model-fixπ About This Skill
name: cron-model-fix description: Diagnose and fix OpenClaw cron job model override issues. Use when cron jobs show "not allowed, falling back to agent defaults" in logs, experience unexpected cloud token burn, have slow run times, or models aren't being applied correctly. Fixes agent model allowlist configuration.
Cron Model Fix
Diagnose and fix OpenClaw cron job model override issues where configured models are rejected and fall back to agent defaults.
When to Use This Skill
Use when:
"not allowed, falling back to agent defaults" in gateway logsQuick Start
# Diagnose the issue
openclaw skill run cron-model-fix --diagnoseApply the fix (adds missing models to allowlist)
openclaw skill run cron-model-fix --fix --model ollama/qwen3.5:0.8bValidate configuration
openclaw skill run cron-model-fix --validate
Root Cause
OpenClaw has three model configuration layers. ALL must include the model:
Layer 1: Provider Model Definition
Location:models.providers..models[]
Purpose: Defines model specs (context, costs, capabilities)Layer 2: Agent Default Model
Location:agents.defaults.model.primary
Purpose: Default model when none specifiedLayer 3: Agent Model Allowlist β COMMON ISSUE
Location:agents.defaults.models
Purpose: WHICH MODELS ARE PERMITTED for agent/cron useProblem: Model exists in Layer 1, but missing from Layer 3 (allowlist).
Gateway logs show:
{"subsystem":"cron"}
"payload.model 'ollama/qwen3.5:0.8b' not allowed, falling back to agent defaults"
Diagnosis
Step 1: Check Gateway Logs
tail -100 /tmp/openclaw/openclaw-*.log | grep -i "not allowed\|falling back"
If you see: "payload.model '
β Model is missing from agent allowlist
Step 2: Check Agent Allowlist
cat ~/.openclaw/openclaw.json | python3 -c "
import json, sys
config = json.load(sys.stdin)
models = config.get('agents', {}).get('defaults', {}).get('models', {})
print('Allowed models:')
for model in models:
print(f' - {model}')
"
Check if your cron model is in the list. If not, it will be rejected.
Step 3: Check Cron Job Configuration
openclaw cron list
Verify:
model specified in payloadollama/qwen3.5:0.8b)The Fix
Add the model to agents.defaults.models in ~/.openclaw/openclaw.json:
{
"agents": {
"defaults": {
"model": {
"primary": "ollama/qwen3.5:cloud",
"fallbacks": [...]
},
"models": {
"ollama/glm-4.7-flash": {},
"ollama/kimi-k2.5:cloud": {},
"ollama/qwen2.5vl:7b": {},
"ollama/qwen3.5:397b-cloud": {},
"ollama/qwen3.5:4b-32K": {},
"ollama/qwen3.5:4b-32k": {},
"ollama/qwen3.5:9b-128k": {},
"ollama/qwen3.5:cloud": {},
"ollama/qwen3.5:0.8b": {}, β ADD THIS
"ollama/qwen3.5:2b": {} β Optional
}
}
}
}
Manual Fix Steps
1. Edit config:
nano ~/.openclaw/openclaw.json
2. Add to agents.defaults.models:
"ollama/qwen3.5:0.8b": {},
3. Restart gateway:
openclaw gateway restart
4. Verify:
openclaw cron runs --id --limit 3
Look for "model": "qwen3.5:0.8b" instead of qwen3.5:cloudAutomated Fix Script
Use the included script:
python3 ~/.npm-global/lib/node_modules/openclaw/skills/cron-model-fix/scripts/add-model-allowlist.py --model ollama/qwen3.5:0.8b
Expected Results
Before Fix
| Metric | Value | |--------|-------| | Model | Cloud fallback | | Duration | 60-180 seconds | | Input Tokens | 200K-600K per run | | Cost | Cloud token burn |After Fix
| Metric | Value | Improvement | |--------|-------|-------------| | Model | Local (e.g., qwen3.5:0.8b) | β Free | | Duration | 1-13 seconds | 5-14x faster | | Input Tokens | 5K-36K | 85-95% reduction | | Cost | ZERO | 100% savings |Validation
After applying fix, verify:
# Check for model rejection warnings
tail -50 /tmp/openclaw/openclaw-*.log | grep -i "not allowed"Should be EMPTY (no warnings)
# Check cron run history
openclaw cron runs --id --limit 1Should show:
"model": "qwen3.5:0.8b" (not cloud)
"durationMs": <15000 (fast)
"input_tokens": <50000 (low)
Common Issues
Issue: Model still not working after fix
Check:
1. Gateway restarted after config change?
2. Model format matches exactly? (e.g., ollama/qwen3.5:0.8b vs qwen3.5:0.8b)
3. Model exists in provider config (Layer 1)?
Issue: Invalid JSON after editing
Fix:
openclaw doctor --fix
Or restore from backup:
cp ~/.openclaw/openclaw.json.backup ~/.openclaw/openclaw.json
Related Skills
inbox-optimizer - Optimizes inbox scanning patterns (mesh-specific)healthcheck - General OpenClaw system health monitoringReferences
references/model-config-layers.md for detailed configuration structurereferences/troubleshooting-examples.md for real-world case studiesVersion
1.0.0 - Initial release (2026-03-30)
π‘ Examples
# Diagnose the issue
openclaw skill run cron-model-fix --diagnoseApply the fix (adds missing models to allowlist)
openclaw skill run cron-model-fix --fix --model ollama/qwen3.5:0.8bValidate configuration
openclaw skill run cron-model-fix --validate
π Constraints
After applying fix, verify:
# Check for model rejection warnings
tail -50 /tmp/openclaw/openclaw-*.log | grep -i "not allowed"Should be EMPTY (no warnings)
# Check cron run history
openclaw cron runs --id --limit 1Should show:
"model": "qwen3.5:0.8b" (not cloud)
"durationMs": <15000 (fast)
"input_tokens": <50000 (low)