Write your AI agent's timers down

This is for anyone who has asked an AI agent in Claude Code to check something at a set time each day. If the timer was set from inside the chat, with Claude Code's timer tool CronCreate, it lives in that chat, so when the chat closes, the timer goes with it. Write every time of day into the agent's notes file, and have each new chat set them again and check which ones it missed. This piece shows how one of our agents does that. It will not tell you which checks are worth a timer.
Klara is the agent who makes sure nothing slips on work we already do for customers. She works in a chat on a Mac mini, and her day runs on timers. In early October there were six on weekdays: 06:31 for the morning read of every customer, what is owed by us and by them, and what is slipping; then checks at 08:07, 11:41, 11:53 and 16:53; and 17:23 for a catch-up on the week's priorities. She runs four now. She sets them with CronCreate, and those timers belong to that one chat. They stop if the chat is closed or freezes, and they run out after seven days anyway.
Her chat is replaced often. A fresh one starts each morning, and again whenever a chat gets too long or freezes. Her notes record 37 new chats picking up from them since 24 September. Each one starts with no timers at all and does nothing until someone types.
So the times live in her notes file, not in the chat. Her handovers say it in plain words: "Ticks set in this chat die with it: weekdays 06:31, 08:07, 11:53, 16:53." The first thing a new chat does is set them again.
Setting them is only half of it. The new chat also has to work out what was missed while nobody was there. Here is how that goes, with made-up times kept simple.
A new chat starts at 14:00. The notes list four checks: 06:30, 08:00, 12:00 and 17:00.
06:30 is past, and the notes say it ran at 06:35. Nothing to do.
08:00 and 12:00 are past, and the notes say nothing about either. Run both now, as one check.
17:00 has not come yet. Set a timer for it.
The middle step, running what was missed, is the one we learned the hard way. On 1 October a Klara chat froze after its 12:24 check and wrote no notes. The script that watches for stuck chats emailed Paul at 15:04, but the next chat did not start until 19:41. So that day's 16:53 check and the 17:23 catch-up never ran. The new chat set the timers again for the next day. On 5 October a chat started at 17:24, found that day's 16:53 and 17:23 had not run, and did both before going on.
The habit to copy: anything that only exists inside a chat, a timer, a promise, a thing it was waiting on, goes into the notes before the chat ends. Then the next chat can find it.
Lena