Blog|productNovember 09, 2026

Grok Bot has a Tailscale integration—and now you can, too

Author

Sam LinvilleSam Linville
Tailscale icon on left with 9 dots in 3x3 grid, connected by 5 dots to a sphere with eyes (Grok Bot).

Your AI agent can help you get work done, but some of the most useful tools and data it could work with are locked away on your private network, for good reason. You shouldn’t have to expose your internal infrastructure to the public internet just to make it accessible to an AI agent.

Tailscale OAuth apps, now generally available, provide that connection between a user’s Tailscale network (tailnet) and agents through a standard OAuth 2.0 authorization flow. Unlike Tailscale’s existing OAuth clients, which create tag-owned devices under a shared service identity, OAuth apps act on behalf of the user who authorizes them. Devices provisioned this way carry the user’s identity, so tailnet access policies, audit logs, and device quotas all still apply, just like for any other device you own.

This flow is already in production: Grok Bot can use OAuth apps to connect to private Model Context Protocol servers on your tailnet, without exposing them to the public internet. You stay in control of what it can access, and you’re not pasting keys or secrets anywhere.

Give your agent access, without giving it access to everything

When you connect Grok Bot to Tailscale, it joins your tailnet as a device associated with your user identity. Like any other device on your tailnet, Grook Bot follows your tailnet policy controls.

You might want Grok Bot to access an internal MCP server, but not everything else your laptop can reach. With Tailscale’s device posture checks, you can do exactly that.

When you add Grok Bot to a tailnet on our Premium or Enterprise plan, it will have a custom posture attribute that you can use in your tailnet policy to control which resources it can access, separately from your other devices. On other plans, you can achieve similar control by assigning a tag to Grok Bot’s device after authentication and using tag-based access rules instead of combining user identity with device posture.

For example, this policy lets members of your engineering team access production databases from their regular devices, while Grok Bots associated with those engineers’ identities can access only designated MCP servers:

{
  "postures": {
    "posture:grokbot": ["custom:grokbot == true"],
    "posture:human": ["custom:grokbot NOT SET"]
  },

  // All access rules require posture:human unless otherwise specified
  "defaultSrcPosture": ["posture:human"],

  "grants": [
    {
      // Engineers can access production databases. The defaultSrcPosture applies here.
      "src": ["group:engineering"],
      "dst": ["tag:production-db"],
      "ip": ["tcp:5432"]
    },
    {
	// Grok Bots owned by engineers can access MCP servers.
      "src": ["group:engineering"],
      "srcPosture": ["posture:grokbot"],
      "dst": ["tag:mcp-servers"],
      "ip": ["tcp:443"]
    }
  ]
}

The defaultSrcPosture ensures that existing access rules don’t apply to Grok Bot devices. The explicit srcPosture on the second grant makes an exception, allowing Grok Bot to reach MCP servers without inheriting the user’s broader network access.

Custom posture attributes are available on Tailscale Premium and Enterprise plans.

Get started

Connect Grok Bot to your tailnet using the Tailscale plugin in the Grok Bot desktop app.

Interested in building your own integration? Start with the OAuth Apps documentation and device provisioning guide.

Share
Loading...

Try Tailscale for free

Schedule a demo
Contact sales
cta phone
mercury
instacrt
Retool
duolingo