---
title: "Tunnel Client Disconnect"
method: POST
path: "/tunnel/client-disconnect"
---

# Tunnel Client Disconnect

`POST /tunnel/client-disconnect`

## Request

- Base URL: `https://api.local-mcp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.local-mcp.com/tunnel/client-disconnect`
- Auth: none declared

The Mac client reports WHY its tunnel dropped — the server only ever sees a
generic 1006 on the socket, which can't distinguish a NAT/TCP drop from the
client's own watchdog force-reconnect (ping_failed) or a graceful redeploy.
Logged to infra_events so /admin/relay-health can break churn down by the
real client-side cause (LMCA cloud-relay churn investigation, 2026-06-05).

## Request body

- ClientDisconnectBody
  - `machine_id` string
  - `reason` string
  - `detail` string
  - `session_seconds` number

## Response `202`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/local-mcp/apis/lmcp-api.md) · [All operations](https://skmtc.dev/local-mcp/apis/lmcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/local-mcp/apis/lmcp-api/revisions/f1f1c502623a?raw)
