Environment
- OpenClaw 2026.6.5 (5181e4f), provider
anthropic, macOS host, launchd-managed gateway.
Component
openclaw message send --dry-run CLI
Note on version
Behaviorally verified on 2026.5.20; the same echo construction is present in the 2026.6.5 dist (via gateway${params.channel ...}, Message ID: unknown, plus dryRun/dry-run handling), so it carries into 6.5. (Not re-run live on 6.5 to avoid the inverse risk of an unintended real send.)
Observed vs expected
- Observed:
openclaw message send --channel <ch> --target <target> --dry-run -m "..." prints ✅ Sent via gateway (<ch>). Message ID: unknown, reading as a real successful send. It is not — a genuine send emits outbound transport events in the gateway log (Sending message -> Sent message with a real messageId); a --dry-run produces none (the echo says unknown).
- Expected: a dry-run should print a clearly non-transmitting result (e.g.
🟡 Dry run — not sent) and omit/mark the Message ID.
Reproduction
openclaw message send ... --dry-run -m "test".
- Observe
✅ Sent via gateway ....
- Tail the gateway log -> no
Sending/Sent message transport events; compare a real send, which emits them with a concrete messageId.
Severity
Cosmetic / misleading, highest trust-risk of the three — a caller (operator or autonomous agent) can believe a dry-run delivered, or fear one leaked to a live channel. The reliable signal is the transport events, not the CLI echo.
Suggested fix
In --dry-run, branch the output to a non-success, non-transmitting result and suppress the Message ID line (or render n/a (dry run)).
Non-blocking accuracy/observability bug found operating 2026.6.5 in production. Internal/private specifics (account numbers, channel/JID/message identifiers) intentionally omitted — reproduces from the described shape + cited source symbols.
Environment
anthropic, macOS host, launchd-managed gateway.Component
openclaw message send --dry-runCLINote on version
Behaviorally verified on 2026.5.20; the same echo construction is present in the 2026.6.5 dist (
via gateway${params.channel ...},Message ID: unknown, plusdryRun/dry-runhandling), so it carries into 6.5. (Not re-run live on 6.5 to avoid the inverse risk of an unintended real send.)Observed vs expected
openclaw message send --channel <ch> --target <target> --dry-run -m "..."prints✅ Sent via gateway (<ch>). Message ID: unknown, reading as a real successful send. It is not — a genuine send emits outbound transport events in the gateway log (Sending message->Sent messagewith a real messageId); a--dry-runproduces none (the echo saysunknown).🟡 Dry run — not sent) and omit/mark theMessage ID.Reproduction
openclaw message send ... --dry-run -m "test".✅ Sent via gateway ....Sending/Sent messagetransport events; compare a real send, which emits them with a concrete messageId.Severity
Cosmetic / misleading, highest trust-risk of the three — a caller (operator or autonomous agent) can believe a dry-run delivered, or fear one leaked to a live channel. The reliable signal is the transport events, not the CLI echo.
Suggested fix
In
--dry-run, branch the output to a non-success, non-transmitting result and suppress theMessage IDline (or rendern/a (dry run)).Non-blocking accuracy/observability bug found operating 2026.6.5 in production. Internal/private specifics (account numbers, channel/JID/message identifiers) intentionally omitted — reproduces from the described shape + cited source symbols.