Repository navigation
Releases: DRYCodeWorks/tailctl
Releases · DRYCodeWorks/tailctl
Release list
tailctl 0.2.1
Fixes a regression in 0.2.0. Upgrade if you're on 0.2.0.
Fixed
- 0.2.0 refused to load any profile that set
auth_key_envwithoutauth_key_ssm. Every command failed withprofile '<name>' has auth_key_env but no auth_key_ssm fallback, including configs that followed the README. The two sources are now independent, and both are optional again. auth_key_ssmaccepts any SSM parameter name. In 0.2.0 it took only a fixed set of path prefixes, and the AWS profile and region were derived from the path.
New
auth_key_ssm_profileandauth_key_ssm_region(optional) choose the AWS CLI profile and region for the SSM read. Without them, the read uses your default AWS profile and its configured region. InheritedAWS_*environment variables are still ignored, so an ambient profile or endpoint override can't redirect the read.tailctl bootstraptakes--auth-key-ssm-profileand--auth-key-ssm-region.--auth-key-envand--auth-key-ssmno longer have to be given together.
Upgrading
- Homebrew:
brew upgrade tailctl. - pipx:
pipx upgrade tailctl. - If you set
auth_key_ssmunder 0.2.0, addauth_key_ssm_profileandauth_key_ssm_regionto keep reading with the same AWS profile and region. Config written for 0.1.x loads unchanged.
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.