Ten pull requests landed in OpenClaw's main branch today with a shared goal: eliminate synchronous session I/O from the gateway's hot paths. The effort, coordinated by steipete across a single day, moves session reads, transcript access, history lookups, agent context reads, and export I/O entirely onto the async path — and removes the old synchronous reader surface entirely.
The Full PR Series
The batch spans every layer of session handling:
- #75875 —
fix(gateway): async session transcript IO— the root fix, touching agents, web-UI, Codex extensions, and gateway - #75892 —
refactor(gateway): finish async session read paths— completes the gateway-side migration - #75909 —
refactor(gateway): remove sync session reader surface— removes the old sync API entirely - #75917 —
refactor(codex): avoid sync context history reads— Codex-specific path - #75919 —
refactor(agents): read btw context asynchronously— agent between-turn context reads - #75932 —
refactor(agents): append text turns asynchronously - #75936 —
refactor: async export file io - #75942 —
refactor: fork parent sessions asynchronously - #75946 —
refactor: parse session reads without manager - #75977 —
perf: bound async transcript history reads— the final performance guard, with docs
Why Sync I/O Was a Problem
For most self-hosted OpenClaw deployments, session transcripts live on disk. Every synchronous read against that transcript blocks Node's event loop — meaning nothing else runs until the read completes. Under normal single-session use this is tolerable; under load with multiple concurrent agent sessions, these sync reads create head-of-line delays that compound.
The problem is worse at scale. Multi-agent setups — subagents, parallel tool sessions, Discord bots handling multiple threads — all compete on the same event loop. One slow sync transcript read can delay unrelated sessions.
The Fix: Async All the Way Down
The series starts with a fix (#75875) and builds up async infrastructure across subsystems before landing a performance cap (#75977). PR #75977 goes beyond just making reads async: it bounds the transcript history read itself, preventing even large transcripts from monopolizing the event loop on a single async turn.
The removal of the sync reader surface in #75909 is the most significant line in the series. It's not a deprecation — the old synchronous session read API is gone. Anything that touched it needs to update.
What This Means for You
For most users: Transparent improvement. Sessions respond faster under load, and the gateway behaves more responsively when multiple agents are active. No config changes needed.
For plugin authors: Check your code for any direct use of the removed sync session reader surface before upgrading. The removed API was internal, so most third-party plugins won't be affected — but plugins doing custom session introspection should verify.
For multi-agent operators: This is the biggest win. Parallel subagent sessions no longer pay a sequential I/O tax on transcript reads. Expect noticeably lower turn latency in busy Discord bots and multi-agent pipelines.
A Coordinated Sprint
What's notable isn't just the changes but the approach. Ten PRs. One day. A deliberate sequence from root fix → infrastructure → propagation → performance guard → docs. This isn't organic cleanup — it reads as a planned performance sprint. The docs update in #75977 suggests this is intentional groundwork for something more to come.
All ten PRs are in main as of today and will ship together in the next tagged release after v2026.4.29.
