{"record":{"id":"ad82d9eebd8f22b8","repo":"langchain-ai/langgraph","slug":"refused-to-deserialize-json-constructor-dotted-ad82d9","errorCode":null,"errorMessage":"Refused to deserialize JSON constructor: {dotted}. Symbol is not in the deserialization allowlist.\n\nAdd exactly this symbol to unblock:\n  JsonPlusSerializer(allowed_json_modules=[{needed!r}, ...])\nOr, as a last resort (DANGEROUS):\n  JsonPlusSerializer(allowed_json_modules=True)","messagePattern":"Refused to deserialize JSON constructor: (.+?)\\. Symbol is not in the deserialization allowlist\\.\n\nAdd exactly this symbol to unblock:\n  JsonPlusSerializer\\(allowed_json_modules=\\[(.+?), \\.\\.\\.\\]\\)\nOr, as a last resort \\(DANGEROUS\\):\n  JsonPlusSerializer\\(allowed_json_modules=True\\)","errorType":"exception","errorClass":"InvalidModuleError","httpStatus":null,"severity":"error","filePath":"libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py","lineNumber":249,"sourceCode":"            return\n\n        if not self._allowed_json_modules:\n            raise InvalidModuleError(\n                f\"Refused to deserialize JSON constructor: {dotted}. \"\n                \"No allowed_json_modules configured.\\n\\n\"\n                \"Unblock with ONE of:\\n\"\n                f\"  • JsonPlusSerializer(allowed_json_modules=[{needed!r}, ...])\\n\"\n                \"  • (DANGEROUS) JsonPlusSerializer(allowed_json_modules=True)\\n\\n\"\n                \"Note: Prefix allowlists are intentionally unsupported; prefer exact symbols \"\n                \"or plain-JSON representations revived without import-time side effects.\"\n            )\n\n        if self._allowed_json_modules is True:\n            return\n        if needed in self._allowed_json_modules:\n            return\n\n        raise InvalidModuleError(\n            f\"Refused to deserialize JSON constructor: {dotted}. \"\n            \"Symbol is not in the deserialization allowlist.\\n\\n\"\n            \"Add exactly this symbol to unblock:\\n\"\n            f\"  JsonPlusSerializer(allowed_json_modules=[{needed!r}, ...])\\n\"\n            \"Or, as a last resort (DANGEROUS):\\n\"\n            \"  JsonPlusSerializer(allowed_json_modules=True)\"\n        )\n\n    def dumps_typed(self, obj: Any) -> tuple[str, bytes]:\n        if obj is None:\n            return \"null\", EMPTY_BYTES\n        elif isinstance(obj, bytes):\n            return \"bytes\", obj\n        elif isinstance(obj, bytearray):\n            return \"bytearray\", obj\n        else:\n            try:\n                return \"msgpack\", _msgpack_enc(obj)","sourceCodeStart":231,"sourceCodeEnd":267,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py#L231-L267","documentation":"Error \"Refused to deserialize JSON constructor: {dotted}. Symbol is not in the deserialization allowlist.\n\nAdd exactly this symbol to unblock:\n  JsonPlusSerializer(allowed_json_modules=[{needed!r}, ...])\nOr, as a last resort (DANGEROUS):\n  JsonPlusSerializer(allowed_json_modules=True)\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py:249 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"}