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.logfv1View on GitHub (pinned to 6e0912f979)
Solutions
- Check the platform support matrix for Taildrive; use a supported OS.
- Upgrade tailscaled to a version that ships DriveForRemote for this platform.
- 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
- Pin node images to platforms with Taildrive support.
- Smoke-test drive access when provisioning new node types.
- Track release notes for platform support changes.
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
- not implemented
- config file loading not supported on %q
- taildrive not enabled
- taildrive not permitted
- unmarshal raw grants %s: %v
AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18).
Data as JSON: /api/errors/0f7996437112041f.
Report an issue: GitHub.