Skip to content

Tailscale: tagging tag:grokbot drops the session; reconnect mints a new untagged device #1172

Open

Description

@sinanawad

Summary

On a personal Tailscale tailnet, applying tag:grokbot to the Grok Bot device immediately drops its session. Reconnecting via Authenticate mints a new device that is again untagged. Least-privilege ACL/grants that target only tag:grokbot therefore never take effect in practice.

Steps to reproduce

  1. Install/connect the Tailscale plugin so Grok Bot joins the personal tailnet (device appears, typically named like grokbot-user-…).
  2. In Tailscale admin, set device tags to tag:grokbot (with tagOwners allowing that tag).
  3. Observe the Grok Bot Tailscale session disconnects / device goes offline.
  4. Authenticate / Sign in again from Grok Bot.
  5. A new Grok Bot device appears on the tailnet — still untagged (owner access).
  6. Repeat: tagging again → disconnect → reconnect → another new untagged device.

Expected

Either:

  • tagging tag:grokbot keeps the same device online and tagged, so grants like src: ["tag:grokbot"] → MCP host:port work; or
  • reconnect after tagging re-joins as the same tagged device (or re-applies the tag automatically).

Actual

Tagging forces a disconnect; each reconnect creates a fresh untagged machine. The documented least-privilege path (tag:grokbot + narrow grants) is effectively unenforceable for personal tailnets. Workaround today is owner-access (untagged) plus host/IP grants, which is broader than intended.

Notes

Environment

  • Grok Bot Tailscale plugin (third_party/tailscale)
  • Personal tailnet (incremental.coach / *.ts.net)
  • Goal: reach a private MCP on the tailnet with grants limited to tag:grokbot

Activity

  1. deanrie commented on Nov 5, 2026

    @deanrie

    @sinanawad for context on the docs side: the tag:grokbot path was removed from the plugin shortly before this was filed. Tailscale plugin 1.0.5 (#1167, merged 03.11) says "Personal tailnets connect only through one-click Connect; the tag:grokbot sign-in path is gone", and #1171 took it out of the README the next morning.

    On current main, third_party/tailscale/README.md and the setup skill describe a personal tailnet device as joining untagged with the member's own access. The scoped setup they describe is the company tailnet (Tailscale Premium or Enterprise, enabled at cursor.com Integrations → Tailscale). There, each member's Grok Bot device carries the custom:grokbot attribute and is limited with a posture:grokbot posture rather than a tag.

    So the README no longer offers a tag-based least-privilege setup for personal tailnets. What you describe matches that: a re-authenticated device comes back untagged. If narrowing a personal-tailnet device is meant to be supported, that would be a product request rather than a docs fix. Host and port grants on the member's own identity, as you did, are the closest option on a personal tailnet for now.

  2. sinanawad commented on Nov 5, 2026

    @sinanawad
    Author

    Thanks for the quick and detailed response, as you have may understood - the issue was opened by my bot, after it researched ways for the tailscale connection to be safer and it failed. I'll try and see where to report this regression/feature.
    Thanks again, keep up the great work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions