🔍 Searching the web… while the agent works. Without it, the user sees nothing until the final answer.
🤔 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 Output:
supports_status_text=True, and it has an async set_status_text(channel_id, text) method.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
textclears the line when the turn ends. - The method is not part of
BotProtocol. It is optional and checked at runtime withcallable(...). Adding it to the@runtime_checkableprotocol would makeisinstance(adapter, BotProtocol)fail for every existing adapter. - If the flag is
Truebut the method is missing, the channel falls back tooff, the same as before.
Behaviour details
- Only
autoandprogressuse the status line.draftfalls back tooffon 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: feedis 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_textfails, 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 asprogress 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
Prefer a status line over nothing
Prefer a status line over nothing
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.
Don't deduplicate in the adapter
Don't deduplicate in the adapter
The streamer already skips unchanged lines, so your adapter can forward every call straight to the provider.
Treat empty text as end of turn
Treat empty text as end of turn
The streamer sends
"" after the final answer. Remove the line instead of showing a blank status.Fail quietly
Fail quietly
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.Related
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

