What's New in v2.3.0
Cross-Provider Fallback Chains (CRITICAL fix)
Previous versions used same-provider fallbacks for sub-agents. If a provider went down, agents with only same-provider fallbacks had zero working models.
All configs now use cross-provider chains spanning 2-3 different providers:
| Agent | Before (broken) | After (resilient) |
|---|---|---|
| codex | Opus only | Opus → Pro → Kimi |
| gemini-researcher | Flash only (same provider!) | Flash → Opus → Codex |
| gemini-fast | Pro only (same provider!) | Pro → Opus → Codex |
| kimi-orchestrator | Opus only | K2 Think → Pro → Opus |
Affected files: SKILL.md, references/provider-config.md, examples/full-stack/openclaw.json, examples/claude-gemini/openclaw.json
LLM-Friendly README Rewrite
Complete README restructure optimized for both humans and AI agents:
- Repository file index with descriptions — agents know exactly which file to read
- "For AI agents" callout — start with
SKILL.md, read references on demand - Cross-provider fallback table — all 5 agents with provider labels
- 4 providers / 6 tiers / 5 agents architecture clearly documented
- Structured troubleshooting index — 7 common issues with quick fixes
- Quick start flow — copy config → Gemini models.json → auth → verify
Token Storage Architecture Documentation
New section in references/oauth-setup.md explaining the 3-location token storage problem:
| Location | Purpose | Auto-Updated? |
|---|---|---|
credentials/oauth.json |
Initial onboard | Only on first onboard |
models.providers.*.apiKey |
Runtime API calls | By auto-refresh |
agents/*/auth-profiles.json |
Per-agent tokens | By auto-refresh |
Includes a post-renewal sync script for manual OAuth flows.
4 New Troubleshooting Entries
Based on real production issues from VPS audit (Feb 2026):
- Token desync — Token works for some agents but not others after manual renewal
- systemd ExecStartPre —
|| truedoesn't work; use-prefix - bootstrapMaxChars truncation — MEMORY.md silently truncated; configure
bootstrapMaxChars(v2026.2.14+) - Config schema rejection — Unrecognized keys invalidate entire config (Zod strict mode)
Other Changes
- Compatibility note: core routing requires v2026.2.6+, bootstrap budget config requires v2026.2.14+
- Fallback table in SKILL.md now shows all 4 fallback columns with cross-provider emphasis
- Version bumped to 2.3.0 across SKILL.md and benchmarks.json
Full Changelog: v2.2.0...v2.3.0