@@ -367,8 +367,8 @@ def _run_tasks(
367367
368368 # === Post-loop ===
369369
370- # Store media if enabled
371- if team . store_media and model_response is not None :
370+ # Always add media to run_response for caller availability
371+ if model_response is not None :
372372 store_media_util (run_response , model_response )
373373
374374 # Convert response to structured format
@@ -1136,9 +1136,8 @@ def _run(
11361136 team , run_response = run_response , session = session , run_context = run_context
11371137 )
11381138
1139- # 8. Store media if enabled
1140- if team .store_media :
1141- store_media_util (run_response , model_response )
1139+ # 8. Always add media to run_response for caller availability
1140+ store_media_util (run_response , model_response )
11421141
11431142 # 9. Convert response to structured format
11441143 _convert_response_to_structured_format (team , run_response = run_response , run_context = run_context )
@@ -2127,8 +2126,8 @@ async def _arun_tasks(
21272126
21282127 # === Post-loop ===
21292128
2130- # Store media if enabled
2131- if team . store_media and model_response is not None :
2129+ # Always add media to run_response for caller availability
2130+ if model_response is not None :
21322131 store_media_util (run_response , model_response )
21332132
21342133 # Convert response to structured format
@@ -2955,9 +2954,8 @@ async def _arun(
29552954 team , run_response = run_response , session = team_session , run_context = run_context
29562955 )
29572956
2958- # 8. Store media if enabled
2959- if team .store_media :
2960- store_media_util (run_response , model_response )
2957+ # 8. Always add media to run_response for caller availability
2958+ store_media_util (run_response , model_response )
29612959
29622960 # 9. Convert response to structured format
29632961 _convert_response_to_structured_format (team , run_response = run_response , run_context = run_context )
@@ -3885,11 +3883,24 @@ def _cleanup_and_store(
38853883 session : TeamSession ,
38863884 run_context : Optional [RunContext ] = None ,
38873885) -> None :
3888- # Scrub the stored run based on storage flags
38893886 from agno .team ._session import update_session_metrics
38903887
3888+ # Save output media before scrubbing so they remain available to the caller
3889+ saved_images = run_response .images
3890+ saved_videos = run_response .videos
3891+ saved_audio = run_response .audio
3892+ saved_files = run_response .files
3893+
3894+ # Scrub the stored run based on storage flags
38913895 scrub_run_output_for_storage (team , run_response )
38923896
3897+ # Also scrub output media artifacts when store_media is disabled
3898+ if not team .store_media :
3899+ run_response .images = None
3900+ run_response .videos = None
3901+ run_response .audio = None
3902+ run_response .files = None
3903+
38933904 # Stop the timer for the Run duration
38943905 if run_response .metrics :
38953906 run_response .metrics .stop_timer ()
@@ -3914,18 +3925,37 @@ def _cleanup_and_store(
39143925 # Save session to memory
39153926 team .save_session (session = session )
39163927
3928+ # Restore output media so the caller can access them
3929+ run_response .images = saved_images
3930+ run_response .videos = saved_videos
3931+ run_response .audio = saved_audio
3932+ run_response .files = saved_files
3933+
39173934
39183935async def _acleanup_and_store (
39193936 team : "Team" ,
39203937 run_response : TeamRunOutput ,
39213938 session : TeamSession ,
39223939 run_context : Optional [RunContext ] = None ,
39233940) -> None :
3924- # Scrub the stored run based on storage flags
39253941 from agno .team ._session import update_session_metrics
39263942
3943+ # Save output media before scrubbing so they remain available to the caller
3944+ saved_images = run_response .images
3945+ saved_videos = run_response .videos
3946+ saved_audio = run_response .audio
3947+ saved_files = run_response .files
3948+
3949+ # Scrub the stored run based on storage flags
39273950 scrub_run_output_for_storage (team , run_response )
39283951
3952+ # Also scrub output media artifacts when store_media is disabled
3953+ if not team .store_media :
3954+ run_response .images = None
3955+ run_response .videos = None
3956+ run_response .audio = None
3957+ run_response .files = None
3958+
39293959 # Stop the timer for the Run duration
39303960 if run_response .metrics :
39313961 run_response .metrics .stop_timer ()
@@ -3950,6 +3980,12 @@ async def _acleanup_and_store(
39503980 # Save session to memory
39513981 await team .asave_session (session = session )
39523982
3983+ # Restore output media so the caller can access them
3984+ run_response .images = saved_images
3985+ run_response .videos = saved_videos
3986+ run_response .audio = saved_audio
3987+ run_response .files = saved_files
3988+
39533989
39543990def scrub_run_output_for_storage (team : "Team" , run_response : TeamRunOutput ) -> bool :
39553991 """
@@ -4924,9 +4960,8 @@ def _continue_run(
49244960 # Convert to structured format
49254961 _convert_response_to_structured_format (team , run_response = run_response , run_context = run_context )
49264962
4927- # Store media
4928- if team .store_media :
4929- store_media_util (run_response , model_response )
4963+ # Always add media to run_response for caller availability
4964+ store_media_util (run_response , model_response )
49304965
49314966 # Execute post-hooks
49324967 if team .post_hooks is not None :
@@ -5577,8 +5612,7 @@ async def _acontinue_run(
55775612
55785613 _convert_response_to_structured_format (team , run_response = run_response , run_context = run_context )
55795614
5580- if team .store_media :
5581- store_media_util (run_response , model_response )
5615+ store_media_util (run_response , model_response )
55825616
55835617 elif member_results :
55845618 # Member-only: re-run team with results
0 commit comments