{"record":{"id":"03a465e4d9df4c7b","repo":"langchain-ai/langgraph","slug":"thread-output-no-run-has-been-started-and-no-expl-03a465","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/_sync/stream.py","lineNumber":1574,"sourceCode":"    def _state_is_terminal(self, state: dict[str, Any]) -> bool:\n        \"\"\"Return `True` if the thread state has no pending tasks or next nodes.\"\"\"\n        return not state.get(\"next\") and not state.get(\"tasks\")\n\n    def _can_return_existing_state_immediately(self) -> bool:\n        \"\"\"Return `True` if we can try the REST state before waiting on the lifecycle.\"\"\"\n        return self._explicit_thread_id and not self._run_seen\n\n    def _wait_for_run_done(self) -> _RunTerminal:\n        \"\"\"Block until lifecycle completion.\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(\"SyncThreadStream not entered — use `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 self._run_done.result()\n\n    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":1556,"sourceCodeEnd":1592,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/sdk-py/langgraph_sdk/_sync/stream.py#L1556-L1592","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/_sync/stream.py:1574 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"}