Skip to Content
Teitunnel

Reference

Doctor checks

Every problem Teitunnel's Doctor checks for in Cloudflare Tunnel, DNS, connectors, WARP settings and local domains, what it means and how to fix it.

The Doctor (⌘8, or Ctrl+8 on Windows and Linux) checks cloudflared, your accounts, domains, DNS records, connectors, private network settings and local domains: every five minutes in the background, and whenever you open it or choose Check again. Each problem comes with a fix or clear guidance, grouped as Problems, Warnings and Suggestions.

  • Fix… on a problem opens its fix. Fixes that change Cloudflare are previewed like any other change, and undone step by step if something fails.
  • Fix Safe Issues applies, without review, the fixes that only repair DNS records and remove orphaned records and logins, and only when their plan touches nothing Teitunnel didn't create. Anything else is left for you ("2 need your review.").
  • Ignore hides a problem (and its notifications) until you bring it back with Show Ignored Issues.

A new error sends one notification until it's resolved. Connector outages have their own notifications, and an account that can't be reached (usually a network blip) doesn't notify.

Doctor: a problem, docs.teispace.com has no DNS record, with Fix the DNS Record, and warnings about a WARP range, a port nothing listens on and a record pointing at a deleted tunnel

From the terminal

teitunnel doctor            # every issue; exits with 1 when there's an error
teitunnel doctor --fix      # apply the safe fixes after showing them
teitunnel doctor --fix -y   # without asking
teitunnel doctor --json     # for scripts and monitoring

AI agents get the same checks through the MCP tools doctor and fix_issue, and editors through Run Doctor (integrations).

Each problem's check id (in code type below) appears in --json, diagnostics exports and bug reports.

cloudflared

CheckLevelWhat it means, and what to do
binary.missingProblemcloudflared isn't installed. Routes and Quick Share need it. Install cloudflared installs a verified copy.
binary.unsupportedWarningcloudflared is too old. Some features need a newer version. Install cloudflared updates to the managed copy.

Accounts and domains

CheckLevelWhat it means, and what to do
account.unreachableProblemCouldn't check an account. Usually a network problem; the detail says what Cloudflare answered. If the token was revoked or expired, Connect Again….
auth.missing_scopeWarningThis account's token can't manage routes. Routes need Cloudflare Tunnel · Edit and DNS · Edit. Create a token with those permissions and connect it again.
zone.pendingWarningA domain is waiting for its nameservers. Routes on it won't work until the registrar uses the Cloudflare nameservers listed in the detail.

Routes and DNS

CheckLevelWhat it means, and what to do
dns.missingProblemA hostname has no DNS record. The tunnel serves it, but nothing points it at the tunnel, so it doesn't resolve. Fix the DNS Record adds it (a safe fix).
dns.not_proxiedProblemA hostname isn't proxied through Cloudflare. Tunnel hostnames only work with the orange cloud on. Fix the DNS Record turns it on (a safe fix).
dns.wrong_targetProblemA hostname points at another tunnel. Requests don't reach this machine. Fix the DNS Record points it at this machine's tunnel.
dns.conflictProblemAnother record answers for a hostname. A record Teitunnel didn't create takes the traffic. Fix the DNS Record replaces it, after you confirm.
dns.orphan_ownedWarningA record Teitunnel created points at this machine's tunnel but has no route (visitors get a 404), or at a tunnel that no longer exists (visitors see a Cloudflare error). Delete the Record (a safe fix), or add a route for it.
dns.orphan_foreignWarningThe same, for a record Teitunnel didn't create. Delete the Record only after you confirm.
origin.not_listeningWarningNothing is listening on port 3000. Start the app the route sends traffic to; visitors see an error until it runs.
origin.tlsWarningAn HTTPS origin's certificate isn't trusted. The connector couldn't verify it. Use http:// for a local origin, or a certificate this machine trusts (or turn on Accept self-signed certificates in the route's Origin settings).
inspect.orphanProblemA route points at an inspector that isn't running. The route was being inspected by an app or command that stopped without restoring it, so visitors get an error. Restore the Route points it back at its own service (a plan, as always).
access.orphanSuggestionA domain still has a login but no route. Teitunnel added a login for a route that was removed outside Teitunnel. It protects nothing now, but would ask for a login if the hostname were routed again. Remove the Login (a safe fix; only logins Teitunnel created), or add the route back.
host.orphanSuggestionA hostname has no route, but Teitunnel's settings for it are still in Cloudflare. Its offline page or webhook inbox Worker, edge rules or service tokens outlived the route (an older version, a DNS record deleted in the dashboard, an interrupted change, another computer). Found only when the hostname has no DNS record at all, so nothing anywhere serves it. Clean Up removes just what Teitunnel created (a safe fix).
config.driftWarningThis machine's routes were changed outside Teitunnel (in the dashboard, or with another tool). Keep Changes accepts them; Restore Mine puts back what Teitunnel set up.

_owned means Teitunnel created the record, so Fix Safe Issues may delete it; _foreign records are only deleted after you confirm.

Connectors

CheckLevelWhat it means, and what to do
tunnel.no_connectionsProblemThis machine's connector isn't running. Its routes don't answer until it runs. Start Connector.
tunnel.crash_loopProblemThis machine's connector keeps stopping. cloudflared exited several times in a row; the detail has the last exit code and its logs say why. Start Connector retries.
tunnel.degradedWarningThis machine's connector lost its connection. cloudflared is running but not connected to Cloudflare. It reconnects on its own; check the network if it persists.
tunnel.stale_connectionsWarningCloudflare still lists connections for this machine's tunnel while its connector isn't running: leftovers, or another machine runs the tunnel with its token. Clean Up Connections if nothing else should run it.
tunnel.other_connectorsWarningAnother machine also runs this machine's tunnel. Cloudflare splits requests between them, so some visitors reach the other machine. Stop cloudflared there (its logs in Tunnels help find it), or delete and re-add the routes to get a new tunnel token.
tunnel.duplicate_localWarningAnother cloudflared on this machine runs this machine's tunnel. Stop the other one from Tunnels.
tunnel.foreign_runningSuggestioncloudflared is running outside Teitunnel (a Quick Tunnel, a named tunnel, or a background service). For your information: Teitunnel leaves it alone. Stop it from Tunnels, or import its routes.
tunnel.unused_ownedSuggestionThis machine's tunnel has no routes. It's kept so adding a route is quick. Delete the Tunnel if you don't need it.

Private networks

These appear once you share a private network (a range or a hostname). Only you can fix them: in the Cloudflare Zero Trust dashboard, or for a hostname, in this machine's DNS.

CheckLevelWhat it means, and what to do
network.excludedWarningWARP clients don't send a range to this machine. The default device profile's Split Tunnels exclude it (the detail names the entry). Remove the entry, or narrow it so it no longer covers the range.
network.not_includedWarningWARP clients don't send a range to this machine. Split Tunnels are in include mode and don't list the range. Add it.
network.proxy_offWarningWARP clients can't reach private networks. Gateway's proxy is off. Turn it on for TCP (and UDP, for services that use it) in the network settings. The evidence lists the ranges and hostnames shared.
network.hostname_unresolvedWarningA private hostname doesn't resolve on this machine. The connector looks up private hostnames with this machine's DNS, so WARP clients can't reach the name until it resolves here. Add it to the hosts file or to your local DNS server.

Network and system

CheckLevelWhat it means, and what to do
net.udp_blockedWarningThis network seems to block QUIC (UDP). cloudflared falls back to HTTP/2, which works but can be slower to reconnect. If connections keep dropping, check firewall rules for UDP port 7844.
net.clock_skewWarningThis machine's clock may be wrong. Certificates look expired or not yet valid. Turn on automatic date and time in your system settings.

Local domains

These appear once you have local domains. Their fixes run on this computer; nothing changes in Cloudflare.

CheckLevelWhat it means, and what to do
local.stoppedProblemLocal domains aren't being served. The detail says why. Restart Local Domains.
local.portProblem or SuggestionLocal domains can't start: port 443 isn't available (a problem), or Local domains use port 8443 instead of 443 (a suggestion: addresses include the port number). Another app is using the port, or only administrators may use it. Quit the other app and Restart Local Domains.
local.untrustedWarningBrowsers don't trust your local domains yet. Teitunnel signs their certificates with its own certificate authority, which only works for .localhost, .test and .local names. Trust Local Domains once.
local.dnsProblemThe name server for .test names isn't running. Restart Local Domains.
local.resolverWarningA .test name doesn't reach this computer yet. It needs a one-time entry that sends .test names to Teitunnel's name server, which needs administrator rights. Set Up .test Names… shows the command to run.
local.elsewhereWarningA name points at another computer. The system resolves it to an address that isn't this computer. Check your hosts file or DNS settings, or use a .localhost name.
local.ca_expiryWarningThe local certificate authority expires soon (within 30 days). Replace Certificate Authority makes a new one to trust; your local domains stay as they are.
local.certificateWarningA local domain's certificate expires soon (within 5 days) and wasn't renewed by itself. Renew Certificates.

What the Doctor doesn't check

Workers Teitunnel puts in front of routes (offline page, webhook inbox), Snapshots and edge protection aren't part of the Doctor's checks; their own sections in the app show their state.

Diagnostics

Help ▸ Export Diagnostics… saves a file to attach to a bug report: app logs, the Doctor report and versions. Tokens, keys and passwords are removed; hostnames and account ids stay so the problem can be understood. You see what's in it before it's saved.

Tick Include cloudflared's own report to add cloudflared tunnel diag for this machine's connector: its logs, metrics, system details and traceroutes to Cloudflare. It takes up to two minutes, and Teitunnel can't redact it, so look through it before you share it. Cloudflare support often asks for this file.

Edit on GitHub

Last updated on

On this page