From 9b585a934d5c5f9c2f6e6add3231ef0fc161a24a Mon Sep 17 00:00:00 2001 From: Greyson LaLonde Date: Wed, 11 Feb 2026 09:30:07 -0500 Subject: [PATCH] fix: pass `started_event_id` to crew --- lib/crewai/src/crewai/crew.py | 14 ++++++++++++-- lib/crewai/src/crewai/crews/utils.py | 7 +++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/crewai/src/crewai/crew.py b/lib/crewai/src/crewai/crew.py index c69dae65a..94868b830 100644 --- a/lib/crewai/src/crewai/crew.py +++ b/lib/crewai/src/crewai/crew.py @@ -187,6 +187,7 @@ class Crew(FlowTrackable, BaseModel): _task_output_handler: TaskOutputStorageHandler = PrivateAttr( default_factory=TaskOutputStorageHandler ) + _kickoff_event_id: str | None = PrivateAttr(default=None) name: str | None = Field(default="crew") cache: bool = Field(default=True) @@ -759,7 +760,11 @@ class Crew(FlowTrackable, BaseModel): except Exception as e: crewai_event_bus.emit( self, - CrewKickoffFailedEvent(error=str(e), crew_name=self.name), + CrewKickoffFailedEvent( + error=str(e), + crew_name=self.name, + started_event_id=self._kickoff_event_id, + ), ) raise finally: @@ -949,7 +954,11 @@ class Crew(FlowTrackable, BaseModel): except Exception as e: crewai_event_bus.emit( self, - CrewKickoffFailedEvent(error=str(e), crew_name=self.name), + CrewKickoffFailedEvent( + error=str(e), + crew_name=self.name, + started_event_id=self._kickoff_event_id, + ), ) raise finally: @@ -1524,6 +1533,7 @@ class Crew(FlowTrackable, BaseModel): crew_name=self.name, output=final_task_output, total_tokens=self.token_usage.total_tokens, + started_event_id=self._kickoff_event_id, ), ) diff --git a/lib/crewai/src/crewai/crews/utils.py b/lib/crewai/src/crewai/crews/utils.py index 2ac8266cc..a432d2fc2 100644 --- a/lib/crewai/src/crewai/crews/utils.py +++ b/lib/crewai/src/crewai/crews/utils.py @@ -265,10 +265,9 @@ def prepare_kickoff( normalized = {} normalized = before_callback(normalized) - future = crewai_event_bus.emit( - crew, - CrewKickoffStartedEvent(crew_name=crew.name, inputs=normalized), - ) + started_event = CrewKickoffStartedEvent(crew_name=crew.name, inputs=normalized) + crew._kickoff_event_id = started_event.event_id + future = crewai_event_bus.emit(crew, started_event) if future is not None: try: future.result()