← NEWS DESK
operator digest

OpenClaw Main Fixes Hidden Answers, Duplicate Sends and Stalled Agent Work

Merged liveness fixes renew outbound leases, deliver cron child results, preserve speech answers, bound xAI playback state and propagate provider cancellation.

Independent reporting and tested guidance for OpenClaw operators · Editorial standards

OpenClaw has merged six liveness corrections for a deceptively similar operator symptom: work appears finished or cancelled, but the durable outcome is duplicated, hidden, blocked or still running.

The affected owners differ—outbound delivery, cron, TTS, xAI realtime voice, Slack shutdown and search providers—but the rollout question is the same: does the containing build produce one visible terminal outcome and release every resource that should end with it?

These fixes are on main; the supplied correction releases do not establish package inclusion.

Long sends now retain their producer lease

PR #118663 renews the stable producer lease while a provider-owned send remains in progress. Without renewal, a slow but valid provider operation could outlive its lease, allowing recovery to treat the same durable item as abandoned and produce a duplicate attempt.

Lease renewal should stop when ownership ends. Test a send longer than the original lease window, then a deliberately abandoned producer. The first must complete once; the second must still become recoverable after the renewal owner disappears.

Interpretation: idempotency keys reduce duplicate effects, but they do not replace correct lease ownership. A live producer must prove it is live; a dead producer must not renew forever.

Cron child results survive a heartbeat-only parent

PR #118743 fixes isolated cron delivery when the parent response is only the heartbeat sentinel. A child can complete with a real result even when the parent emits no user-facing body. Treating the parent sentinel as the final delivery decision could suppress the child’s outcome.

Acceptance needs both cases: a genuine no-op heartbeat with no child result should remain quiet, while a completed child result must be delivered exactly once through the configured destination.

TTS failure no longer erases the answer

PR #118690 preserves the hidden speech answer when synthesis fails. In a voice-first path, text may be withheld because successful audio is expected. If synthesis then fails, dropping the hidden text leaves the user with no answer despite a completed model turn.

The repaired fallback makes the answer visible. Test provider rejection, timeout and malformed audio separately; never infer success from the model completion alone.

xAI playback acknowledgement stalls are bounded

PR #119045 addresses unbounded playback marks in xAI realtime sessions. If acknowledgements stop, one mark per audio delta could accumulate, grow memory and block the next response.

The provider now caps outstanding marks at 1,024 and terminates the exact session before delivering audio that cannot be tracked. That is a fail-closed liveness decision: stopping one broken session is safer than silently evicting accounting state and continuing with ambiguous playback.

Monitor both session termination and the next-session recovery path. A cap prevents unbounded growth; it does not by itself prove the client or carrier resumed correctly.

Cancellation and shutdown reach provider-owned work

PR #118895 propagates cancellation across provider-owned search requests. Cancelling the agent-side wrapper is insufficient if an HTTP or SDK request continues consuming sockets, quota or provider work.

PR #117478 applies the same ownership principle to Slack presence polling during shutdown. A stalled poll should not prevent the channel or Gateway process from terminating.

Test cancellation before dispatch, during a streamed response and after a provider stall. Then inspect process lifetime, open requests and final transcript state—not only the command’s return value.

Acceptance matrix

Failure path Required terminal proof
Provider send exceeds lease window One provider effect; lease remains owned until settlement
Producer dies Lease expires and durable recovery can resume
Heartbeat-only parent with child result Child result delivered once
TTS synthesis fails Text answer becomes visible
xAI playback acks stop Exact session terminates at the bound; later session can recover
Search cancelled Provider-owned request aborts and no late result mutates state
Slack presence stalls on shutdown Channel and process terminate within the shutdown budget

Use controlled loopback providers and inert payloads. Do not create duplicate-message tests against real recipients or paid voice calls.

Evidence and limits

Official GitHub API records and the repository collector confirm all six PRs merged. The source records describe focused production-owner, durable-lane and cancellation tests; OpenClaw Academy did not reproduce them against paid providers or live channels.

Relevant collector IDs are 36634/36524, 36865/36751, 36867/36753, 37215/37100/37109/37110, 36637/36527, and 36617/36507.

Bottom line

A terminal-looking response is not enough. Stage the containing build until slow sends renew ownership, abandoned work becomes recoverable, hidden answers surface on failure, stalled realtime sessions stop, and cancellation reaches the provider that actually owns the request.

THE RECEIPTS

Claims should survive the click.

Primary links used for this article are listed openly. If the evidence changes, the verification date changes with it.
  1. 01Renew stable producer leases — PR #118663
  2. 02Deliver child results after heartbeat-only parent responses — PR #118743
  3. 03Preserve hidden speech answers when synthesis fails — PR #118690
  4. 04Stop xAI realtime sessions when playback acknowledgements stall — PR #119045
  5. 05Prevent stalled Slack presence polling from hanging shutdown — PR #117478
  6. 06Propagate search cancellation across provider-owned requests — PR #118895

THE OPERATOR BRIEF

One useful email when the signal earns it.

Release impact, security changes and repository intelligence. No daily sludge.