openclaw - 💡(How to fix) Fix WebChat replay drops user-visible sessions_yield messages stored only as tool results [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

On WebChat, a user-visible status update emitted through sessions_yield can appear live, but disappear after refresh/replay because the yielded text is persisted only inside a tool result payload rather than as durable assistant text.

Root Cause

Summary

On WebChat, a user-visible status update emitted through sessions_yield can appear live, but disappear after refresh/replay because the yielded text is persisted only inside a tool result payload rather than as durable assistant text.

Fix Action

Fixed

Code Example

{
  "role": "toolResult",
  "toolName": "sessions_yield",
  "content": [{
    "content": "{ \"status\": \"yielded\", \"message\": \"...\" }"
  }]
}
RAW_BUFFERClick to expand / collapse

Summary

On WebChat, a user-visible status update emitted through sessions_yield can appear live, but disappear after refresh/replay because the yielded text is persisted only inside a tool result payload rather than as durable assistant text.

Environment

  • OpenClaw version: 2026.5.26
  • Surface: WebChat
  • Runtime: OpenAI Codex session with OpenClaw session tools

Minimal Repro

  1. In a WebChat session, spawn a child/subagent with sessions_spawn.
  2. Have the parent/session use sessions_yield with a user-visible status message while waiting for push-based child completion.
  3. Observe that the status message appears live in WebChat.
  4. Refresh/reopen/replay the session history.
  5. The yielded status message is no longer visible as a normal assistant message.

Observed

The persisted transcript stores the yielded message as a tool result shape similar to:

{
  "role": "toolResult",
  "toolName": "sessions_yield",
  "content": [{
    "content": "{ \"status\": \"yielded\", \"message\": \"...\" }"
  }]
}

On replay, WebChat appears to render durable assistant messages but not this sessions_yield tool-result payload as visible assistant text. The live optimistic/streamed message is therefore replaced by the persisted snapshot and appears to disappear.

Expected

User-visible text passed to sessions_yield should be durable across transcript replay. Either:

  • sessions_yield should persist a normal assistant-visible message, or
  • WebChat replay should render persisted sessions_yield message payloads as visible assistant status text.

Impact

This looks like message loss to the user and is especially confusing during default subagent workflows, where OpenClaw instructs agents to rely on push completion/yield instead of polling.

Related

Possibly related to #47975, but this issue is narrower: the yielded message is visible live, then disappears on persisted WebChat replay.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix WebChat replay drops user-visible sessions_yield messages stored only as tool results [1 pull requests]