Why does a proactive agent send the same message twice?
Minutehand, Alknoma's free testing tool in the proactive agent space, fails a run when an agent sends the same words twice with nothing new between them. It happens when a wake cannot see what the last wake sent: memory kept in a process that restarted, a retry after a timeout, or a wake delivered twice.
A chatbot answers once per prompt, so it cannot repeat itself by accident. A proactive agent wakes many times over days, and each wake has to know what the earlier ones already did. When that knowledge lives in the process (a variable, a cache, a file on one machine), a restart or a second worker empties it, and the next wake asks again.
The second cause is delivery. A scheduler can fire a wake twice, a queue can redeliver one after a timeout, and a call to Slack can time out after the message was posted. An agent that retries without reading the conversation back posts it again.
What Minutehand does about it: the duplicate check fails a run on the same words again in the same conversation with nobody speaking in between, and repeated_without_news flags, for review, a person told something again with nothing new since. Its dispatch rules can deliver a wake late, twice or never, so one run shows whether the agent survives a second delivery.
- Keep every message the agent sent, and every ask it opened, in a store that outlives the process:
minutehand.agent.storeunder test, your own database in production. - On every wake, read the store and the conversation before writing anything.
- Run the scenario with a wake delivered twice and read
minutehand findings <run_id>.
Updated 2026-10-12. More on testing proactive agents: the Q&A.