← Back to PRs

#21635: Fix status --deep showing tailscale off while tailnet is active

by graysurf open 2026-02-20 06:01 View on GitHub →
commands size: S
# Fix status --deep showing tailscale off while tailnet is active ## Summary `openclaw status --deep` could show `Tailscale: off` with no runtime detail when `gateway.tailscale.mode=off`, even if the host is actively connected to tailnet. This change surfaces detected runtime state (`Running` + DNS) and renders `active · mode off ...` so status output is operationally accurate. ## Problem - Expected: When tailscale runtime is active, status output should reflect active tailnet connectivity. - Actual: In `mode=off`, status could show only `off`, which is misleading in active tailnet environments. - Impact: Operators may misdiagnose working tailnet setups and perform unnecessary config changes. ## Reproduction 1. Configure `gateway.tailscale.mode=off`. 2. Ensure tailscale runtime is active (`tailscale status --json` reports `BackendState=Running` and `Self.DNSName`). 3. Run `openclaw status --deep`. - Expected result: Tailscale row indicates active runtime (while still clarifying mode is off). - Actual result (before): Tailscale row could render as only `off`. ## Issues Found Severity: high Confidence: high Status: fixed | ID | Severity | Confidence | Area | Summary | Evidence | Status | | --- | --- | --- | --- | --- | --- | --- | | PR-21635-BUG-01 | high | high | src/commands/status.command.ts | status --deep under-reports tailscale runtime when mode is off | https://github.com/openclaw/openclaw/issues/21131 | fixed | ## Fix Approach - Read tailscale runtime status (`BackendState`, `Self.DNSName`) in `scanStatus`, even when mode is `off`. - Introduced `formatTailscaleOverviewValue` for deterministic tailscale row rendering. - Updated `status.command.ts` to show: - `active · mode off · Running · <dns>` when tailnet is active but mode is off. - existing configured-mode output with backend state. - Added unit tests for tailscale overview formatting across key scenarios. ## Testing - `pnpm test -- src/commands/status.tailscale.test.ts` (pass) - `pnpm check` (pass) ## Risk / Notes - Scope is limited to status probing/rendering. - No auth, billing, migration, or deployment logic changed. <!-- greptile_comment --> <h3>Greptile Summary</h3> This PR fixes a status reporting issue where `openclaw status --deep` would incorrectly show `Tailscale: off` when the tailnet is actually active but configured with `mode=off`. The fix introduces `formatTailscaleOverviewValue()` to deterministically format tailscale status based on runtime state (`BackendState`, DNS) rather than just configured mode. The implementation correctly surfaces active tailnet connectivity while clarifying that the mode is off. <h3>Confidence Score: 4/5</h3> - This PR is safe to merge with low risk - it's a focused status reporting fix with good test coverage - The changes are well-scoped to status display logic with no impact on auth, billing, or deployment. Test coverage validates the key scenarios. Small deduction for missing edge case test coverage (mode=off with DNS but null BackendState) - No files require special attention - all changes are straightforward status formatting improvements <sub>Last reviewed commit: 66da277</sub> <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs