-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
Codex message-tool-only turns can stop after progress/status message sends #100153
Copy link
Copy link
Closed
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Priority
None yet
Summary
Codex
message_tool_onlysource-channel turns can stop after sending a progress/status line throughmessage(action=send), before the model performs the tool work it just promised to do.Real environment observed
message_tool_onlyUser-visible symptom
In a source-channel turn, the assistant replied with a short status message equivalent to "I'll check the PR titles/labels first", but then performed no GitHub/web/tool lookup and never sent the requested answer. From the user's perspective this looks like the agent only says it will do the work, then stops.
Source-level repro on current main
The current
message_tool_onlydeveloper instruction says:That does not tell Codex that a current-channel
message(action=send)is terminal/final-delivery in this mode.The observed turn then called:
{"action":"send","message":"I'll check the PR titles/labels first..."}The message tool returned a successful receipt:
{"ok":true,"messageId":"<redacted>"}Immediately after that, the app-server log recorded:
The persisted session contained the user message, the assistant progress text, the
messagetool call/result, and then noweb_search,web_fetch,bash, GitHub, or other tool calls afterward.Expected behavior
In
message_tool_onlysource-channel turns, Codex should complete any required tool work first and only usemessage(action=send)when it is ready to finish the turn with the final user-visible source-channel reply.Actual behavior
Codex can interpret
message(action=send)as an acceptable progress/status update. Because the delivered message is terminal in this delivery mode, OpenClaw releases the turn immediately and the promised follow-up work never runs.Scope / non-goals
message_tool_onlyreplies non-terminal. That behavior is important for real final replies.Proposed fix
Tighten the Codex app-server developer instruction for
message_tool_onlyruns so it states that required tool work must happen before a visible source reply, and thatmessage(action=send)should only be used for final user-visible output, not progress/status updates that need more work afterward.