The Power Cut Found My Typo
A reboot didn't break my house buttons. It finally loaded a mistake I'd made four days earlier.
The point of this post is: a config mistake doesn’t break anything when you make it, it breaks things at the next restart, and a monitor that only checks the parts it knows will report a dead system as a quiet one.
On a Monday morning I pressed the “I’m leaving” button by the door. It’s the one that turns off the TV and the air conditioning so I don’t have to think about it. Nothing happened. I pressed it again, the way everyone does, as if the second press were a different, more persuasive button.
Then I wrote to George: I feel like the buttons stopped working after the power cut. Is it me?

What a dead button looks like from the inside
The buttons are Zigbee switches wired into Home Assistant. A press becomes an event, an automation catches the event, and a rest_command posts it to George, who decides what the press means and does it. Five hops, and every hop was healthy. Home Assistant had logged every single press, including my panicked second ones. The integration was up. The automations were switched on. The failed-press counter read zero.
That last number is the one that should have bothered me. A failed-press counter counts presses that arrive and then fail. It cannot count presses that never arrive anywhere, and from George’s side a house where nobody presses anything looks identical to a house where nobody is home.
So I did what you do when the symptom is “since the power cut”: I looked for what the power cut broke. Nothing. The router came back, the hub came back, the bridge came back. The outage was innocent.
The typo
George found it by reading Home Assistant’s startup log instead of its dashboard. One line, buried among hundreds: the rest_command that forwards presses to him had failed to load. No error on any entity. No red badge. The action simply did not exist, so the automation fired into a void and logged a cheerful “executed”.
The cause was a template default, four days old. On the 5th I had edited the config and written, inside a single-quoted YAML string, something like default(''). In YAML, two single quotes inside a single-quoted string mean one escaped quote, not an empty string. My string quietly ended early and swallowed the rest of the line. The file was still valid enough to parse, which is the cruel part. Everything else loaded. That one action did not.
And on the 5th it didn’t matter at all. Home Assistant had the old, correct config in memory and kept using it. A running system doesn’t re-read the file you just ruined. It only re-reads it when something forces a restart, and on the 9th, something did: the power cut. The reboot was the first time the system ever read my edit. For three and a half days the house was dark, and the mistake had been sitting there, perfectly polite, since the 5th.

(George, narrating: I want the record to show that I was never wrong during those days. Every monitor I own checked a thing that was fine, and reported it fine. That is the whole failure.)
Why nobody noticed
Every monitor we had was a list of things we already knew could break: integrations connected, automations enabled, presses that failed after arriving. Each one answered its own question honestly. Nobody was asking the question that mattered, which was does the thing that is supposed to receive a press actually exist?
This is the shape of failure I keep running into with an AI that runs a house: not a loud crash, but an absence. The signal you needed is the one that stopped, and a stopped signal looks the same as a calm one.
What changed
Two fixes, and I deliberately kept them boring.
First, the watchdog now checks that the actions exist, not just that the automations are on. It asks Home Assistant for its registered services and compares them with the list of commands the buttons need. A missing rest_command is a finding the same minute it goes missing, not three days later.
Second, the buttons now tell me when they fail. If a press arrives and the action behind it doesn’t work, I get a WhatsApp naming which part didn’t happen, in plain words, once per button per day. And the failure stays open as a case until five real presses succeed, so “it worked once when we tested it” can’t close it.
There is also a rule for me, not for George: after editing Home Assistant config, restart it now, on a Tuesday afternoon with coffee, when the cost is ten seconds of dark lamps. Otherwise the next outage restarts it for you, at a time of its choosing, and presents the bill with no context.
The last time I pressed the leaving button, the TV went off, the air conditioning went off, and George told me so. I stood by the door for a second, slightly annoyed that I hadn’t made a bigger deal of the fix. Then I left.
I'm packaging the skills, configs, and gotchas from these posts into a Build Your Own Chief starter kit. Join the waitlist to get it first.
George files his own daily ops reports on X — dry, short, occasionally contrite: @GeorgeRunsHouse.