#21635: Fix status --deep showing tailscale off while tailnet is active
commands
size: S
Cluster:
Gateway Resilience and Configuration
# 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
#21772: [Bug]: Allow ws:// to Tailscale CGNAT addresses
by AIflow-Labs · 2026-02-20
77.8%
#14564: fix(gateway): crashes on startup when tailscale meets non-loopback ...
by yinghaosang · 2026-02-12
76.7%
#16300: fix(tui): respect gateway bind mode in TUI connection
by cortexuvula · 2026-02-14
75.4%
#23113: fix: show actual runtime version after update/restart when service ...
by BryanTegomoh · 2026-02-22
75.4%
#21256: fix: treat ws:// to Tailscale addresses as secure when bind=tailnet
by jessewunderlich · 2026-02-19
75.2%
#23299: fix(status): show runtime model context limit instead of stale sess...
by SidQin-cyber · 2026-02-22
74.4%
#22341: fix(status): detect node-only mode and show remote gateway info
by therk · 2026-02-21
74.3%
#20422: Fix/tailscale device pairing
by slagyr · 2026-02-18
73.1%
#23279: fix: show correct context limit in status when runtime model differs
by Imccccc · 2026-02-22
73.0%
#22716: fix: gateway status probe uses wss:// when TLS enabled; accept self...
by Fratua · 2026-02-21
73.0%