Permission drift happens when the Home Assistant data is still present but the process that now mounts it sees different ownership, UID/GID mappings, access modes, or security context than the process that created it. The failure often appears after a host migration, restore, Docker mode change, NAS copy, or manual chown/chmod operation.
Prevent it by documenting the expected mount and ownership model before a change, preserving metadata during copies, and testing both read and write access after recreation. Do not normalize every failure with chmod -R 777; that hides the mismatch and weakens the recovery model.
Document the Storage Boundary Before Changing Permissions
Start by identifying whether /config is a Docker-managed volume, a Linux bind mount, a network mount, or a path inside a VM. The correct ownership strategy depends on which layer actually owns the files.
Home Assistant's current Container installation guidance makes this storage contract concrete: the selected host folder is mounted at /config with read/write access. Record that exact source path, mount target, and access mode rather than relying on a folder name alone.
Also record whether Home Assistant runs through standard Docker, rootless Docker, a remapped user namespace, or a NAS container manager. The numeric identities seen inside and outside the container may not be the same.
UID and GID Mapping Can Change Without the Files Moving
A folder can remain at the same host path while the effective user mapping changes underneath it. This is common when moving from rootful to rootless Docker, enabling user namespace remapping, or restoring data onto a host with different local accounts.
Docker's current UID/GID mapping documentation shows that rootless and user-namespace modes translate container identities to different host IDs. A file that looks owned correctly on one host can therefore become unwritable after the deployment model changes.
Compare numeric ownership with ls -ln or equivalent tools instead of relying only on account names, which can map to different numbers on the new host.
Preserve Metadata When Copying the Home Assistant Data
A migration tool or GUI file copy may preserve file contents but not ownership, mode bits, ACLs, extended attributes, or security labels. That can leave YAML readable while databases, hidden storage, certificates, or directories needed for writes fail later.
Use a copy method that preserves the metadata your platform actually uses. After the transfer, compare representative files and directories from the source and destination before starting Home Assistant.
The ZimaSpace guide to treating accounts and permissions as repeatable household policy applies here: ownership should be deliberate infrastructure, not a sequence of one-off fixes.
Keep the Mount Read-Write Only Where Home Assistant Needs Writes
Home Assistant must be able to update its persistent configuration and database. A mount accidentally recreated as read-only can allow startup and reads while causing later writes, backups, database commits, or configuration changes to fail.
Bind-mounted host paths can be exposed read-write or read-only. Docker's file-sharing guide shows that the effective mount mode determines whether a container can modify the host directory. Check the running mount rather than assuming the Compose file was applied as intended.
Conversely, do not make unrelated host directories writable simply because Home Assistant needs access to one config path. Keep the permission boundary narrow.
Use a Permission Acceptance Test After Every Restore or Recreation
A successful startup proves only part of the filesystem contract. Home Assistant may read existing files but fail later when it needs to write the database, create a backup, update a registry, or save a dashboard.
- Confirm the expected configuration and integrations load.
- Make one harmless UI-managed change and verify it persists after restart.
- Confirm Recorder writes a new state change.
- Create a small backup if the installation type supports it.
- Review logs for permission denied, read-only filesystem, or database write errors.
If the test fails, correct the specific owner, group, ACL, namespace mapping, or mount mode that owns the path. Permission drift is fixed when the documented deployment can recreate correct access without manual emergency commands.
Support & Tips
More to Read

Signs That a Home Assistant Database Needs Maintenance or Replacement
A large Home Assistant database usually needs retention or purge work; repeated corruption or integrity errors are stronger replacement signals.

How Many Concurrent Users Can Home Assistant Handle Before It Slows Down?
Home Assistant has no fixed useful user limit: benchmark active clients with real dashboards and entity updates, then stop before repeatable latency appears.

Can Home Assistant Use an External Database Without Breaking Upgrades?
An external Recorder database can survive upgrades, but adds its own availability, schema-migration, backup, restore, and version responsibilities.

