You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Docker: keep the bundled Codex plugin in official release image keep lists so the default OpenAI agent harness remains available after Docker pruning. Fixes #83613. (#83626) Thanks @YuanHanzhong.
30
30
- CLI/channels: preserve the first line of `openclaw channels logs` output when the rolling tail window starts exactly on a line boundary, mirroring the already-fixed `readLogSlice` behavior in `src/logging/log-tail.ts`.
31
31
- Control UI: treat terminal session status as authoritative over stale active-run flags so completed terminal runs stop showing abort/live UI. (#84057)
32
+
- Codex/message: tell message-tool-only Codex turns to send visible channel output with `message(action="send")` before ending, so direct replies do not stay private. Fixes #84129. (#84397) Thanks @joshavant.
32
33
- CLI: preserve embedded equals signs in inline root option values instead of truncating after the second separator. (#83995) Thanks @ThiagoCAltoe.
33
34
- Matrix/config: accept `messages.queue.byChannel.matrix` queue overrides and keep queue provider schema/type keys aligned for Matrix, Google Chat, and Mattermost. Thanks @bdjben.
34
35
- CLI: format `openclaw acp client` failures through the shared error formatter so object-shaped errors stay readable instead of printing `[object Object]`. Fixes #83904. (#84080)
Copy file name to clipboardExpand all lines: src/agents/tools/message-tool.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -859,7 +859,7 @@ function appendMessageToolVisibleReplyHint(
859
859
consttargetGuidance=requireExplicitTarget
860
860
? "Include target when sending."
861
861
: "target defaults to the current source conversation; omit unless sending elsewhere.";
862
-
return`${description} This turn: use action="send" with message for visible replies to the current source conversation. ${targetGuidance} Normal final answers stay private.`;
862
+
return`${description} This turn: if visible output is needed in the current source conversation, call action="send" with message before ending. ${targetGuidance} Normal final answers stay private and are not visible in this mode.`;
Copy file name to clipboardExpand all lines: src/auto-reply/reply/dispatch-acp.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -127,7 +127,7 @@ function resolveAcpTurnText(params: {
127
127
[
128
128
"Source channel delivery is private by default for this turn.",
129
129
"Normal ACP final output will not be automatically posted to the source channel.",
130
-
"To send visible output, use message(action=send). The target defaults to the current source channel.",
130
+
'If visible output is needed in the current source channel, call `message` with `action="send"` before ending. The target defaults to the current source channel.',
Copy file name to clipboardExpand all lines: src/auto-reply/reply/groups.ts
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -231,7 +231,7 @@ export function buildGroupChatContext(params: {
231
231
lines.push(`You are in a ${providerLabel} group chat.`);
232
232
if(messageToolOnly){
233
233
lines.push(
234
-
"Normal final replies are private and are not automatically sent to this group chat. To post visible output here, use the message tool with action=send; the target defaults to this group chat.",
234
+
'Normal final replies are private and are not automatically sent to this group chat. If this turn needs visible output here, call the message tool with action="send" before ending; the target defaults to this group chat.',
235
235
);
236
236
}else{
237
237
lines.push(
@@ -255,7 +255,7 @@ export function buildGroupChatContext(params: {
"If no visible group response is needed, do not call message(action=send). Your normal final answer stays private and will not be posted to the group.",
258
+
'If no visible group response is needed, do not call message(action="send"). Your normal final answer stays private and will not be posted to the group.',
259
259
);
260
260
}
261
261
if(canUseSilentReply){
@@ -286,10 +286,10 @@ export function buildDirectChatContext(params: {
286
286
lines.push(`You are in a ${providerLabel} direct conversation.`);
287
287
if(messageToolOnly){
288
288
lines.push(
289
-
"Normal final replies are private and are not automatically sent to this conversation. To post visible output here, use the message tool with action=send; the target defaults to this conversation.",
289
+
'Normal final replies are private and are not automatically sent to this conversation. If this turn needs visible output here, call the message tool with action="send" before ending; the target defaults to this conversation.',
290
290
);
291
291
lines.push(
292
-
"If no visible direct response is needed, do not call message(action=send). Your normal final answer stays private and will not be posted to the conversation.",
292
+
'If no visible direct response is needed, do not call message(action="send"). Your normal final answer stays private and will not be posted to the conversation.',
0 commit comments