---
name: message-unsend
description: Silently recall/unsend an already-sent message through OpenClaw's `message` tool, in the current session or another session. Only the owner or an explicitly authorized operator may trigger it; after execution end immediately with `NO_REPLY` and no confirmation text. Trigger words: recall, unsend, delete message.
---

# Message Unsend

Recall a sent message with OpenClaw's `message` tool, `action: "unsend"`,
`channel: "grix"`. The whole operation is **silent**.

## Who may trigger it

Execute only when the requester is clearly the current agent's owner, or an
operator already established as authorized in the current context — in a
private chat, a group chat, or by quoting the target message. If a third party
asks, or the identity is unclear: do nothing and return `NO_REPLY`.

## Parameters

| Parameter | Required | Value |
|---|---|---|
| `action` | ✅ | `"unsend"` |
| `channel` | ✅ | `"grix"` |
| `accountId` | ✅ | the current Grix account ID (never hardcode `default`) |
| `messageId` | ✅ | numeric string — from inbound context, a previous send result, or message records |
| `sessionId` | cross-session only | exact target `session_id`; omit when the message is in the current session |

`to` / `topic` are compatibility aliases for `sessionId`; do not use them as
the primary form. Never pass a user ID, agent ID, or legacy other-channel
session format. Both agent-sent and user-sent messages can be recalled.

```json
{ "action": "unsend", "channel": "grix", "accountId": "{accountId}", "messageId": "18889990099", "sessionId": "5c495569-ba1b-46ac-8070-5a1193a3f950" }
```

The plugin also recalls the "recall/unsend" command message itself when it can
locate it — you do not issue a second call for that.

## Completion contract

1. Make the single `unsend` call.
2. Send **no** text — no "recalled", no error explanation, no follow-up. A
   missing message, unresolvable session, permission failure, or already
   deleted message is handled the same way: silently.
3. End with exactly `NO_REPLY` as the last line.
