tailscale/tailscale · warning

taildrive not supported on platform

Error message

taildrive not supported on platform

What it means

After the capability checks pass, the drive handler needs the DriveForRemote subsystem from tsd.System. GetOK() returns false when that subsystem was never installed, meaning the platform or build variant does not provide the remote-access drive implementation. The handler replies 404 'taildrive not supported on platform'.

Source

Thrown at ipn/ipnlocal/peerapi_drive.go:59

		return
	}

	rawPerms := make([][]byte, 0, len(driveCaps))
	for _, cap := range driveCaps {
		rawPerms = append(rawPerms, []byte(cap))
	}

	p, err := drive.ParsePermissions(rawPerms)
	if err != nil {
		h.logf("taildrive: error parsing permissions: %v", err)
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	fs, ok := h.ps.b.sys.DriveForRemote.GetOK()
	if !ok {
		h.logf("taildrive: not supported on platform")
		http.Error(w, "taildrive not supported on platform", http.StatusNotFound)
		return
	}
	wr := &httpResponseWrapper{
		ResponseWriter: w,
	}
	bw := &requestBodyWrapper{
		ReadCloser: r.Body,
	}
	r.Body = bw

	defer func() {
		switch wr.statusCode {
		case 304:
			// 304s are particularly chatty so skip logging.
		default:
			log := h.logf
			if r.Method != httpm.PUT && r.Method != httpm.GET {
				log = h.logfv1

View on GitHub (pinned to 6e0912f979)

Solutions

  1. Check the platform support matrix for Taildrive; use a supported OS.
  2. Upgrade tailscaled to a version that ships DriveForRemote for this platform.
  3. If you build tailscale yourself, make sure the system installs the DriveForRemote component.
Defensive patterns

Strategy: validation

Validate before calling

// Feature-detect the same subsystem the handler uses.
if _, ok := sys.DriveForRemote.GetOK(); !ok {
    log.Printf("drive remote access unavailable on this platform")
    return errUnsupportedPlatform
}

Try / catch

Treat 404 'taildrive not supported on platform' as permanent for that node: route file sharing to a node on a supported platform rather than retrying.

Prevention

When it happens

Trigger: Running a tailscaled build or platform where DriveForRemote is not wired (for example an embedded/tsnet integration or a platform port without drive support); system component initialization left it unset.

Common situations: Embedding tailscale via tsnet and exposing peerapi; older versions before drive support landed on that platform; build tags that trim platform subsystems.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18). Data as JSON: /api/errors/0f7996437112041f. Report an issue: GitHub.