v0.16.1 — Findable keys after auto-start, an opt-out where the gates defend nothing, and a hook-auth hole closed
0.16.0's loopback power gates assumed someone saw the daemon print its credentialed link. On auto-started daemons — Coder workspaces, systemd services, hook-spawned daemons — that line goes to a log file, and users hit a locked board with no key in sight. This release makes the key findable everywhere, makes the gates optional where they defend nothing, and closes a hook-auth bypass the 0.16.0 docs had wrongly guaranteed against.
Added
FLEETDECK_TRUST_LOOPBACK=onwaives the four loopback power gates (/ws/term,POST /mail,gateway_*settings writes, the unsupervised arm) for plain-loopback callers — the pre-0.16.0 behavior, opted into explicitly. Keys off the real peer address, not a header. Startup-fatal combined with LAN bind orFLEETDECK_REQUIRE_TOKEN. Does not waive hook auth. For single-user machines and port-forwarded Coder workspaces where no other OS user can reach127.0.0.1.docs/CODER.mdcarries both recipes.- The key is findable after auto-start. The SessionStart brief names where the key lives (
fleetdeck token/$FLEETDECK_HOME/token);fleetdeck statusshows the board URL and points atfleetdeck token; the board key gate explains recovery.fleetdeck statuskeeps the credentialed link out of routine output so it can't leak into logs/scrollback — pass--show-tokento copy the full?t=URL.
Security
gateway_*settings writes stay token-gated even underFLEETDECK_PROXY_AUTH=trust. They reroute every future session's LLM traffic and can exfiltrate the gateway credential; the trusted-proxy signal is derived from caller-controlledHost/Origina direct-loopback process can forge. Only the explicitFLEETDECK_TRUST_LOOPBACK=onopt-out (real-peer keyed) waives them.- Hooks authenticate in every mode, including
FLEETDECK_PROXY_AUTH=trust. 0.16.0 gated/hook/*on the bearer, but the proxy-trust exemption inauthorized()returned before that gate: a direct-loopback process could forge the configured trustedHost/Originand POST tokenless hooks on a trust-mode daemon, re-opening the session-impersonation forgeries 0.16.0 closed. The/hook/*gate now leadsauthorized(), ahead of every loopback and proxy-trust exemption. Regression coverage added (forged headers,TRUST_LOOPBACKon and off).
Full changelog: https://github.com/lacion/fleet-deck/blob/v0.16.1/CHANGELOG.md