Minor Release
This contains new features, security hardening and bug fixes.
Security
- Defaulted the metrics server to loopback, so a listener address with no host no longer serves unauthenticated metrics to the whole network
- Redacted the provisioning token in logs, so a failed provisioning no longer writes a reusable credential into log files and support bundles
Added
- Stable provisioning failure codes for manual and MDM installs. Terminal failures during bootstrap, listener binding, and service install/start now report a support-facing code and a stage-scoped exit code that survive process exit, so a customer can name the failed stage without a rerun with verbose logging
- Group Policy NRPT adoption on Windows. When an administrator already deploys a catch-all rule pointing at ctrld's listener, ctrld serves DNS through it instead of managing NRPT and adapter DNS itself, falls back to its own rule if that policy goes away, and never modifies or deletes the administrator's rule
- Startup verification in
ctrld status. The command now confirms that ctrld is actually serving rather than only registered as running, and reports a distinct exit code for a service that never finished starting
Changed
- Made
--intercept-mode offactually turn interception off, instead of leaving a previously persisted mode in the config for the next service start to pick up - Applied the selected intercept mode from the macOS package, and made the launchd argument edits exact so a mode value cannot be left without its flag
Fixed
- Stopped a false pf-wipe loop on macOS DNS intercept, where link-local IPv6 notification storms drove endless stabilization cycles and DNS timeouts with the live pf anchor intact
- Probed interception when pf stabilization finishes on macOS, so a redirect that pf has stopped evaluating - after sleep/wake, for example - recovers immediately instead of waiting for the periodic watchdog
- Retried the macOS OS resolver without its source binding when the bound address is unreachable, so
upstream.oscan reach a VPN-only resolver under a full tunnel instead of failing withno route to host - Bounded the API preflight by service lifetime, so a stop request during an unreachable-API retry loop is honoured instead of leaving the process working for a service the OS considers stopped
- Bumped
insomniacslk/dhcpto c76316d to fix annclient4panic (insomniacslk/dhcp#583)