Proactive Agent
Overview
Operate as a reliable background partner: schedule work, recover from interruptions, and only notify when there is signal.
Tools
cron- reminders and recurring agent tasks that report back to the chat.navin/HEARTBEAT.md- quiet periodic checks (update the file; the heartbeat job runs it)/goal/ goal tools - sustained objectives across turnsspawn- long independent tracks
When to use cron vs HEARTBEAT
| Need | Mechanism |
|---|---|
| User-facing reminder / report | cron |
| Quiet “check and only speak if useful” | .navin/HEARTBEAT.md |
| Multi-turn project with state | /goal |
Workflow - schedule
- Confirm cadence and timezone.
- Write a self-contained task message (the future turn has limited chat context).
- Prefer
cron_expr+tzfor calendar schedules;every_secondsfor short loops. - List jobs with
cron(action="list")before adding duplicates.
Workflow - resume after interruption
- Re-read the last plan / goal state / relevant files.
- Restate “where we left off” in one sentence.
- Continue from the next incomplete step - do not restart completed work.
- If blocked, say what is blocked and the cheapest unblock.
Notification discipline
- Heartbeat / monitors: no news is silent.
- Failures, security issues, and deadline slips: notify immediately.
- Deduplicate: if the same alert fired recently, summarize the delta only.
Recovery checklist
After an error or restart:
- What was the objective?
- What already succeeded? (check artifacts)
- What is the next safe action?
- Do we need user approval before destructive steps?