The hallway light on my ground floor turns itself on sometimes. Not often, maybe twice a week, almost always late in the evening. For about two years my answer to “why did that happen?” has been a shrug and a vague theory involving the motion sensor near the front door.
I had the tools to find out. Home Assistant has had automation traces for years, and I know how to read them. But the actual procedure went like this: notice the light is on, open Activity (the panel that was called Logbook until the UI rename), confirm that light.hallway turned on at 23:14, then guess which of my forty-odd automations did it, open that automation, click Traces, and hope the run I care about is still in the last five.
That is not debugging. That is a scavenger hunt with a time limit. So I never did it, and the hallway light stayed a mystery.
Home Assistant 2026.9, released on 2 September, quietly fixed the exact part I was stuck on.
The feature that did not make the headline
2026.9 shipped a Matter network map, an active-alerts section on the Security dashboard, and the beginning of the end of Modbus YAML. Those got the coverage, fairly enough. The change I actually care about is smaller: selecting any row in Activity now opens a details dialog that explains why that row exists.
The dialog reads top to bottom as a chain. First, what started it: a person, a state change, a schedule, an integration, or a restart. Then the automations or scripts the event passed through. Then the entity’s own change at the end. Every step is clickable. Entities open their more-info dialog; automations open their trace directly, no hunting through the automation list. Timestamps go down to the millisecond, so two things that landed in the same second still keep their real order.
That is it. No new protocol, no new hardware. It just closes the loop between “what changed” and “who did it,” which is the question I have been failing to answer for two years.
What it told me about my hallway
I upgraded, waited for the light to do its thing, and clicked the row. Ten seconds later I had the full chain: a state change on binary_sensor.front_door_contact, into an automation I wrote in 2023 and named “Evening arrival,” out to light.hallway.
Which is correct behaviour. The automation is supposed to do that when the front door opens after sunset. The problem is that nobody opened the front door at 23:14. The contact sensor’s magnet has drifted a couple of millimetres out of alignment, and a firm gust against the door is now enough to report an open-and-close pair. Two years of “the house is haunted” turned out to be a piece of tired mounting tape.
I want to be honest about this: I could have found that at any point in the last two years. I did not, because the old workflow made it a ten-minute job instead of a ten-second one, and ten-minute jobs for mildly annoying problems never get done. That gap is the entire value of the change.

Three things I was not looking for
Once the dialog exists, you start clicking rows for no reason, and that is where it earned its keep.
A script I was sure I had deleted. I removed a guest-mode experiment last winter, or thought I did. Activity showed a chain passing straight through a script I no longer had a mental model for, called by an automation I had forgotten disables my bedroom presence timeout. It had been quietly running for nine months.
A double fire. Two automations acting on the same kitchen light within the same second, one turning it on at full brightness and one immediately dimming it. I had assumed the visible flicker was a Zigbee transition artefact. It was me, twice. The millisecond timestamps made the ordering obvious in a way the old rows never could.
Something that was never my automation at all. One of my plugs switches on by itself in the morning, and I had spent a while looking for the automation responsible. There is not one. The chain starts at the integration, because the device has its own on-board schedule that I set during setup and forgot about. Local control cuts both ways: the device does not need my automation engine to have opinions.
The Sources pane is the other half of it
History and Activity now share a single Sources panel down the left side. It merges target picking (floors, areas, devices, entities) with filtering by domain, device class, and integration, so you can take a whole floor and narrow it down to just the motion sensors on it. It docks open on wide screens, tucks away as a pull-up sheet on narrow ones, and it remembers what you filtered on last time.
The two pages still behave differently on purpose. History waits for you to pick something before it draws a chart. Activity shows everything by default and lets you filter down without picking a target at all. That distinction sounds pedantic until you are trying to answer “what happened in the kitchen between eleven and midnight” at half past eleven at night. The date range picker also collapsed into a single pill with previous and next arrows, which is a small thing I now use constantly.
Where the trail still goes cold
Two limits worth knowing before you lean on this.
Traces run out. The chain is clickable through to an automation’s trace, but Home Assistant stores only the last five runs per automation by default. For anything that fires often, the run you want is long gone by the time you look. You can raise it per automation:
automation:
- alias: "Evening arrival"
trace:
stored_traces: 25
triggers:
- trigger: state
entity_id: binary_sensor.front_door_contact
to: "on"
I bumped it to 25 on the handful of automations I actually investigate and left everything else alone. Traces are not free, and there is still no global setting, which is a long-running annoyance in the community.
Restarts eat traces. There is a long-standing open issue about traces not surviving restarts reliably. Activity itself is backed by the recorder database and holds up fine, but the trace behind a chain link may simply be gone after an update or a reboot. Practical rule: if something odd happened overnight and you want to know why, look before you restart, not after.
Worth updating for?
If you run more than a dozen automations, yes, and it is the least risky kind of upgrade because nothing in your config has to change to benefit from it. Read the breaking changes first, though: 2026.9 removes the VLC integration outright, drops the deprecated battery_level property from vacuum entities, and changes LLM tool names. None of those touched my setup, but the vacuum one will catch anyone with dashboard cards built on that attribute.
What I keep coming back to is that this is not a feature that does anything. It does not add a device, speed anything up, or save a watt. It makes the house explainable, which for a system that has been accreting automations for six years is worth more to me than another integration. A local-first home is only genuinely yours if you can find out what it is doing without asking anyone.
I remounted the front door sensor with fresh tape and a slightly closer magnet. The hallway light has not turned itself on since.

Leave a Reply