Skip to content

[Bug]: Embedded runtime: agent ends turn after interstitial "one moment" message without performing the promised work; failure rate doubled on 2026.6.1 #92169

Description

@elyalvarado

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

On the embedded (OpenClaw) agent runtime with Anthropic Claude models, agents frequently end a turn immediately after sending an interstitial "follow-up promise" message (e.g. "checking the codebase, one moment"; "committing now") without performing the promised work in that turn; the user must send another message to make the agent do it. A 45-day audit across 3 agents shows the follow-through-failure rate on promised turns roughly doubled after upgrading to 2026.6.1 (73.3% of promised turns failed on 6.1 vs 36.2% pre-6.1), and the jump appears on every model tested.

Steps to reproduce

  1. Run OpenClaw 2026.6.1, embedded runtime, an Anthropic model (anthropic/claude-sonnet-4-6 or anthropic/claude-opus-4-8), on a chat channel agent (Slack).
  2. Send a request that requires the agent to do tool work before it can answer (e.g. "if I do X in the internal tool, will Y happen?", or a multi-step edit/commit task).
  3. Observe the agent send an interstitial message via the message tool that promises further work ("I couldn't find this in the docs, so I'm checking the codebase — one moment 🔍" / "Committing now").
  4. Observe the turn end there: the model's final step is stopReason: toolUse whose last/only tool call is the user-facing message(send); the agent loop does not re-engage and no further (non-message) tool calls run.
  5. The agent stays idle until the user sends another message, which starts a new turn where the work is finally performed.

Expected behavior

After sending an interstitial "I'm checking…/committing now" message, the agent should continue the promised tool work in the same turn and only conclude once it delivers the real result. This held far more often on earlier builds — pre-2026.6.1 the same audit measured a 36.2% failure rate (75/207 promised turns) vs 73.3% on 6.1. The base system prompt's Execution Bias section already directs this ("Longer work: brief progress update, then keep going").

Actual behavior

The agent treats the interstitial send as the turn's conclusion. In a representative session the model's final step (stopReason: toolUse) ended with a message(send) ("checking the codebase — one moment 🔍"); the loop did not re-invoke the model and zero investigation tool calls followed. The agent's own reasoning on the next user-triggered turn confirmed it: "I sent a message saying I was checking the codebase, but I didn't actually do the code exploration yet." The same pattern recurs with "still on it" and "committing now" interstitials.

OpenClaw version

2026.6.1 (build 2e08f0f)

Operating system

Debian GNU/Linux 12 (bookworm), kernel 6.12 x86_64 (Docker, on Amazon Linux 2023 host)

Install method

npm global (npm install -g [email protected]) inside a Docker image

Model

anthropic/claude-sonnet-4-6 and anthropic/claude-opus-4-8 (regression observed on both; also on claude-opus-4-6)

Provider / routing chain

openclaw → anthropic (direct Anthropic API; embedded OpenClaw agent runtime, not Codex harness)

Additional provider/model setup details

Embedded (OpenClaw) agent runtime. Agents run on Slack with message_tool_only visible-reply delivery (final session text is private; visible replies go through the message tool). No proxy/router in the path. The audit spanned three agents — one on Opus (admin) and two on Sonnet (editor, support) — so the per-version effect is observed across independent model configs.

Screenshot below with evidence (the Logs, screenshots, and evidence field in this form doesn't allow attachments)
Image

Logs, screenshots, and evidence

45-day follow-through audit (agents: admin/editor/support), failures ÷ promised turns:

Per version:
  version     promises  ok  fail  %fail
  2026.5.7      66       41   25   37.9%
  2026.5.18    141       91   50   35.5%
  2026.6.1      60       16   44   73.3%

Per version × model (the clean cut):
  2026.5.7  | opus-4-6      prom=51  fail=21  41.2%
  2026.5.7  | sonnet-4-6    prom=15  fail= 4  26.7%
  2026.5.18 | opus-4-6      prom=40  fail=15  37.5%
  2026.5.18 | sonnet-4-6    prom=101 fail=35  34.7%
  2026.6.1  | opus-4-6      prom=24  fail=19  79.2%
  2026.6.1  | opus-4-8      prom=21  fail=14  66.7%
  2026.6.1  | sonnet-4-6    prom=15  fail=11  73.3%

Collapsed: pre-6.1 = 36.2% (75/207),  6.1 = 73.3% (44/60)

Representative session (claude-sonnet-4-6, 2026.6.1):
  final model step stopReason=toolUse, last/only toolCall = message(send):
    "I couldn't find this in the docs, so I'm checking the codebase — one moment. :mag:"
  -> loop does not re-engage; 0 investigation tool calls run
  -> next user msg "are you still checking?" -> model thinking:
     "I sent a message saying I was checking the codebase, but I didn't
      actually do the code exploration yet. Let me do that now."

Impact and severity

Affected: users of embedded-runtime Anthropic agents on chat channels (three internal agents on Slack: admin/Opus, editor/Sonnet, support/Sonnet).
Severity: Blocks workflow — the user receives a promise with no delivery and must re-prompt; in unattended/automated flows the work would never complete.
Frequency: Intermittent but very common on 6.1 — 73.3% of promised turns (44/60) failed to follow through, vs 36.2% before the upgrade. The effect is present on all three models at the same version boundary.
Consequence: Missed/late answers, extra user round-trips, stalled automation, wasted tokens on the re-prompt cycle.

Additional information

Last known good (relatively): 2026.5.7 and 2026.5.18 both ~36–38% failure. First/most-affected: 2026.6.1 (Docker image bumped to 2026.6.1 on 2026-06-05; first agent sessions on it 2026-06-05/06). Because the failure rate doubles simultaneously across three different models (Sonnet, Opus-4-6, Opus-4-8) at exactly the 6.1 boundary, this points to a runtime/version regression rather than model behavior. Related upstream issue: #50341 (same family — model ends a turn with a non-toolUse stop after a partial step and won't resume without a new user message). Nothing in the 2026.6.2–2026.6.6 changelog appears to target interstitial-send turn termination on the embedded runtime; the Execution Bias prompt guidance is advisory only. Workaround today is the user re-prompting.

Metadata

Metadata

Assignees

Labels

P1High-priority user-facing bug, regression, or broken workflow.bugSomething isn't workingclawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.regressionBehavior that previously worked and now fails

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions