{"record":{"id":"cf930912c54b307c","repo":"langchain-ai/deepagents","slug":"langgraph-json-not-found-in-work-dir-call-gener","errorCode":null,"errorMessage":"langgraph.json not found in {work_dir}. Call generate_langgraph_json() first.","messagePattern":"langgraph\\.json not found in (.+?)\\. Call generate_langgraph_json\\(\\) first\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/client/launch/server.py","lineNumber":950,"sourceCode":"                try:\n                    work_dir.mkdir(parents=True, exist_ok=True)\n                    self._scaffold(work_dir)\n                except OSError as exc:\n                    msg = f\"Failed to rescaffold server workspace at {work_dir}: {exc}\"\n                    raise RuntimeError(msg) from exc\n            if not config_path.exists():\n                if self._scaffold is not None:\n                    contents = sorted(p.name for p in work_dir.iterdir())\n                    msg = (\n                        f\"Rescaffolding {work_dir} did not produce langgraph.json \"\n                        f\"(directory contents: {contents}).\"\n                    )\n                else:\n                    msg = (\n                        f\"langgraph.json not found in {work_dir}. \"\n                        \"Call generate_langgraph_json() first.\"\n                    )\n                raise RuntimeError(msg)\n\n            if self.port == _EPHEMERAL_PORT:\n                self.port = _find_free_port(self.host)\n                logger.info(\n                    \"Using ephemeral port %d for langgraph dev server\", self.port\n                )\n            elif _port_in_use(self.host, self.port):\n                self.port = _find_free_port(self.host)\n                logger.info(\"Requested port in use, using port %d instead\", self.port)\n\n            cmd = _build_server_cmd(config_path, host=self.host, port=self.port)\n            env = _server_env_with_overrides(\n                self._persistent_env_overrides, self._env_overrides\n            )\n\n            logger.info(\"Starting langgraph dev server: %s\", \" \".join(cmd))\n            self._log_file = tempfile.NamedTemporaryFile(  # noqa: SIM115\n                prefix=\"deepagents_server_log_\",","sourceCodeStart":932,"sourceCodeEnd":968,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/client/launch/server.py#L932-L968","documentation":"`_spawn_process` requires `langgraph.json` in the server workspace before launching; if rescaffolding is unavailable (no `_scaffold` callable) and the config file is absent, it raises `RuntimeError` instructing the caller to generate the config first.","triggerScenarios":"Starting the server against a bare/empty work_dir where `generate_langgraph_json()` was never called and no scaffold hook is configured, or the config was deleted between generation and launch.","commonSituations":"Manually constructing `LanggraphServer` with a fresh directory and calling `start()` without the generate step; cleaning temp dirs while a server session expects them; misconfigured work_dir pointing to an uninitialized path.","solutions":["Call `generate_langgraph_json()` on the server/manager before `start()` to create the config","Verify the work_dir you pass is the one where the config was generated","Regenerate the config if it was deleted, or point at a workspace that retains `langgraph.json`","Provide a `_scaffold` hook so the launcher can self-heal a missing config"],"exampleFix":"// before\nserver = LanggraphServer(work_dir=empty_dir)\nawait server.start()  # no langgraph.json\n// after\ngenerate_langgraph_json(work_dir=empty_dir)\nserver = LanggraphServer(work_dir=empty_dir)\nawait server.start()","handlingStrategy":"validation","validationCode":"cfg = work_dir / \"langgraph.json\"\nif not cfg.exists():\n    generate_langgraph_json(work_dir)\nassert cfg.exists(), \"langgraph.json still missing after generation\"","typeGuard":"def has_langgraph_config(work_dir) -> bool:\n    return (work_dir / \"langgraph.json\").is_file()","tryCatchPattern":"try:\n    await server._start()\nexcept RuntimeError as e:\n    if \"langgraph.json not found\" in str(e):\n        generate_langgraph_json(server.work_dir)\n        await server._start()\n    else:\n        raise","preventionTips":["Always call generate_langgraph_json() before start() on a fresh workspace","Pass the same work_dir used at config-generation time","Persist the workspace (don't wipe temp dirs mid-session)","Configure a scaffold hook so the launcher can regenerate automatically"],"tags":["config","missing-file","scaffold"],"backgroundTag":"missing-config-file","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}