> ## Documentation Index
> Fetch the complete documentation index at: https://help.dsalta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tailscale

> Mesh VPN — users & devices

<Tabs>
  <Tab title="Overview">
    Connect Tailscale with an API key to sync tailnet users and managed devices, and run access reviews. Read-only.

    <Info>
      **Read-only access.** DSALTA only reads data from this integration. It never creates, modifies, or deletes anything in your environment, and every remediation step is performed by your team directly in the third-party product.
    </Info>

    <Note>
      DSALTA collects this integration's data when you connect it — you can refresh it at any time with **Sync from integrations** on the **Integrations** page. The compliance checks below re-run once a day at 02:00 America/New\_York.
    </Note>

    ## What DSALTA reads

    DSALTA reads the Tailscale tailnet user list — display name, login name (the user's email), role and status — which appears on your **Access** page and which the checks below match against your **People** directory; and the machines enrolled in the tailnet — hostname, device id, operating system and the email of the user that owns them — which appear on your **Devices** page. Suspended, idle and invited users are listed as **Inactive** rather than removed.

    It calls these Tailscale endpoints:

    * `GET /v2/tailnet/{tailnet}/users`
    * `GET /v2/tailnet/{tailnet}/devices`

    Every request is a read. DSALTA has no code path that creates, modifies, or deletes anything in your Tailscale environment.

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection fails to validate">
        An invalid, revoked or expired API access token, an **Organization Name** that is neither `-` nor a real tailnet name, or a token created by an account without the rights to read the tailnet.
      </Accordion>

      <Accordion title="It worked, then stopped a few weeks later">
        A Tailscale API access token expires between 1 and 90 days after you create it. Generate a fresh token in **Personal Settings → Keys**, then **Disconnect** and connect again with it. Diary the rotation before the expiry date, and export anything you still need as audit evidence first — disconnecting deletes the records already collected from Tailscale.
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="How do I check whether the connection is healthy?">
        Open **Integrations** in the DSALTA sidebar, stay on the **Connected** tab, and click **Manage** on the integration's card. Open the **Status** tab: it shows either **Connected and working properly** or **Connection issues detected**.

        Use the **Status** tab, not **Overview** — Overview always reports **Connected** regardless of the real state.
      </Accordion>

      <Accordion title="A check shows Failed and nothing changed on my side">
        On an integration-powered check, **Failed** normally means DSALTA was blocked rather than that you are non-compliant. Open the test, go to **Source Data**, and read the result code: **403** is a missing permission, **428** is a setting DSALTA still needs, **500** is a failure on DSALTA's side.

        A real compliance gap shows **207** and leaves the test looking **Completed**. See [Understanding Test Results](/guides/data-library/test-results).
      </Accordion>

      <Accordion title="Data looks out of date">
        Compliance checks re-run once a day at 02:00 America/New\_York. To refresh sooner, open **Integrations → Connected** and click **Sync from integrations** at the top right — it refreshes every connected integration at once.
      </Accordion>

      <Accordion title="How do I repair a broken connection?">
        There is no Reconnect, Repair or Refresh Token button. The only repair available is to disconnect and connect again.

        <Warning>
          **Disconnecting is destructive and cannot be undone.** DSALTA removes the access records, inventory, vulnerabilities, code changes, incidents and device records collected from this integration, and deletes the test results tied to the connection. Export anything you still need as audit evidence first — see [Integration errors](/troubleshooting/integration-errors).
        </Warning>
      </Accordion>

      <Accordion title="Configure scope will not let me change anything">
        That is expected. **Configure scope** is read-only — it shows what DSALTA is permitted to read, and has no Save action. To change what DSALTA can see, change the permissions on the credential in the third-party product, then disconnect and connect again.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="How to connect">
    A Tailscale API access token, entered in Nango's secure connect window. Read-only.

    **Before you begin**

    * A Tailscale tailnet, and an account with the **Owner**, **Admin**, **IT admin** or **Network admin** role
    * A rotation plan: Tailscale access tokens expire between 1 and 90 days, so plan to generate a fresh token and reconnect before the expiry date

    You will need:

    | Field                 | Where to find it                                                                   | Example                          |
    | --------------------- | ---------------------------------------------------------------------------------- | -------------------------------- |
    | **API access token**  | Tailscale admin console → **Personal Settings → Keys** → **Generate access token** | Shown once, when you generate it |
    | **Organization Name** | Leave it as a single dash unless you manage more than one tailnet                  | `-`                              |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **Tailscale**, and click **Connect** to open the connect panel. Leave it open — it lists every value you need, and you create those in the steps below.
      </Step>

      <Step title="Create a Tailscale API access token">
        In the Tailscale admin console, go to **Personal Settings → Keys** — not **Tailnet Settings**. Click **Generate access token**, name it (e.g. `DSALTA`), and copy it — it's shown once. You need to be an Owner, Admin, IT admin, or Network admin.

        <Tip>
          The **Tailnet ID** shown under **Tailnet Settings → General** is an unrelated internal identifier. It is not the value this integration needs, and putting it in the connect window will not work.
        </Tip>

        <Warning>
          **This token is a live credential** — it can read your tailnet for as long as it exists. Keep it out of chat messages, tickets and shared documents, and delete your copy once the connection is saved. If it does leak, revoke it in **Personal Settings → Keys** and connect again with a new one.
        </Warning>

        <img src="https://mintcdn.com/dsalta/50UUP7lNdp3gnRd3/images/integrations/tailscale/01-personal-settings-keys.png?fit=max&auto=format&n=50UUP7lNdp3gnRd3&q=85&s=801fcac7f6b8906b0b4ad1850336b18d" alt="Tailscale's admin console Keys page, reached from Personal Settings rather than Tailnet Settings, showing the API access tokens section and its Generate access token button" style={{maxWidth:"720px",width:"100%",borderRadius:"8px"}} width="1914" height="773" data-path="images/integrations/tailscale/01-personal-settings-keys.png" />
      </Step>

      <Step title="For &#x22;Organization Name&#x22;, just enter a dash: -">
        The popup will also ask for an **Organization Name** — for almost every account this should just be a single dash (`-`), which Tailscale documents as shorthand for "the default tailnet of whichever API key is used." Do not enter your company or workspace name there; that will fail. Only enter something else here if your Tailscale account genuinely manages multiple separate tailnets and you need to target a specific one by its real name.
      </Step>

      <Step title="Connect Tailscale">
        Enter your Tailscale credentials in the secure Nango window. DSALTA never stores them directly — it keeps only a connection reference.

        <Info>
          That window is Nango's, not DSALTA's. The value you put in **Organization Name** becomes the tailnet path parameter in every call listed on the **Overview** tab.
        </Info>
      </Step>
    </Steps>

    <Check>
      DSALTA validates the credential when you finish the connect window. On success the integration moves to the **Connected** tab, and **Manage → Status** reads **Connected and working properly**. Checks begin reporting after the first sync.

      Open the **Devices** page after the first sync to confirm your machines are listed.
    </Check>

    <Warning>
      **If the connection is rejected.** An invalid, revoked or expired API access token, an **Organization Name** that is neither `-` nor a real tailnet name, or a token whose owner is not an Owner, Admin, IT admin or Network admin.

      The on-screen message is generic — see [Connection error messages](/troubleshooting/connection-error-messages).
    </Warning>
  </Tab>

  <Tab title="Automated checks">
    Each check below re-runs once a day, at 02:00 America/New\_York, while this integration is connected. Click any check for step-by-step remediation guidance.

    | Check                                                                                                                    | Severity | What it verifies                                                                     |
    | ------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------------------------------------ |
    | [User access to Critical System should be valid](/integrations/tailscale/user-access-to-critical-system-should-be-valid) | Info     | Checks that everyone with Tailscale access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/tailscale/offboarded-users-should-not-have-active-access) | High     | Checks that offboarded employees no longer have active Tailscale access.             |
  </Tab>

  <Tab title="Useful links">
    | Topic   | Link                                                                                                 |
    | ------- | ---------------------------------------------------------------------------------------------------- |
    | Setup   | [Tailscale admin console: Personal Settings → Keys](https://login.tailscale.com/admin/settings/keys) |
    | General | [Tailscale website](https://tailscale.com)                                                           |
    | DSALTA  | [Connection error messages](/troubleshooting/connection-error-messages)                              |
  </Tab>
</Tabs>
