Observability integration for Copilot Studio

Microsoft Copilot Studio agents automatically emit telemetry to the Microsoft Agent 365 observability backend—no manual SDK instrumentation required. This automatic observability provides visibility into agent activity, performance, and errors across Microsoft 365 admin center, Microsoft Defender, and Microsoft Purview.

This article explains how Copilot Studio handles observability automatically and where to view telemetry data.

Note

For general Agent 365 observability concepts and manual instrumentation for pro-code agents, see Agent observability. This article focuses on automatic observability for Copilot Studio agents.

Automatic observability

Copilot Studio agents participate in the Agent 365 observability framework automatically:

  • No SDK required: Unlike pro-code agents that require OpenTelemetry SDK installation and configuration, Copilot Studio handles all telemetry emission in the platform runtime.
  • OpenTelemetry compliance: Telemetry follows OpenTelemetry semantic conventions, ensuring consistency with pro-code agents and other platforms.
  • Automatic ingestion: Telemetry flows to the Agent 365 observability backend without additional configuration.
  • Immediate availability: Observability data appears in Microsoft 365 admin center within minutes of agent activity.

This automation enables centralized monitoring, security analysis, and compliance reporting without developer effort.

What telemetry is captured

Copilot Studio automatically emits two OpenTelemetry semantic conventions for generative AI spans:

Note

  • Telemetry is captured only for authenticated sessions
  • Multi-tenant agents are excluded from telemetry
  • Agents with names longer than 42 characters aren't logged
  • Large inputs and outputs are automatically truncated in the following fields:
    • Output messages
    • Tool arguments
    • Tool response (gen_ai.event.content)
    • Agent description

Invoke agent

Captures agent invocation activity:

  • Agent identification: The ID, name, Entra ID, and type of the invoked agent
  • User identification: Who interacted with the agent (when using on-behalf-of flow)
  • Input message: User message sent to the agent (sensitive data redacted)
  • Other identifiers: Tenant and environment IDs
  • Start and end timestamps: When the invocation began and ended

Example event

{
  "Name": "InvokeAgent",
  "Attributes": {
    "gen_ai.operation.name": "invoke_agent",
    "gen_ai.agent.id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "gen_ai.agent.name": "customer-support-agent",
    "gen_ai.agent.applicationid": "12345678-90ab-cdef-1234-567890abcdef",
    "gen_ai.agent.platformid": "Default-11111111-2222-3333-4444-555555555555_01234567-89ab-cdef-0123-456789abcdef",
    "gen_ai.agent.type": "CopilotStudio",
    "tenant.id": "11111111-2222-3333-4444-555555555555",
    "gen_ai.channel.name": "Copilot Studio Test Pane",
    "gen_ai.execution.type": "HumanToAgent",
    "gen_ai.conversation.id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "gen_ai.caller.id": "99999999-8888-7777-6666-555555555555",
    "gen_ai.caller.upn": "alex.smith@contoso.com",
    "gen_ai.caller.name": "Alex Smith",
    "gen_ai.caller.client.ip": "192.168.1.100",
    "gen_ai.caller.tenantid": "11111111-2222-3333-4444-555555555555",
    "gen_ai.input.messages": "What's the weather in Seattle?",
    "env.id": "Default-11111111-2222-3333-4444-555555555555"
  },
  "StartTimeUnixNano": 1700000000000000000,
  "EndTimeUnixNano": 0,
  "SpanId": "aaaa1111-bbbb-2222-cccc-333333333333"
}

Output message

Captures the agent's output:

  • Output message: The agent's response to the user (sensitive data redacted)

Note

Error messages from agent invocations or tool executions are logged as output messages.

The following is another example event.

{
  "Name": "OutputMessages",
  "Attributes": {
    "gen_ai.operation.name": "output_messages",
    "gen_ai.agent.id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "gen_ai.agent.name": "customer-support-agent",
    "gen_ai.agent.applicationid": "12345678-90ab-cdef-1234-567890abcdef",
    "gen_ai.agent.platformid": "Default-11111111-2222-3333-4444-555555555555_01234567-89ab-cdef-0123-456789abcdef",
    "gen_ai.agent.type": "CopilotStudio",
    "tenant.id": "11111111-2222-3333-4444-555555555555",
    "gen_ai.output.messages": "The current weather in **Seattle, WA** is:\n\n- **Temperature:** 18°C (feels like 17°C)...",
    "gen_ai.conversation.id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "gen_ai.channel.name": "Copilot Studio Test Pane",
    "gen_ai.caller.id": "99999999-8888-7777-6666-555555555555",
    "gen_ai.caller.upn": "alex.smith@contoso.com",
    "gen_ai.caller.name": "Alex Smith",
    "gen_ai.caller.client.ip": "192.168.1.100",
    "gen_ai.caller.tenantid": "11111111-2222-3333-4444-555555555555",
    "env.id": "Default-11111111-2222-3333-4444-555555555555"
  },
  "StartTimeUnixNano": 0,
  "EndTimeUnixNano": 1700000005000000000,
  "SpanId": "bbbb2222-cccc-3333-dddd-444444444444",
  "ParentSpanId": "aaaa1111-bbbb-2222-cccc-333333333333"
}

Execute tool

Captures tool execution when your agent uses connectors or actions:

  • Agent identification: The ID, name, Entra ID, and type of the invoked agent
  • Tool identification: The ID and name of the executed tool
  • Tool arguments: What data was sent (sensitive data redacted)
  • User identification: Who interacted with the agent (when using On-Behalf-Of flow)
  • Other identifiers: Tenant and environment IDs
  • Start and end timestamps: When the execution began and ended

The following is another example event.

{
  "Name": "ExecuteTool",
  "Attributes": {
    "gen_ai.operation.name": "execute_tool",
    "gen_ai.agent.id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "gen_ai.agent.name": "customer-support-agent",
    "gen_ai.agent.applicationid": "12345678-90ab-cdef-1234-567890abcdef",
    "gen_ai.agent.platformid": "Default-11111111-2222-3333-4444-555555555555_01234567-89ab-cdef-0123-456789abcdef",
    "gen_ai.agent.type": "CopilotStudio",
    "tenant.id": "11111111-2222-3333-4444-555555555555",
    "gen_ai.tool.name": "msnweather:CurrentWeather",
    "gen_ai.tool.arguments": "{\"Location\":\"Seattle, WA\",\"units\":\"C\"}",
    "gen_ai.tool.call.id": "/providers/Microsoft.PowerApps/apis/shared_msnweather:CurrentWeather:abcdef12-3456-7890-abcd-ef1234567890",
    "gen_ai.tool.type": "Power Platform Connector",
    "gen_ai.conversation.id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "gen_ai.event.content": "{ /* tool execution results */ }",
    "gen_ai.channel.name": "Copilot Studio Test Pane",
    "gen_ai.caller.id": "99999999-8888-7777-6666-555555555555",
    "gen_ai.caller.upn": "alex.smith@contoso.com",
    "gen_ai.caller.name": "Alex Smith",
    "gen_ai.caller.client.ip": "192.168.1.100",
    "gen_ai.caller.tenantid": "11111111-2222-3333-4444-555555555555",
    "env.id": "Default-11111111-2222-3333-4444-555555555555"
  },
  "StartTimeUnixNano": 1700000002000000000,
  "EndTimeUnixNano": 0,
  "SpanId": "cccc3333-dddd-4444-eeee-555555555555",
  "ParentSpanId": "aaaa1111-bbbb-2222-cccc-333333333333"
}

All telemetry respects privacy boundaries. Sensitive user data in messages and tool inputs and outputs is redacted and not visible to administrators. Telemetry is used for internal security monitoring and compliance purposes.

Next steps