{"record":{"id":"ce5e3b7b2aea1383","repo":"langchain-ai/deepagents","slug":"32002","errorCode":"-32002","errorMessage":"Resource not found: session_id","messagePattern":"Resource not found: session_id","errorType":"error_code","errorClass":"RequestError","httpStatus":null,"severity":"error","filePath":"libs/acp/deepagents_acp/server.py","lineNumber":412,"sourceCode":"    async def load_session(\n        self,\n        cwd: str,\n        session_id: str,\n        additional_directories: list[str] | None = None,  # noqa: ARG002  # capability is not advertised\n        mcp_servers: list[McpServer] | None = None,\n        **kwargs: Any,  # noqa: ARG002  # ACP protocol interface parameter\n    ) -> LoadSessionResponse:\n        \"\"\"Restore and replay a persisted ACP session.\"\"\"\n        if not self._load_sessions:\n            method = \"session/load\"\n            raise RequestError.method_not_found(method)\n\n        self._session_cwds[session_id] = cwd\n        agent = self._checkpointed_agent(session_id)\n        metadata = (await agent.aget_state(self._session_config(session_id))).metadata or {}\n        if metadata.get(_ACP_SESSION_METADATA_KEY) is not True:\n            self._forget_session(session_id)\n            raise RequestError.resource_not_found(session_id)\n        if metadata.get(\"cwd\") != cwd:\n            self._forget_session(session_id)\n            raise RequestError.invalid_params(\n                {\"cwd\": \"must match the working directory used to create the session\"}\n            )\n\n        self._session_mcp_servers[session_id] = list(mcp_servers or [])\n        self._initialize_session_options(session_id)\n        if self._restore_session_options(session_id, metadata):\n            self._reset_agent(session_id)\n\n        await self._replay_session(session_id, agent)\n        return LoadSessionResponse(\n            modes=self._session_mode_states.get(session_id),\n            config_options=self._build_config_options(session_id) or None,\n        )\n\n    async def set_session_mode(","sourceCodeStart":394,"sourceCodeEnd":430,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/acp/deepagents_acp/server.py#L394-L430","documentation":"`parse_model_allowlist` validates the raw TOML value of `[models].allowed` and raises `TypeError` when the value is not a list. The allowlist must be an array of spec strings; anything else (string, table, bare value) cannot represent an allowlist.","triggerScenarios":"Setting `allowed = \"anthropic:claude-sonnet-4-5\"` (a bare string instead of `[\"...\"]`) or `allowed = { ... }` in `config.toml`; passing a non-list programmatically to `parse_model_allowlist`, e.g. via `coerce_toml_value`.","commonSituations":"Misreading the config schema and writing a single spec as a scalar instead of a one-element array; TOML table accidentally placed under `[models.allowed]` making it a dict.","solutions":["Wrap the value in a TOML array: `allowed = [\"anthropic:claude-sonnet-4-5\"]`","Check the `[models]` table — ensure `allowed` is not accidentally a sub-table header","Validate the TOML structure with a TOML linter/parser before loading"],"exampleFix":"# before\n[models]\nallowed = \"anthropic:claude-sonnet-4-5\"\n# after\n[models]\nallowed = [\"anthropic:claude-sonnet-4-5\"]","handlingStrategy":"type-guard","validationCode":"allowed = data.get(\"models\", {}).get(\"allowed\")\nif allowed is not None and not isinstance(allowed, list):\n    raise TypeError(\"[models].allowed must be a TOML array of strings\")","typeGuard":"def is_allowlist_value(value: object) -> bool:\n    return isinstance(value, list) and all(\n        isinstance(e, str) and e.strip() for e in value\n    )","tryCatchPattern":"try:\n    parsed = parse_model_allowlist(raw)\nexcept TypeError:\n    logger.error(\"[models].allowed must be an array; got %s\", type(raw).__name__)\n    parsed = ()","preventionTips":["Always write allowlists as TOML arrays, even for a single entry: `allowed = [\"...\"]`","Avoid `[models.allowed]` table headers, which turn the key into a dict","Lint `config.toml` structure before deploying it"],"tags":["python","toml","type-error","config","allowlist"],"backgroundTag":"invalid-model-allowlist","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}