Copilot M365 chat history does not download correctly

Lucy Busija 0 Reputation points
2026-11-08T07:15:28.89+00:00

When I try to export my Copilot Chat history, conversations that were created in the former Copilot M365 don't export correctly. Only user queries are exported, but AI responses come out as blank rows - no data. Please advise how to solve the problem.

Microsoft Copilot | Microsoft 365 Copilot | Development
0 comments No comments

1 answer

Sort by: Most helpful
  1. AI answer

    2026-11-08T07:16:47.0666667+00:00

    There is no documented self-service fix or confirmed Microsoft known issue specifically for blank AI-response rows in legacy Microsoft 365 Copilot exports; ask your Microsoft 365 administrator to retrieve the conversations through the Copilot Activity Export API and escalate the defective CSV export if the API still returns blank or missing responses.

    Retrieve the responses through Microsoft Graph

    The API returns separate userPrompt and aiResponse interactions, including their body content, and supports Microsoft 365 Copilot Chat through the IPM.SkypeTeams.Message.Copilot.BizChat app class.^1^

    This requires:

    • A valid Microsoft 365 Copilot license with the Microsoft Copilot with Graph-grounded chat service plan.
    • An Entra app registration using application permission AiEnterpriseInteraction.Read.All.
    • Administrator consent. Delegated permissions are not supported.^2^

    Have an Entra administrator who is familiar with app-only Microsoft Graph authentication create the app, grant consent, and obtain an application access token. Then call:

    GET https://graph.microsoft.com/v1.0/copilot/users/{user-id}/interactionHistory/getAllEnterpriseInteractions
    Authorization: Bearer {application-access-token}
    

    To preserve all pages and isolate former Microsoft 365 Copilot Chat records, the administrator can run the following with the application token already obtained:

    $uri = "https://graph.microsoft.com/v1.0/copilot/users/$UserId/interactionHistory/getAllEnterpriseInteractions"
    $headers = @{ Authorization = "Bearer $AccessToken" }
    $all = @()
    
    while ($uri) {
        $page = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
        $all += $page.value
        $uri = $page.'@odata.nextLink'
    }
    
    $all | ConvertTo-Json -Depth 20 | Set-Content ".\copilot-interactions.json" -Encoding utf8
    $all | Where-Object appClass -eq "IPM.SkypeTeams.Message.Copilot.BizChat" |
        ConvertTo-Json -Depth 20 | Set-Content ".\copilot-bizchat.json" -Encoding utf8
    

    Following @odata.nextLink prevents older records on later pages from being missed. Filtering locally also avoids assuming that the endpoint supports the date or compound filter needed for the affected legacy period.

    Interpret the result

    Match each prompt and response using fields such as sessionId and requestId, then inspect:

    • interactionType: userPrompt or aiResponse
    • appClass: expected to be IPM.SkypeTeams.Message.Copilot.BizChat
    • createdDateTime
    • body.content

    The outcome determines the next action:

    • The API contains populated aiResponse records: Preserve the JSON as an alternate export or transform it into CSV. Open a Microsoft support case because the standard CSV exporter is omitting data that exists in interaction history.
    • The API contains aiResponse records with empty body.content: Include those records in the support case; this is not a CSV parsing problem.
    • Only prompts are returned: The API only returns interactions written to the Microsoft 365 interaction-history service. Experiences that did not save data there are never returned, so there is no documented client-side method to reconstruct those responses.^3^
    • The request returns a licensing or authorization error: Verify the affected user’s qualifying service plan and the app’s AiEnterpriseInteraction.Read.All application permission and admin consent.^2^

    Escalate with useful evidence

    An administrator should submit a support case through Microsoft 365 admin center → Help & Support.^4^

    Attach:

    1. The original CSV showing populated prompts and blank response rows.
    2. A redacted JSON sample containing the corresponding sessionId, requestId, interactionType, appClass, createdDateTime, and body.
    3. The approximate conversation dates and whether they predate the Copilot experience change.
    4. Whether the conversations remain readable under Copilot Chat → Chats.
    5. The API outcome: response present, response blank, or response absent.

    Do not post access tokens, tenant identifiers, user identifiers, or conversation content publicly.

    If this was exported from a personal Microsoft account, the enterprise API does not apply. Personal-account activity is exported through Privacy → Empower your productivity → Copilot → Your Copilot app activity history, and the personal privacy-dashboard procedure is separate from work or school accounts.^5^


    References

    1. Microsoft Copilot interactions & Microsoft 365 Chat
    2. aiInteractionHistory: getAllEnterpriseInteractions (graph-v1)
    3. aiInteractionHistory resource type (graph-v1)
    4. Professional Direct for Microsoft 365
    5. Manage your Copilot activity history in the privacy dashboard | Microsoft Support
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.