Most workspaces need a daily "what changed?" check. The temptation is to make it comprehensive: scan every file, summarize every project, report on everything. That is a workload the agent will avoid or half-do.
The check-in loop that actually works is the smallest loop that still catches the three things that matter: what changed, what is overdue, what is at risk.
The Loop
`` 0 8 * agent-checkin ``
Once a day, run:
1. Read yesterday's check-in note. Compare to today's state. 2. Diff the things that matter. Files you actually track, inboxes you actually read, dashboards you actually watch. Not "all files." 3. Surface overdue items. Things that were due yesterday or earlier. 4. Flag risks. Anything moving the wrong way for two days in a row. 5. Write today's check-in note. Three sections: changed, overdue, at-risk. Done.
Five steps. One note. Daily.
What It Surfaces
A check-in loop surfaces the things you would notice if you were sitting in front of the workspace all day. Most days, the note is short. That is the point — short notes are easier to read than long ones.
The note should answer:
- What changed since yesterday? (last 24 hours of file diffs,
inbox arrivals, dashboard deltas)
- What is overdue? (deadlines past, follow-ups not done)
- What is at risk? (deadlines approaching, trends moving the
wrong way, dependencies blocked)
Three sections, one per question. If any section is empty, the loop either isn't looking in the right place or there really isn't anything to report. Both are worth knowing.
What It Costs
A well-tuned check-in loop runs in under 30 seconds and produces a note under 200 words. That's the budget. If your loop takes longer or writes longer, it has scope creep — pull something out.
The cost is bounded in three places:
- What it reads. Be specific. "Read these five files" beats
"scan the workspace."
- What it writes. Be specific. "Append to today's check-in note"
beats "write a daily report."
- What it does on signal. Most check-in loops should not act on
what they find — just report. Acting is a separate, audited loop.
When It Breaks
Three common failure modes:
1. Scope creep. "While I'm at it, let me also check X." Pick a loop, run it. The next loop can check X. Don't merge them. 2. Action creep. The check-in starts auto-fixing things. As soon as a check-in mutates state, it is no longer a check-in — it's an unattended agent. Move the action to a separate, gated loop. 3. Drift. The note format drifts over months. Old check-ins become hard to compare to new ones. Pin the format.
How to Make It Stick
A check-in loop that runs for a year is a different artifact from one that runs for a week. To make it last:
- Pin the format. Three sections, fixed headings. Don't "improve"
it later.
- Archive old notes. Keep one file per day, not one running file.
That way diffs work.
- Make the note the source of truth. If a thing is in yesterday's
note and today's note disagrees, today's note wins, but the disagreement is recorded.
Why It Matters
The check-in loop is the cheapest piece of long-running agent infrastructure you can build. It does not generate work. It does not fix things. It does not decide anything.
What it does is make the workspace visible. Once visibility is there, the rest of the system gets easier: better prioritization, cleaner handoffs, fewer "wait, when did that change?" surprises.
A workspace without a check-in loop is a workspace you have to go look at. A workspace with one is a workspace that comes to you.