Skip to content

Proactivity

Proactive agents in Snippbot act on their own initiative — surfacing timely insights, delivering digests, and taking autonomous actions without waiting for an explicit user prompt. Proactivity bridges scheduled automation and reactive chat-based interaction.

Proactivity is implemented through two complementary systems:

  1. Scheduler — Jobs defined with cron, interval, or natural language schedules. When they fire, the agent executes its goal autonomously and delivers results to a channel.

  2. Channel proactivity — The channel adapter system can be configured to allow agents to send messages to platforms (Slack, Telegram, Discord, etc.) without the user first sending a message.

The SmartScheduler learns from your activity patterns to suggest optimal times for proactive jobs:

User typically active: 09:00–12:00, 14:00–17:00 (Mon–Fri)
Suggested time for "daily digest": 08:55 (5 min before typical start)

The scheduler builds a UserActivityPattern from session timing data and uses it to propose schedules when you create a new job without specifying a time:

"Send me a morning briefing every weekday"
→ Suggested: weekdays at 08:55 (your typical start minus 5 min)

Proactive messages respect quiet hours to avoid notifications outside work hours. Quiet hours are optional and configurable:

SettingDefault
Quiet hours start22:00 (configurable)
Quiet hours end08:00 (configurable)

Proactive jobs that fire during quiet hours are deferred — their result is queued and delivered when quiet hours end, not dropped.

Each agent can be set to a proactivity level that controls how many insights it delivers per day:

LevelMax insights per dayMin delay betweenCan interrupt
Silent0N/ANo
Cautious14 hoursNo
Balanced31 hourNo
Eager515 minutesYes (high priority)
AggressiveUnlimitedNoneYes

Configure quiet hours and proactivity level in Settings → Channels → Proactivity in the Snippbot UI.

Channel proactivity is disabled by default. Enable it per-platform in Settings → Channels in the Snippbot UI:

  1. Open Settings → Channels and select the platform
  2. Toggle Proactive Enabled to on
  3. Set a Public URL (required for platforms that deliver webhooks) under channel settings
Goal: Summarize overnight GitHub activity, new issues, and PRs for my repos
Schedule: weekdays at 08:00
Delivery: Slack #engineering
Goal: Check if BTC price has changed by more than 5% since yesterday
Schedule: every 1h
Condition: only run if change > 5%
Delivery: Telegram @me
Goal: Compile a summary of completed tasks, pending items, and calendar events
Schedule: weekdays at 17:30
Delivery: Email summary
Goal: Check error rate from the last hour in Datadog; alert if > 1%
Schedule: every 15m
Condition: only if error_rate > 0.01
Delivery: PagerDuty webhook
ReactiveProactive
Triggered byUser messageSchedule or event
Approval requiredOnly for elevated actionsPer permission tier
DeliveryChat interfaceChannel or webhook
HistoryIn chatIn scheduler run history

Proactive message delivery is governed by the agent’s proactivity level (see table above). For example, a Balanced agent delivers at most 3 insights per day with at least 1 hour between each. An Eager agent delivers up to 5 per day with a minimum 15-minute gap.

Messages that exceed the daily limit are queued, not dropped.

Each agent can have proactivity disabled independently in its settings. Useful during development or testing:

  • From the agent detail page → Settings → Proactivity: toggle Off