Summary
Control UI leaks internal async completion / heartbeat system messages into the user-visible chat instead of handling them silently.
What happened
After a background/async command completion event, the chat displayed internal system text such as:
An async command completion event was triggered, but user delivery is disabled for this run.
Handle the result internally and reply HEARTBEAT_OK only.
Current time: ...
HEARTBEAT_OK
This looks like internal orchestration text that should never be rendered in the normal conversation UI.
Why this is a problem
- Exposes internal control/runtime instructions to end users
- Confusing and alarming in normal chat usage
- Makes the assistant appear broken even when the underlying run finished successfully
Expected behavior
Async completion / heartbeat-only system events should be consumed internally and should not appear in the user-visible conversation.
Actual behavior
The raw/internal system messages were rendered in Control UI chat bubbles.
Environment
- OpenClaw app:
2026.4.24
- Channel/surface:
webchat / Control UI
- Runtime observed in session:
openai-codex/gpt-5.4
- OS: macOS (observed on a local gateway setup)
Repro idea
I do not have a minimal deterministic repro yet, but this was observed right after an async command completion event in Control UI. It appears related to the path where user delivery is disabled for the completion event, but the UI still renders the associated internal message.
Notes
This may be the same class of issue as other internal event/rendering leaks, but I could not find an obvious duplicate from a quick search.
Summary
Control UI leaks internal async completion / heartbeat system messages into the user-visible chat instead of handling them silently.
What happened
After a background/async command completion event, the chat displayed internal system text such as:
An async command completion event was triggered, but user delivery is disabled for this run.Handle the result internally and reply HEARTBEAT_OK only.Current time: ...HEARTBEAT_OKThis looks like internal orchestration text that should never be rendered in the normal conversation UI.
Why this is a problem
Expected behavior
Async completion / heartbeat-only system events should be consumed internally and should not appear in the user-visible conversation.
Actual behavior
The raw/internal system messages were rendered in Control UI chat bubbles.
Environment
2026.4.24webchat/ Control UIopenai-codex/gpt-5.4Repro idea
I do not have a minimal deterministic repro yet, but this was observed right after an async command completion event in Control UI. It appears related to the path where user delivery is disabled for the completion event, but the UI still renders the associated internal message.
Notes
This may be the same class of issue as other internal event/rendering leaks, but I could not find an obvious duplicate from a quick search.