Skip to content

Python: Workflow observability: not able to get the last executor's output from ExecutorCompletedEvent's data property #3080

@a1exwang

Description

@a1exwang

Language

Python

Type of Issue

Bug

Microsoft.Agents.AI

No response

Microsoft.Agents.AI.Abstractions

No response

Microsoft.Agents.AI.OpenAI

No response

Microsoft.Agents.AI.AzureAI

No response

Microsoft.Agents.AI.Anthropic

No response

Microsoft.Agents.AI.Hosting

No response

Microsoft.Agents.AI.Workflows

No response

Other .NET Packages

No response

agent-framework-core

No response

agent-framework-azure-ai

No response

agent-framework-anthropic

No response

agent-framework-azurefunctions

No response

Other Python Packages

No response

Description

Repro Steps:

  1. Run this sample code
  2. The terminal output doesn't contain [COMPLETED] reverse_text.

Expected behavior:

  1. The terminal output DOES contain [COMPLETED] reverse_text.

Background:
We are building a UI to visualize the workflow run and show its input and outputs via this mechanism (https://github.com/microsoft/agent-framework/blob/main/python/samples/getting_started/workflows/observability/executor_io_observation.py). But for the final executor, the output we get is empty.

Is it by design that the final executor (only calls yield_output but not send_message) ExecutorCompletedEvent doesn't contain valid data passed to yield_output? If so, how can I get its output programatically without knowing the structure of the workflow in general?

Finding the last executor running before the workflow finishes and use the workflow output to show as the final executor's output is one possible solution but it seems too tricky.

Code Sample

Additional Context

## pip freeze
agent-framework-azure-ai==1.0.0b251223
agent-framework-core==1.0.0b251223
aiohappyeyeballs==2.6.1
aiohttp==3.13.3
aiosignal==1.4.0
annotated-types==0.7.0
anyio==4.12.0
asgiref==3.11.0
attrs==25.4.0
azure-ai-agents==1.2.0b5
azure-ai-agentserver-agentframework==1.0.0b7
azure-ai-agentserver-core==1.0.0b7
azure-ai-projects==2.0.0b2
azure-core==1.37.0
azure-core-tracing-opentelemetry==1.0.0b12
azure-identity==1.26.0b1
azure-monitor-opentelemetry==1.8.3
azure-monitor-opentelemetry-exporter==1.0.0b46
azure-storage-blob==12.28.0b1
certifi==2026.1.4
cffi==2.0.0
charset-normalizer==3.4.4
click==8.3.1
colorama==0.4.6
cryptography==46.0.3
debugpy==1.8.8
distro==1.9.0
frozenlist==1.8.0
googleapis-common-protos==1.72.0
grpcio==1.76.0
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
httpx-sse==0.4.3
idna==3.11
importlib_metadata==8.7.1
isodate==0.7.2
jiter==0.12.0
jsonschema==4.25.1
jsonschema-specifications==2025.9.1
mcp==1.25.0
msal==1.34.0
msal-extensions==1.3.1
msrest==0.7.1
multidict==6.7.0
oauthlib==3.3.1
openai==2.14.0
opentelemetry-api==1.39.0
opentelemetry-exporter-otlp-proto-common==1.39.0
opentelemetry-exporter-otlp-proto-grpc==1.39.0
opentelemetry-exporter-otlp-proto-http==1.39.0
opentelemetry-instrumentation==0.60b0
opentelemetry-instrumentation-asgi==0.60b0
opentelemetry-instrumentation-dbapi==0.60b0
opentelemetry-instrumentation-django==0.60b0
opentelemetry-instrumentation-fastapi==0.60b0
opentelemetry-instrumentation-flask==0.60b0
opentelemetry-instrumentation-psycopg2==0.60b0
opentelemetry-instrumentation-requests==0.60b0
opentelemetry-instrumentation-urllib==0.60b0
opentelemetry-instrumentation-urllib3==0.60b0
opentelemetry-instrumentation-wsgi==0.60b0
opentelemetry-proto==1.39.0
opentelemetry-resource-detector-azure==0.1.5
opentelemetry-sdk==1.39.0
opentelemetry-semantic-conventions==0.60b0
opentelemetry-semantic-conventions-ai==0.4.13
opentelemetry-util-http==0.60b0
packaging==25.0
propcache==0.4.1
protobuf==6.33.2
psutil==7.2.1
pycparser==2.23
pydantic==2.12.5
pydantic-settings==2.12.0
pydantic_core==2.41.5
PyJWT==2.10.1
python-dotenv==1.2.1
python-multipart==0.0.21
pywin32==311
referencing==0.37.0
requests==2.32.5
requests-oauthlib==2.0.0
rpds-py==0.30.0
sniffio==1.3.1
sse-starlette==3.1.2
starlette==0.50.0
tqdm==4.67.1
typing-inspection==0.4.2
typing_extensions==4.15.0
urllib3==2.6.2
uvicorn==0.40.0
websockets==15.0.1
wrapt==1.17.3
yarl==1.22.0
zipp==3.23.0

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingobservabilityIssues related to observability or telemetrypythonworkflowsRelated to Workflows in agent-framework

Type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions