[[command]]
name = "tailscale"
description = "CLI for the Tailscale mesh VPN, controlling a local daemon that manages WireGuard tunnels. Read-only subcommands (status, ip, ping, netcheck, whois, dns status/query, version, bugreport, exit-node list/suggest, licenses) inspect local node state or probe the network. Write subcommands (up, down, login, logout, switch) mutate VPN connection state: up/login authenticate and connect to the tailnet, down disconnects, logout deauthenticates, and switch changes between tailnet profiles. up and login accept flags that configure routing (--advertise-routes, --exit-node) and access policy (--shields-up), which affect network topology for the entire tailnet. ping and netcheck send network probes. Tailscale releases frequently with monthly product updates and new CLI subcommands added regularly."
url = "https://tailscale.com/kb/1080/cli"
bare_flags = ["--help", "--version", "-h"]

[[command.sub]]
name = "bugreport"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "dns"
[[command.sub.sub]]
name = "query"
tolerate_unknown_short = true
standalone = ["--help", "-h"]
[[command.sub.sub]]
name = "status"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "down"
level = "SafeWrite"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "exit-node"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "--json", "-h"]
valued = ["--filter"]
max_positional = 0
[[command.sub.sub]]
name = "suggest"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "ip"
standalone = ["--1", "--4", "--6", "--help", "-h"]

[[command.sub]]
name = "licenses"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "login"
level = "SafeWrite"
standalone = [
    "--accept-dns", "--accept-routes", "--help", "--shields-up",
    "-h",
]
valued = [
    "--advertise-exit-node", "--advertise-routes",
    "--advertise-tags", "--authkey", "--exit-node",
    "--hostname", "--login-server", "--operator", "--timeout",
]
max_positional = 0

[[command.sub]]
name = "logout"
level = "SafeWrite"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "netcheck"
standalone = ["--help", "-h"]
max_positional = 0

[[command.sub]]
name = "ping"
bare = false
standalone = [
    "--c2c", "--help", "--icmp", "--peerapi", "--tsmp", "--until-direct", "--verbose",
    "-h",
]
valued = ["--size", "--timeout"]

[[command.sub]]
name = "status"
standalone = [
    "--active", "--browser", "--help", "--json",
    "--peers", "--self", "--web",
    "-h",
]
max_positional = 0

[[command.sub]]
name = "switch"
level = "SafeWrite"
bare = false
standalone = ["--help", "--list", "-h"]

[[command.sub]]
name = "up"
level = "SafeWrite"
standalone = [
    "--accept-dns", "--accept-routes", "--help", "--reset", "--shields-up",
    "-h",
]
valued = [
    "--advertise-exit-node", "--advertise-routes",
    "--advertise-tags", "--authkey", "--exit-node",
    "--exit-node-allow-lan-access", "--hostname",
    "--login-server", "--operator", "--timeout",
]
max_positional = 0

[[command.sub]]
name = "version"
tolerate_unknown_short = true
standalone = ["--help", "-h"]

[[command.sub]]
name = "whois"
bare = false
standalone = ["--help", "--json", "-h"]
