Scheduled tasks record every AI coding session and brief me each morning. Nothing they propose takes effect until I approve it.
The problem
After eight months of building with coding agents across about twenty projects, I had no lasting record of any of it. The only history sat in the agents' session caches, which clear themselves out. The most useful moments, when I rejected a step or corrected the agent or a test failed, disappeared when each session ended.
The obvious fix was to let an agent maintain its own instructions and memory. I did not want that. An agent that edits its own operating rules unattended is the automation-bias failure I argue against in The Bot Stops Here. So the system collects and summarizes everything on its own, and nothing it proposes takes effect until I approve it.
What it does
Collecting
When a session starts, a hook logs when and where it ran and which model it used. It saves nothing from the conversation, which keeps work and financial details out of the record.
When a session ends, a second hook notes where it happened and what the code looked like afterward.
Each night a script reads every session and project touched since the last run. It keeps what I typed, every place I overruled the agent or a test failed, and what changed.
Summarizing
Overnight, a scheduled task turns that digest into a brief on what broke, what to build next, and how the setup could improve.
Before an idea reaches the brief, two different AI models (Opus, Sonnet) judge separately whether it is worth building. A third (Fable) settles any disagreement, and only ideas that pass go on the list.
Open suggestions carry over from night to night until I decide on them, and anything left for a week gets flagged.
Bigger items go to scheduled reviews. A Monday sweep checks tests and model versions, a review of the agents' instructions runs twice a month, and a security review runs monthly. Each one reports and proposes but changes nothing.
Deciding
Nothing in the suite changes code or the agents' instructions on its own. Every proposal reaches me as a one-line suggestion, and I make the change myself in a live session.
The brief arrives as a Claude Doc. I rule on each idea in a comment, and the next night's run records the verdict.
A /log command turns my description of what I built into a project note, private unless I mark it public.
The project cards on this site's homepage are generated from the notes marked public, so a project can appear here while its full write-up stays private.
Routine lookups and edits go to smaller, cheaper models. Judgment calls, and anything a wrong answer would quietly spread from, stay with the strongest one.
register: dossiers · build log · tools ledger · this site
Hooks and a nightly digest collect → an overnight brief synthesizes and hands off to the sweeps → every proposal reaches me → I act in a live session and log the outcome, which the next night's digest reads.
Safeguards
The register also tracks which AI model versions my deployed tools depend on, since a retired model breaks a scheduled job with no one watching. It doesn't guess which models are current. It marks each one as checked against my reference list, seen working on a given date, or unverified. A weekly sweep also runs the workspace's twenty-five test suites and flags any project that has outgrown its tests. A hook refuses any commit an agent makes unless the message records whether a reviewer agent checked the change or why the review was skipped.
The guardrails also run inside the coding agent, as add-ons that check each command before it runs. They block recursive deletes and git commands that destroy history, allow one connection to my server at a time, and refuse a commit that claims a review no reviewer ran. Each "never do this" correction I give becomes a hard block. Another add-on flags AI-sounding phrasing in public copy, this page included.