OpenClaw 2026.9.6 Migration Notes: replace:true Chunks, Retired Config Keys, and Strict Session Models

✍️ OpenClawRadar📅 Published: October 4, 2026🔗 Source
Ad

A developer maintaining a custom WebSocket client against the OpenClaw gateway documented three breaking changes between releases 2026.9.1 and 2026.9.6. Each one cost time, so here is the extraction.

1. replace:true on the final assistant chunk

OpenAI models now run through the codex plugin. After streaming the answer under item msg_…, the gateway sends one more stream=assistant chunk under a new itemId with replace:true and the identical full text.

If your client treats every new itemId as a new paragraph, every reply renders twice. The fix: honor the replace flag — replace the prior item's content instead of appending.

2. agents.defaults.compaction.reserveTokensFloor retired

This config key was removed. If it remains in openclaw.json, the config reports as invalid: every CLI command refuses to run, and the gateway won't come back after its next restart.

Recovery commands:

openclaw config validate
openclaw doctor --fix

validate names the offending key; doctor --fix removes it. The author notes they re-added it by hand and broke things again — don't.

Ad

3. Session models are strict about fallbacks

agents.defaults.model.fallbacks only protects the configured default model. A model chosen per session via sessions.patch is strict: if that provider returns a 503, the run fails visibly instead of falling through the fallback chain. This is documented behavior.

Smaller changes

  • models.list returns entries in agents.defaults.models, not the full catalog.
  • chat.startup defaults now call the provider field modelProvider.

The author is asking whether anyone has seen other client-facing changes in 9.7 or 9.8.

📖 Read the full source: r/openclaw

Ad

👀 See Also