Updated 25 September 2026
Your entity list is full of things you got rid of years ago. Some show a red icon and say This entity is no longer being provided by the integration. There are devices on Settings → Devices & services → Devices for a smart plug that went in the bin. And every so often a new device turns up as sensor.kitchen_temperature_2, because sensor.kitchen_temperature is apparently still taken.
Home Assistant keeps a registry of every entity and device it has ever been given, separate from what's actually running. The registry is what remembers the name you gave something, the room it's in, its icon, and whether it's hidden. That's useful: it's why a device that drops off overnight comes back with all its settings.
The downside is that the registry doesn't forget on its own. When a device is removed from the integration that provided it, or an integration is deleted, or a device is re-paired and comes back as a new entity, the old row usually stays. These are leftovers: registered, but with no state at all, because nothing provides them any more.
Mostly they're clutter. The harm comes from three places:
light.hallway stops a re-paired light from getting its old name back, so it becomes light.hallway_2 and every automation that says light.hallway quietly stops working.A leftover is different from an entity that's merely unavailable. An unavailable entity still belongs to a running integration and may come back; see unavailable entities for those. A leftover has no integration behind it at all.
On a demonstration instance, our check found none, and it will only ever act on one it can prove:
registered entities: 29
registered but with no state at all: 0Demonstration instance: a disposable Home Assistant with made-up entities, run on our own test bench. Not a customer's house. The text in the box is exactly what the service's check and safety rules produced on it.
Removing a registry entry can't be undone by writing the old value back. The entity's id, name, area, labels and history links go with it. So:
light.hallway is gone, you can rename light.hallway_2 back to light.hallway and every automation, dashboard and script that used the old name starts working again.The best time to deal with leftovers is before they're made. When you know you're going to re-pair a device, delete the old one from its integration first, then pair it again. The new entities take the old names, and nothing downstream notices.
Don't open the files in the .storage folder and delete lines. They're Home Assistant's own working database, it will overwrite your edit while running, and a mistake there can stop it starting. Everything above is done through the UI, which checks as it goes.
Do it properly
entity_id over device_id everywhere, so re-pairing a device never breaks anything once the old entry is gone.Remove light.lounge_lamp -> REFUSED: light.lounge_lamp is not one of the leftover registry entries the check found, and removing a registry entry cannot be undoneDemonstration instance: a disposable Home Assistant with made-up entities, run on our own test bench. Not a customer's house. The text in the box is exactly what the service's check and safety rules produced on it.
Or we'll do it for you — Repair, A$89, no subscription: you tick each removal yourself.