Skip to main content
Channels that can neither edit messages nor add reactions (email, SMS, IRC, many webhook transports) can show a short, replaceable status line such as 🔍 Searching the web… while the agent works. Without it, the user sees nothing until the final answer.
On a channel that opts in, the user sees 🤔 Thinking..., then an activity line such as Searching the web…, then the final answer. The status line clears when the turn ends.
No built-in adapter (Telegram, Discord, Slack, WhatsApp, Email, …) turns this on yet. It is for custom adapters that have somewhere to put a short status line, such as a subject line, a header, or an IRC topic.

Quick Start

1

Use auto or progress streaming

You don’t need to change the agent. Set streaming to auto (or progress) on the channel, the same way as for any other bot.
activity_status is optional. Without it the line reads 🤔 Running <tool>..., which shows the raw tool name.
2

Opt in from your adapter

Your adapter needs three things: it reports that it can’t edit, it sets supports_status_text=True, and it has an async set_status_text(channel_id, text) method.
Output:

How It Works

The streamer logs Channel <id> can't edit; routing streaming mode '<mode>' to status text at INFO when this mode is active.

Choosing a surface

Each channel uses the best surface it supports: draft is never switched to a status line. Choosing draft means you want in-place edits, so on a channel that can’t edit it still falls back to off.

When to enable


Configuration Options

There is no new StreamingConfig field. The behaviour comes only from the capability flag and the method being present.

Required method

  • An empty text clears the line when the turn ends.
  • The method is not part of BotProtocol. It is optional and checked at runtime with callable(...). Adding it to the @runtime_checkable protocol would make isinstance(adapter, BotProtocol) fail for every existing adapter.
  • If the flag is True but the method is missing, the channel falls back to off, the same as before.

Behaviour details

  • Only auto and progress use the status line. draft falls back to off on channels that can’t edit.
  • If a status line hasn’t changed, it isn’t sent again, so there are no extra API calls.
  • The multi-line progress_style: feed is not used here. You get a single line.
  • Status updates share the edit rate limiter and flood backoff (disable_progressive_edits_after, flood_backoff_factor, max_interval).
  • If set_status_text fails, the turn carries on and the final answer is still delivered.
  • With the default supports_status_text=False, nothing changes: channels that can’t edit stay silent until the answer arrives.

Privacy

The status line uses the same activity line as progress mode. Set activity_phrases and tool names, arguments, URLs and file paths never reach the user. Outbound redaction (redact_outbound_text) runs before every push.

Best Practices

If an email, SMS, or IRC channel can carry a short header or subject-like field, opt in. Several minutes of silence makes users think the bot is broken.
The streamer already skips unchanged lines, so your adapter can forward every call straight to the provider.
The streamer sends "" after the final answer. Remove the line instead of showing a blank status.
Raise or log inside set_status_text if the provider rejects an update. The streamer catches the error, logs it at debug level, and still delivers the final answer.

Streaming Replies

Draft, progress, and auto streaming modes

Platform Capabilities

Capability flags adapters declare

Status Reactions

Emoji progress on channels with reactions

Typing Indicators

Typing signals while the agent works