observe lets your bot listen to a group without answering — every message lands in the transcript, but the agent only runs when it’s @mentioned.
Quick Start
1
Simple Usage
Write the agent that answers when addressed.Behind the scenes: run this agent through the Telegram, Discord or Slack bot with
group_policy: observe.2
Gateway YAML (the real switch)
group_policy: observe is the whole change. Add session_scope: per_chat for shared group memory.How It Works
Unmentioned messages are recorded as passiveuser turns; the agent only runs on an @mention and sees the full recent conversation.
Policy Options
Everygroup_policy value and when to pick it.
Interaction Flow
What the group sees versus what the transcript actually holds underobserve + per_chat.
Compatibility
Telegram, Discord and Slack honourobserve today — they share one group-admission decision, so the same group_policy behaves identically on all three. The YAML above uses telegram:; discord: and slack: channel entries take the same keys.
Reply-to-bot on Discord and Slack
Discord: using Discord’s native Reply on one of the bot’s own messages counts as addressing the bot. Slack: a reply posted in a thread whose parent message was posted by the bot counts as addressing the bot. Top-level channel messages, and threads started under someone else’s message, do not count.Best Practices
Prefer observe over respond_all + NO_REPLY
Prefer observe over respond_all + NO_REPLY
observe records unmentioned messages without running the agent — no LLM tokens spent, no risk of an accidental reply. respond_all + NO_REPLY runs the agent on every message and then chooses silence, which is more expensive and less safe.DMs are unaffected
DMs are unaffected
DMs always run the agent regardless of
group_policy. observe only changes how unmentioned group messages are handled.Account for retention and PII
Account for retention and PII
Every unmentioned message is stored. In busy or sensitive channels, lower
max_history or enable compaction to summarise older turns.Related
Per-Chat Session Scope
Share one transcript across a group with sender attribution
Bot Intentional Silence
Let the agent choose not to reply with NO_REPLY

