OpenClaw Digest: Improving Codex Integration, Provider Stability, and UI Responsiveness
Merged PRs
- fix(runner): gate surface_error throw on failoverFailure Original PR
- fix(plugins): expose effective context budget in hooks Original PR
- fix: use Codex context windows for OpenAI runtime Original PR
- docs: restore 2026.5.12 changelog section Original PR
- fix: make log stream height responsive to viewport Original PR
- fix: align Codex cron bootstrap context Original PR
- fix(discord): honor threadName when sending to threads Original PR
- Render provider errors in chat history Original PR
- Fix native Ollama num_ctx doctor migration Original PR
- fix(acpx): surface Codex wrapper stderr on internal errors Original PR
- fix(config): return persisted config write responses Original PR
- docs: consolidate plugin management docs Original PR
- fix(skills): load managed skill symlink roots Original PR
- [codex] Tolerate unsupported ACP timeout config hints Original PR
- Stream Codex preambles in channel progress drafts Original PR
- fix: plan managed npm peer pins with npm Original PR
- fix(clawhub): cancel stalled archive body reads Original PR
- fix(webchat): render tts audio command replies Original PR
- fix: keep command cron turns lightweight Original PR
- Avoid stale auth profile write before forced Codex token refresh Original PR
- Fix Telegram polling lease cleanup on restart Original PR
- fix: prevent Codex app-server surrogate stalls Original PR
Key Changes
Codex & ACP Integration Refinements
Significant effort was directed toward the stability and transparency of the Codex app-server and ACP (Agent Control Plane) runtimes. Key improvements include:
- Error Visibility: The
acpxruntime now captures and surfaces redacted stderr from the Codex wrapper, preventing generic "Internal error" messages from masking actionable configuration or provider failures. - Resilience: The system now tolerates unsupported ACP timeout config hints, preventing child sessions from failing immediately when an adapter (like OpenCode) rejects the
timeoutkey. - Data Integrity: A fix was implemented to sanitize Codex JSON-RPC strings, stripping unpaired UTF-16 surrogates that previously caused Rust-based JSON decoders to reject turns, which could wedge gateway reply lanes.
- UX Enhancements: Codex preambles and progress narration are now streamed as keyed updates in channel progress drafts, allowing users to see "I am checking..." narration in real-time.
Provider & Runtime Stability
- Ollama Context Fix: A critical regression where native Ollama models ignored
contextWindowand defaulted to 4096 tokens was resolved. Theopenclaw doctor --fixcommand now correctly migrates these budgets intoparams.num_ctx. - Telegram Polling: A leak in the Telegram polling lease registry was fixed, ensuring that stale leases are released during gateway restarts to prevent "duplicate poller" errors.
- Failover Logic: The runner now gates
surface_errorthrows onfailoverFailure, preventing successful turns with stale error messages from being incorrectly converted into hard errors for the client.
UI & DX Improvements
- Webchat & macOS App: The webchat UI now correctly renders
/tts audioreplies as playable audio blocks. Similarly, the macOS chat history now preserves and renders provider error details for failed assistant turns. - Responsive Layouts: The log stream viewer in the Control UI was updated to use a responsive viewport height (
calc(100vh - 280px)) instead of a hardcoded 500px cap. - Plugin Management: Plugin documentation was consolidated to simplify installation and publishing workflows, shifting guidance toward ClawHub.
Impact
These changes collectively reduce "silent failures" across the system. By surfacing underlying stderr in ACP runtimes and rendering provider errors in the macOS UI, developers and users can diagnose issues without digging into raw logs. The Ollama and Telegram fixes resolve high-severity regressions that previously broke agent functionality or flooded logs with noise.
Furthermore, the refinement of the Codex integration—specifically the handling of JSON-RPC surrogates and the streaming of preambles—ensures a smoother, more professional interaction loop in channel integrations. The transition to using npm's package-lock planner for managed plugin peer pins also increases the reliability of plugin installations by avoiding the promotion of nested transitive versions into root dependencies.