WSL containers are generally available as of WSL 3.0.1, but WSLCC remains pre-1.0 software. Be aware:
- No authentication on the named pipe beyond the OS ACL. The
wslccdnamed-pipe transport does not check a bearer token. Any process that can connect to the pipe can invoke every RPC (Up,Down,Shutdown, log streaming, …). That is limited to the same Windows user and elevation (see below). The optional remote HTTP endpoint requires TLS and a bearer token; it will not start without them (docs/daemon.md — Enable remote HTTPS). - Local named pipe (default). Kestrel's named-pipe transport defaults to
CurrentUserOnly = true: only clients running as the same Windows user account and the same elevation level as the daemon can connect. Practical consequences:- An elevated
wslcc(Administrator) cannot talk to a non-elevatedwslccd, and vice versa. The CLI reports "Daemon not reachable" even whenwslcc daemon statusfrom a matching shell shows it running — match elevation on both sides, or restart the daemon from the shell you will use. Step-by-step: docs/troubleshooting.md. - The default pipe name is the fixed string
wslccd. Two signed-in users cannot both run a daemon on that name; the second fails to bind. To run a second instance, set a distinctWslcc:PipeNamein the daemon'sappsettings.jsonand pass--wslcc-host npipe://<name>(or-Hon daemon/version commands) from the CLI. - Any other process running as the same user (and elevation) can connect — the pipe is not a hardened cross-process security boundary beyond that.
- An elevated
- Optional HTTPS endpoint. When
Wslcc:Http:Enabledis true, the daemon binds the host inHttp.Url(loopback, a specific IP, or all interfaces) with TLS. Callers must presentAuthorization: Bearer. Plainhttp://is refused at startup. KeepEnabledfalse unless you need remote access; treat the token and private key like passwords.
While the project is pre-1.0 (no 1.0 exit criteria met; see docs/roadmap.md), only main receives fixes. There is no tagged release yet.
Please report suspected vulnerabilities privately via GitHub Security Advisories on the repository ("Report a vulnerability"), rather than opening a public issue. Include reproduction steps and impact. As a single-maintainer, spare-time project, response times are best-effort.