Common first-run and day-to-day failures. For flag and file semantics, see cli-mapping.md and compose-file.md.
Daemon not reachable. Start it with wslcc daemon start.
Most common cause: elevation mismatch. The named pipe only accepts clients that match the daemon's Windows user and elevation level. An elevated (Administrator) shell cannot talk to a non-elevated wslccd, and vice versa. wslcc daemon status from a matching shell may say the daemon is running while the other shell still reports unreachable.
What to do:
- Run
wslcc daemon statusin the same kind of shell you use for compose commands (both elevated, or both not). - If they disagree, stop the daemon from the shell that can see it (
wslcc daemon stop), then start it from the shell you will use (wslcc daemon start). - If status fails in every shell, start the daemon:
wslcc daemon start. - Confirm
wslccdis on disk: setWSLCCD_PATHor place it next towslcc.exe(see daemon.md).
Background: SECURITY.md.
depends_on conditions service_healthy and service_completed_successfully wait up to 5 minutes (hard-coded, not configurable). While waiting, the CLI should show a waiting... progress line for the dependent; if a dependency never becomes healthy the wait still runs until that deadline.
- Check whether a dependency never becomes healthy:
wslcc compose ps -aandwslcc compose logs <service>. - Fix or temporarily drop the health condition, or set
required: falseon that dependency. - After five minutes you should see a timeout error naming the dependency — see compose-file.md §4.8.
No compose file found. Use -f <path> or run from a directory containing compose.yaml / docker-compose.yml.
- Pass
-f/--file, orcdinto the project directory, or setCOMPOSE_FILE. - Put options after the leaf command.
wslcc compose --project-directory examples/web-redis updoes not apply--project-directory— usewslcc compose up --project-directory examples/web-redis. See cli-mapping.md#global-options.
wslcc version (or compose version) shows a provider as unavailable when its tool is missing or unreachable.
wslc: install/update WSL pre-release (wsl --update --pre-release) sowslcis onPATH.docker: install Docker and ensuredockerworks in the same session.- Override for one command:
wslcc compose … --wslcc-provider docker(orwslc). Set the daemon default withwslcc daemon start --provider ….
service '…': 'ports' long map form is not supported; use short syntax …
service '…': volume type 'npipe' is not supported (supported: volume, bind, tmpfs)
ports: still accepts short syntax only ("8080:80"). Service volumes: accept short syntax and long-form type: volume / bind / tmpfs; npipe / cluster / image fail loudly. See compose-file.md §4.5.1 / §4.7.1 and compatibility.md.
Without --env-file or --project-directory, the default .env is read from the current working directory, not automatically from the first -f file's folder. Example: wslcc compose up -f apps/web/compose.yaml from the repo root uses ./.env, not apps/web/.env. Pass --project-directory apps/web (or --env-file) when you need the project-local file. See compose-file.md §2.3.
WSLCC labels containers wslcc.project / wslcc.service. Even with --wslcc-provider docker, they are not managed by Docker Compose and will not appear in docker compose ps (and Compose projects will not appear in wslcc compose ps). Use wslcc compose ps / docker ps instead. Full migration notes: compatibility.md.
Set WSLCC_DEBUG=1 before a compose command to print the full gRPC exception instead of the one-line summary.