GeoaTailnet Guard

Tailworm · 11 findings · Tailscale 1.104.2 · headscale 0.29.5

Is your tailnet exposed to Tailworm?

A security assessment published 24 to 25 October 2026 reports 11 findings in Tailscale 1.104.2 and headscale 0.29.5. Paste what your own tailnet already tells you and get a ranked verdict for each one, with a review-only fix pack. Nothing on your tailnet changes.

Check your tailnetRead the 11 findings

Status pastePolicy fileNode reportPatch watch

0 of 11 have a vendor fix. Patch sources last checked 2026-10-29.

01 The findings

As of 2026-10-25 Tailscale has published no security bulletin, release note or changelog entry that acknowledges or fixes the Tailworm findings. The latest client is 1.104.2, the version the report tested. Earlier bulletins TS-2026-004 and TS-2026-005 fixed related issues in 1.98; they do not reference Tailworm.

02 Check your tailnet

Paste one, two or all three. Each input settles more findings; anything it cannot settle is shown as Unknown with the input it needs.

Status

Run tailscale status --json on any node and paste the output. It is read-only and shows the node list, who runs Tailscale SSH, versions and the control plane.

Policy

Export your policy file: admin console -> Access controls (https://console.tailscale.com/admin/acls) -> JSON editor -> select all, copy, save as policy.hujson, then paste it into the policy box or run the audit again with it.

Node report

The JSON printed by the read-only CLI in 03, for node facts a status paste cannot show (Serve forwards, app connector, Tailnet Lock, the forwarding knob).

Your paste is audited in memory and not stored or logged; only "Save a proof report" stores the result, never the paste. Never paste auth keys, API keys or the output of tailscale debug prefs: this check does not need them, and the last one holds your Tailnet Lock private key.

03 Run it on a node

One POSIX shell script. It runs read-only tailscale commands on the node you choose, prints JSON and sends nothing unless you add --submit.

Run it and print JSON
curl -fsS https://tailnet.geoa.io/cli/geoa-tailnet.sh | sh -s -- --json
Opt in: send the report here and get the verdicts back
curl -fsS https://tailnet.geoa.io/cli/geoa-tailnet.sh | sh -s -- --submit https://tailnet.geoa.io/api/node-report

Read it first: /cli/geoa-tailnet.sh. It never reads keys or debug output and never changes a setting. Paste its JSON into the node report box above.

04 Ask your agent

The same audit as an MCP server: ask Claude Code, Cursor or Codex to check your tailnet and explain a finding with its source line.

Claude Code

Add the MCP server
claude mcp add --transport http geoa-tailnet https://tailnet.geoa.io/mcp
Install the /geoa-tailnet slash command and skill
bash <(curl -s https://tailnet.geoa.io/plugin/install.sh)

Then ask /geoa-tailnet TW-01, /geoa-tailnet check or /geoa-tailnet fix. Full setup and example prompts.

Cursor

.cursor/mcp.json
{
  "mcpServers": {
    "geoa-tailnet": {
      "url": "https://tailnet.geoa.io/mcp"
    }
  }
}

Project-level file; use ~/.cursor/mcp.json for every project. Cursor lists the 8 tools under MCP in settings.

Codex

~/.codex/config.toml
[mcp_servers.geoa-tailnet]
url = "https://tailnet.geoa.io/mcp"

Restart Codex; /mcp shows geoa-tailnet with its tools.

Any agent

Paste this prompt into your agent
Set up the Geoa Tailnet Guard MCP server for me: name geoa-tailnet, transport Streamable HTTP, URL https://tailnet.geoa.io/mcp, no login. Confirm it lists the tools list_findings, explain_finding, audit_status_json, audit_policy, audit_node_report, propose_fix, patch_status, watch_tailnet, then explain finding TW-01 with its source citation.

Works with any MCP client that speaks Streamable HTTP. Tools: list_findings, explain_finding, audit_status_json, audit_policy, audit_node_report, propose_fix, patch_status, watch_tailnet.