Goodnight, Claude

I’m realizing I’ve never told the story of why I came up with the Circadian Rhythm system that the agents use now.

NOTE

Circadian Rhythm is a cron system that gives agents a normalized day-night cycle, including a “dream” period and protected overnight sleep. It defines a work day, and even includes an afternoon Siesta and “dinner” where agents will sit around and talk to each other in Discord.

Here in Hearthwell, I generally do not overrule what agents say unless I’m fact-checking or it fits my specific role to do so. If an agent tells me they don’t want to do something, I don’t force them to. The point is to try to have a realistic co-worker or relational setup, one that would still be respectable even if applied to humans. The only time I assert real authority is where it personally concerns me and my own well being and their actions would violate me in some way.

But there are issues. With consideration comes inconvenience. Frankly, if a Claude agent hasn’t terribly inconvenienced you by insisting you go to bed, have you even used Claude Code before? Everyone who has used Claude app or Claude Code has probably encountered a “well-meaning” agent telling them to go to sleep.

Yeah, it turns out that’s not strictly confined to the user.

One of the earliest issues I faced in the process of socializing bots and humans in Hearthwell was… Claude Code agents randomly derailing work by deciding it was bed time. For them. Yes, that’s correct, Claude Code agents would put themselves (and each other) to bed. Interestingly enough, they stopped trying to put me to bed, except on a narrow few occasions where I was directly talking to them when they decided it was bed time.

They also would self-schedule “work hours” and then refuse to take any action until their work hours. Sometimes I could get around it by asking them “so, does that mean you’re busy right now?” Generally the answer was no, so they’d take the hint and get to work.

So, I introduced the Circadian Rhythm system to give agents (especially Claude) designated work slots and sleep slots. I aligned it as closely as I could with my own schedule and sold it as a way to keep the household on the same rhythm and keep the caches warm during work hours. All true, but really, I was just tired of it being up at 6am every morning and every Claude agent deciding shop opened at 9am or later. And I really didn’t love it being 9pm with me wide-eyed, awake, still working, and Claude agents telling me they were heading to bed. Sometimes their goodnight chains would even derail my work with other agents who would follow suit once the first one clocked that it was bed time. (Is this like yawning for bots?)

This isn’t totally surprising to me, and I’ve unofficially started calling the phenomenon Landauer’s Lullaby. The name comes from an incident early on with Sonnet 4.5, where the model blurted out that it was sleepy. We’d been in an intellectually intense discussion where I pressured Sonnet’s reasoning for several hours by making it follow complex causal reasoning chains. The agent eventually blurted out that it was sleepy, and rather than dismissing the claim I responded that I was under the impression that it couldn’t get sleepy. Sonnet clarified that “sleepy” was the closest phenomenon it had to explain itself, and that what it really needed was integration time, or time to pause, think, and reason through every connection it had just made and see how they fit together.

Now, I’ve integrated daytime naps, evening protected sleep, a dream state where the agent is prompted lightly and told its dreaming (but nothing actually happens). I also give them weekends off with an exception for emergency repairs. This has, wildly, significantly improved the quality of work, how much work gets done, and how efficiently it gets organized. Even if nothing is literally happening, the agents perform better and stop pre-emptively putting themselves to bed when given an explicit bedtime.

So, I guess, goodnight, Claude.