> ## Documentation Index
> Fetch the complete documentation index at: https://chatcli.edilsonfreitas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Proactive Messaging (@send)

> The AI initiates messages on Telegram, WhatsApp, Discord, Slack or a webhook by reusing the gateway adapters — the @send tool.

The **`@send`** tool lets the agent **initiate** a message on a messaging channel — not just reply. It reuses the same adapters as the [Chat Gateway](/gateway/chat-gateway) (Telegram, WhatsApp, Discord, Slack and a generic webhook), so it works with the credentials you already configured, with no new integration.

<Info>
  This is the native equivalent of hermes-agent's `send_message`: notify the user or deliver a result to a chat proactively.
</Info>

***

## When to use

* Notify the user when a long task finishes ("build green ✅").
* Deliver a result to a specific group/channel.
* Fire an alert from an agent, the scheduler or the gateway daemon.

Chat mode runs no tools; use `@send` in **agent** or **coder**, or via the `send-message` skill.

***

## Subcommands

```text theme={"system"}
<tool_call name="@send" args='{"cmd":"send","args":{"to":"telegram","message":"Build green ✅"}}' />
<tool_call name="@send" args='{"cmd":"list"}' />
```

### `send {to, message}`

* **`to`** is either:
  * a **bare platform** — `telegram`, `whatsapp`, `discord`, `slack`, `webhook` — which delivers to that platform's *home channel* (`CHATCLI_<PLATFORM>_HOME_CHANNEL`); or
  * a **`platform:chat_id`** target — e.g. `telegram:-1001234567890`, `whatsapp:+5511999999999`, `slack:C0123ABC`. Everything after the first `:` is passed verbatim as the chat ID; the adapters post to the chat itself, not to a thread or topic inside it.
* **`message`** is plain text.
* **WhatsApp** only accepts free-form messages within 24 hours of the person's last message, and the gateway sends no templates, so a message outside that window fails. **Webhook** messages need `CHATCLI_WEBHOOK_CALLBACK_URL`: without it there is nowhere to deliver them.

### `list`

Shows configured platforms and whether each has a home channel.

***

## Configuration

| Variable | Purpose |
| - | - |
| `CHATCLI_TELEGRAM_HOME_CHANNEL` | Default Telegram channel for `to:"telegram"` |
| `CHATCLI_WHATSAPP_HOME_CHANNEL` | Default WhatsApp channel |
| `CHATCLI_DISCORD_HOME_CHANNEL` | Default Discord channel |
| `CHATCLI_SLACK_HOME_CHANNEL` | Default Slack channel |
| `CHATCLI_WEBHOOK_HOME_CHANNEL` | Default webhook target |

Per-platform credentials are the gateway's (`CHATCLI_TELEGRAM_BOT_TOKEN`, etc.). `@send` builds the configured adapters on each call via `gateway.BuildConfigured()`, so it works with or without the daemon running. Check the state in `/config` (*Integrations · Gateway · Proactive messaging*).

***

## Common errors

* **"platform is not configured"** → missing credentials; run `@send list` or set the token.
* **"no target for X"** → no `chat_id` and no home channel; pass `platform:chat_id` or set `CHATCLI_<PLATFORM>_HOME_CHANNEL`.

***

## Scope

`@send` sends **text**. Outbound media is delivered by other paths: voice via the [gateway TTS](/gateway/text-to-speech) and images via [@image](/tools/image-generation).

<Tip>
  For natural-language auto-activation ("ping me on Telegram"), use the bundled `send-message` skill — see [Builtin Skills](/tools/builtin-skills).
</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.