{"record":{"id":"51648dc92bd0cb43","repo":"langchain-ai/langgraph","slug":"thread-output-no-run-has-been-started-and-no-expl","errorCode":null,"errorMessage":"thread.output: no run has been started and no explicit thread_id was provided. Call thread.run.start() first.","messagePattern":"thread\\.output: no run has been started and no explicit thread_id was provided\\. Call thread\\.run\\.start\\(\\) first\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/sdk-py/langgraph_sdk/_async/stream.py","lineNumber":1929,"sourceCode":"        \"\"\"Return `True` if we can try the REST state before waiting on the lifecycle.\n\n        True only when the caller passed an explicit `thread_id` (not a minted\n        UUID) and no run has been seen yet, indicating a potential reattach to\n        an already-terminal thread.\n        \"\"\"\n        return self._explicit_thread_id and not self._run_seen\n\n    async def _wait_for_run_done(self) -> _RunTerminal:\n        \"\"\"Await `_run_done`, raising if the stream was never entered or no run exists.\n\n        Raises:\n            RuntimeError: stream not entered, or no run started and no explicit\n                thread_id was provided.\n        \"\"\"\n        if self._run_done is None:\n            raise RuntimeError(\"AsyncThreadStream not entered — use async with\")\n        if not self._run_seen and not self._explicit_thread_id:\n            raise RuntimeError(\n                \"thread.output: no run has been started and no explicit thread_id \"\n                \"was provided. Call thread.run.start() first.\"\n            )\n        return await self._run_done\n\n    async def _apply_lifecycle_event(self, event: Event) -> None:\n        \"\"\"Update `interrupted` / `interrupts` / `_run_done` from a lifecycle or input event.\"\"\"\n        method = event.get(\"method\")\n        if method == \"input.requested\":\n            params = event.get(\"params\") or {}\n            data = params.get(\"data\") if isinstance(params, dict) else None\n            interrupt_id = data.get(\"interrupt_id\") if isinstance(data, dict) else None\n            if isinstance(interrupt_id, str):\n                payload: InterruptPayload = {\n                    \"interrupt_id\": interrupt_id,\n                    \"value\": data.get(\"value\") if isinstance(data, dict) else None,\n                    \"namespace\": params.get(\"namespace\") or []\n                    if isinstance(params, dict)","sourceCodeStart":1911,"sourceCodeEnd":1947,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/sdk-py/langgraph_sdk/_async/stream.py#L1911-L1947","documentation":"Error \"thread.output: no run has been started and no explicit thread_id was provided. Call thread.run.start() first.\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/sdk-py/langgraph_sdk/_async/stream.py:1929 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"}