From 7d9faa7cbf5061e886e79cecb6616af732535b81 Mon Sep 17 00:00:00 2001 From: Greyson LaLonde Date: Sun, 8 Mar 2026 14:43:06 -0400 Subject: [PATCH] fix: ensure callables are serialized properly --- lib/crewai/src/crewai/types/callable.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/crewai/src/crewai/types/callable.py b/lib/crewai/src/crewai/types/callable.py index bee29119a..f120ad21a 100644 --- a/lib/crewai/src/crewai/types/callable.py +++ b/lib/crewai/src/crewai/types/callable.py @@ -7,7 +7,7 @@ decoded and unpickled back into a live callable. Deserialization is **opt-in** to prevent arbitrary code execution from untrusted payloads. Callers must use :data:`allow_pickle_deserialization` to enable it:: - with allow_pickle_deserialization:q + with allow_pickle_deserialization: task = Task.model_validate_json(untrusted_json) ``cloudpickle`` is an optional dependency. Serialization and deserialization @@ -86,6 +86,6 @@ def _serialize_callable(v: Callable[..., Any]) -> str: SerializableCallable = Annotated[ Callable[..., Any], BeforeValidator(_deserialize_callable), - PlainSerializer(_serialize_callable, return_type=str), + PlainSerializer(_serialize_callable, return_type=str, when_used="json"), WithJsonSchema({"type": "string"}), ]