{"record":{"id":"2ccf7b9f022ec111","repo":"langchain-ai/langgraph","slug":"protocol-transport-is-closed-2ccf7b","errorCode":null,"errorMessage":"Protocol transport is closed.","messagePattern":"Protocol transport is closed\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/sdk-py/langgraph_sdk/stream/transport/sync_http.py","lineNumber":47,"sourceCode":"        commands_path: str | None = None,\n        stream_path: str | None = None,\n        headers: Mapping[str, str] | None = None,\n    ) -> None:\n        self._client = client\n        self.thread_id = thread_id\n        self._commands_url = (\n            commands_path or f\"/threads/{_quote_path_param(thread_id)}/commands\"\n        )\n        self._stream_url = (\n            stream_path or f\"/threads/{_quote_path_param(thread_id)}/stream/events\"\n        )\n        self._default_headers: dict[str, str] = dict(headers or {})\n        self._closed = False\n        self._open_responses: list[httpx.Response] = []\n\n    def send_command(self, command: dict[str, Any]) -> dict[str, Any] | None:\n        if self._closed:\n            raise RuntimeError(\"Protocol transport is closed.\")\n        merged_headers = {**self._default_headers, \"content-type\": \"application/json\"}\n        response = self._client.post(\n            self._commands_url,\n            content=orjson.dumps(command),\n            headers=merged_headers,\n        )\n        response.raise_for_status()\n        if response.status_code in (202, 204):\n            return None\n        payload = orjson.loads(response.content)\n        if not isinstance(payload, dict) or \"id\" not in payload:\n            raise RuntimeError(\"Protocol command did not return a valid response.\")\n        return payload\n\n    def open_event_stream(self, params: dict[str, Any]) -> SyncEventStreamHandle:\n        if self._closed:\n            raise RuntimeError(\"Protocol transport is closed.\")\n        sse_headers = {","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/sdk-py/langgraph_sdk/stream/transport/sync_http.py#L29-L65","documentation":"Error \"Protocol transport is closed.\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/sdk-py/langgraph_sdk/stream/transport/sync_http.py:47 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"38031739e551638e373fb553453256c23feeb41f","analyzedAt":"2026-08-26T18:02:49.312Z","schemaVersion":2},"datasetVersion":"2026-08-26T21:11:00.512Z"}