langchain-ai/langgraph · error · RuntimeError
Protocol transport is closed.
Error message
Protocol transport is closed.
What it means
Error "Protocol transport is closed." thrown in langchain-ai/langgraph.
Source
Thrown at libs/sdk-py/langgraph_sdk/stream/transport/sync_ws.py:54
ping_timeout: float | None = 20.0,
) -> None:
self._client = client
self.thread_id = thread_id
self._commands_url = (
commands_path or f"/threads/{_quote_path_param(thread_id)}/commands"
)
self._stream_path = (
stream_path or f"/threads/{_quote_path_param(thread_id)}/stream/events"
)
self._default_headers: dict[str, str] = dict(headers or {})
self._connect = connect
self._ping_interval = ping_interval
self._ping_timeout = ping_timeout
self._closed = False
def send_command(self, command: dict[str, Any]) -> dict[str, Any] | None:
if self._closed:
raise RuntimeError("Protocol transport is closed.")
merged_headers = {**self._default_headers, "content-type": "application/json"}
response = self._client.post(
self._commands_url,
content=orjson.dumps(command),
headers=merged_headers,
)
response.raise_for_status()
if response.status_code in (202, 204):
return None
payload = orjson.loads(response.content)
if not isinstance(payload, dict) or "id" not in payload:
raise RuntimeError("Protocol command did not return a valid response.")
return payload
def open_event_stream(self, params: dict[str, Any]) -> SyncEventStreamHandle:
if self._closed:
raise RuntimeError("Protocol transport is closed.")
closed = FalseView on GitHub (pinned to 38031739e5)
When it happens
Trigger: Thrown at libs/sdk-py/langgraph_sdk/stream/transport/sync_ws.py:54 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of langchain-ai/langgraph@38031739e5 (2026-08-26).
Data as JSON: /api/errors/3aff3b3f93d20d0d.
Report an issue: GitHub.