As part of the uipath-langchain integration, UiPath ships interrupt models (CreateTask, InvokeProcess, WaitJob) that users place inside interrupt(...) (see samples/ticket-classification/main.py:116). These end up in the checkpoint, so users see Deserializing unregistered type …CreateTask warnings on every --resume.
In our runtime we own checkpointer construction, so we built an opt-in: read checkpointer.serde.allowed_msgpack_modules from langgraph.json and apply it programmatically. PR: fix: honor checkpointer.serde.allowed_msgpack_modules in langgraph.json (#1500) by radu-mocanu · Pull Request #814 · UiPath/uipath-langchain-python · GitHub.
Even programmatically, passing allowed_msgpack_modules=[...] flips the serializer to strict mode, so anything not in the list degrades to dict. There’s no way for a framework integrator to register a few first-party types without changing what happens to user types. A way to additively register types without enabling strict mode for the user would close this.
Currently allowed_msgpack_modules is declared in the serde config schema, but setting it in langgraph.json has no effect in the dev runtime → only allowed_json_modules is wired through. We confirmed empirically: a langgraph.json with an obviously invalid allowed_msgpack_modules value starts cleanly with no validation error.
If this is an acceptable solution, I can send a PR that wires allowed_msgpack_modules from langgraph.json through to the serializer (parallel to allowed_json_modules) which adds a way to additively register types without enabling strict mode for the user.
UiPath-Langchain integration docs for reference: Getting Started - UiPath SDK