Repository navigation
tailctl 0.2.0 (withdrawn)
Withdrawn. 0.2.0 refused to load profiles that set
auth_key_envwithoutauth_key_ssm, and it was removed from PyPI. Use 0.2.1.
Security release. Upgrade if you run tailctl 0.1.x, especially on a machine that also runs containers.
Security
- Shields are enforced on every instance. A userspace
tailscaleddelivers inbound tailnet connections to this machine's127.0.0.1. In 0.1.x an instance could come up accepting inbound, which exposed every local service to peers the tailnet ACL allowed.upandrunnow raise shields on spawn and on every reuse. If shields can't be confirmed, they stop the daemon rather than hand it out.tailctl shields [--fix]reports or repairs every running instance and exits 5 on drift.doctorfails on drift too. - New
listen_hostsetting. The SOCKS5 and HTTP proxies take no credentials, and some container runtimes (OrbStack, for one) forwardhost.docker.internalto the host's127.0.0.1. That lets any container reach a proxy bound there and tunnel into the tailnet. Setlisten_hostinprofiles.yamlto a loopback alias (for example127.84.67.1, added withifconfig lo0 aliasat boot). The proxies and port forwards then bind it instead. If the address isn't assigned, tailctl refuses to start rather than fall back to127.0.0.1. The default is unchanged.
Other changes
- Auth keys can resolve from SSM (
auth_key_ssm) when the environment variable is absent. Keys reachtailscale upover stdin, never argv. - The registry records each instance's listen address.
run,psand the forwarder read it from there. - CI runs the test suite on every push, and releases publish only after it passes.
Upgrading
- Homebrew:
brew upgrade tailctl. - pipx:
pipx upgrade tailctl. - Running instances keep their current settings until their holders exit. After changing
listen_host, stop whatever holds instances, runtailctl reset --force(logins are kept), and start the holders again. Make sure only onetailctlis on yourPATH, including the PATH your launchd jobs see. An older copy found first will bind127.0.0.1and droplisten_hostfrom the registry.