Quick fix
# 1. Stop every Docker process (quit Docker Desktop)
Get-Process | Where-Object { $_.ProcessName -like '*Docker*' } | Stop-Process -Force
# 2. Never delete the files - rename both parent directories
Move-Item "$env:LOCALAPPDATA\Docker\run" "$env:LOCALAPPDATA\Docker\run.old-<date>"
Move-Item "$env:LOCALAPPDATA\docker-secrets-engine" "$env:LOCALAPPDATA\docker-secrets-engine.old-<date>"
# 3. Make sure EnableDockerAI=false in settings-store.json
# 4. Start Docker Desktop directly and poll until ready
Start-Process 'C:\Program Files\Docker\Docker\Docker Desktop.exe'
docker version --format '{{.Server.Version}}'
What you will run into
Docker Desktop's engine refuses to start and the GUI shows an error dialog. com.docker.backend.exe.log contains:
starting services: initializing Ingest server: listening on unix://C:/Users/<user>/AppData/Local/Docker/run/sailor-ingest.sock: remove ...: The file cannot be accessed by the system
The annoying part: fixing one socket reveals the next - sailor-ingest.sock -> docker-secrets-engine/engine.sock -> dockerInference, a different socket fails on every restart.
Typical trigger: Docker Desktop exited abnormally (force-kill, crash, power loss), or a hung docker desktop start CLI interrupted mid-run.
Why this happens
After an unclean exit, %LOCALAPPDATA%\Docker\run\ and %LOCALAPPDATA%\docker-secrets-engine\ keep orphan AF_UNIX socket files that carry the ReparsePoint attribute, so Windows refuses to delete them (error 1920: The file cannot be accessed by the system).
The engine must remove those stale sockets at startup; failing that, the whole start fails.
| Attempt | Result |
|---|---|
[System.IO.File]::Delete / Remove-Item -Force | error 1920 |
fsutil reparsepoint / robocopy | fails |
WSL rm -rf | silently fails (file stays) |
| Rename the parent directory | works (official workaround) |
Docker Desktop's Windows-side engine communicates with the WSL side through AF_UNIX socket files; on a clean exit the engine removes them, but after an unclean exit (power loss / forced kill) the cleanup never runs and the socket files are left behind.
Windows protects files with the ReparsePoint attribute at the filesystem level (deletion fails with error 1920) — this is OS behavior, not a Docker bug, which is why normal delete APIs, Remove-Item, and even WSL rm are all rejected.
Deterministic takeaway: the failure is not about permissions, it is the reparse-point attribute; the official "rename the parent directory" workaround bypasses the deletion restriction rather than the file itself;
first make sure EnableDockerAI in settings-store.json is false, otherwise the next start rebuilds dockerInference and kills startup again.
Step by step
1. Confirm this is the bug from the log — Required
Search %LOCALAPPDATA%\Docker\log\host\com.docker.backend.exe.log for The file cannot be accessed by the system / GET /error. Hit -> skip all delete attempts, go straight to the rename.
2. Stop Docker and rename the directories — Required
After all Docker processes are gone, rename both directories (rename works, delete never does). Docker recreates clean run / docker-secrets-engine dirs on the next start.
3. Turn off EnableDockerAI — Required
%APPDATA%\Docker\settings-store.json: "EnableDockerAI": false. Otherwise the Inference manager kills startup again.
4. Start and verify — Required
Start-Process 'C:\Program Files\Docker\Docker\Docker Desktop.exe'
docker version --format '{{.Server.Version}}'
docker ps
5. Clean up — Required
After the engine is healthy, remove the old dirs: wsl -d Ubuntu bash -lc "rm -rf /mnt/c/Users/<user>/AppData/Local/Docker/run.old-* /mnt/c/Users/<user>/AppData/Local/docker-secrets-engine.old-*" (once renamed, even the stubborn reparse files can be wiped).
How to confirm it works
docker version returns the server version, docker ps lists containers; a restart no longer shows The file cannot be accessed by the system.
Other environments
| Environment | Notes |
|---|---|
docker desktop start CLI | observed hanging and leaving a new orphan socket; start Docker Desktop.exe directly instead |
| Consecutive failures | fixing one socket reveals the next (sailor -> secrets-engine -> dockerInference); rename both directories in one pass |
| EnableDockerAI=true | rebuilds dockerInference at startup and kills startup again; set false first |
| Not verified | non-Windows Docker Engine does not have this issue; it is Docker Desktop specific |
Symptom
Docker Desktop engine fails to start; log shows listening on unix://...sailor-ingest.sock: remove ...: The file cannot be accessed by the system; GUI shows unexpected error; fixing one socket reveals the next.
Cause
Orphan AF_UNIX sockets from an unclean exit carry the ReparsePoint attribute, so Windows refuses deletion (error 1920); the engine cannot remove the stale sockets at startup -> whole start fails.
Solution
- Confirm
The file cannot be accessed by the systemin the log; - Stop all Docker processes;
- Rename (do not delete)
%LOCALAPPDATA%\Docker\runand%LOCALAPPDATA%\docker-secrets-engine; - Set
EnableDockerAI=falsein settings-store.json; - Start Docker Desktop.exe directly and poll
docker versionuntil ready; - Clean up the old dirs afterwards.
Verification Evidence
- Local repro (2026-08-30, Windows 11 + Docker Desktop 4.88.1): log confirmed
sailor-ingest.sock ... The file cannot be accessed by the system; every delete method failed (error 1920 / silent WSL failure); renaming parents + EnableDockerAI=false + restart -> server=29.7.2, kind clusters restored, WSL-side docker connects; a second occurrence the same day (hungdocker desktop start) was fixed with the same flow. local repro log 2026-08-30. - Not verified: non-Windows behavior (the official issue only reports Docker Desktop).
Related canonicals
Read in order: precondition -> same root / same domain / related:
- Related (similar errors, different cause):
- Cannot connect to the Docker daemon (contains: the orphan socket is the Desktop-specific root cause of daemon connect failures)
Applicable tools (1)
This problem is linked from the tool pages below — reachable from either side.
dockerBundled solutions (combos)
This problem is part of the following verified bundles.
Source & evidence
Source: https://github.com/docker/desktop-feedback/issues/531
← Coding Agents & Terminal domain | Problem Catalog Experience | Facing another issue? Go to the Helpdesk