web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Copilot Studio / Copilot Studio: Passin...
Copilot Studio
Suggested Answer

Copilot Studio: Passing large tool gets truncated or summarized

(0) ShareShare
ReportReport
Posted on by

Hi everyone,


I’m building a Copilot Studio agent to automate the generation of release notes from Azure DevOps work items, using a custom prompt to rewrite the notes into a non tech, easily readable content.

 

The intended flow is:


  1. The user asks for release notes for a given project and release/version.

  2. The agent extracts the project and release information.

  3. A Power Automate tool retrieves Azure DevOps work items for that release.

  4. The work items are normalized and returned to Copilot Studio.

  5. A custom prompt/tool transforms the work items into a structured JSON for release notes, manipulating the content.

  6. Another Power Automate flow uses that JSON to populate a Word template and generate a .docx file.


  7.  

I’m using tools/flows and custom prompts in Copilot Studio. 

 

What I have tried

I started with a tool that retrieves Azure DevOps work items using WIQL and workitemsbatch.

The retrieved work items include fields such as:


  • Work item ID
  • Work item type
  • State
  • Title
  • Description
  • Repro steps for bugs

  •  

The flow works correctly when tested in Power Automate. I can retrieve and normalize the work item data.

I then tried to pass the normalized work item JSON to a custom prompt in Copilot Studio. The custom prompt is supposed to produce a structured JSON.

The output JSON is then used by another flow to populate a Word template.

Issue I’m seeing

When the work item payload is small, the process works.

However, when the payload becomes larger, Copilot Studio appears to summarize or truncate the output from the previous tool before passing it to the next custom prompt/tool.

Instead of receiving the actual JSON payload, the next step gets something like:

[truncated workitemjson from RetrieveADOWorkItem ]

workitemjson retrieved from RetrieveADOWorkItem

This causes the custom prompt to generate an incomplete release notes JSON, often containing only the first feature or the first hotfix.

I also tried saving the JSON to a file and reading it later, but It's unclear what the recommended pattern is when the custom prompt needs to process structured JSON content rather than a PDF/image/document input.

 

Additional observations


  • The issue seems to happen between Copilot Studio tool outputs and the next custom prompt/tool input.

  • The Power Automate flow itself can retrieve the full data correctly.

  • The Word generation step works if the JSON passed to it is complete.

  • The problem is mainly the reliable transfer of a large structured payload between agent tools/custom prompts.

  • Using topics and variables may help, but it needs a lot of rework to understand user's utterance, define project, iteration path and so on, and still it's unclear what it may happens with large payloads.


  •  

Questions

  1. Is there a documented payload size limit for passing tool outputs to another tool or custom prompt in Copilot Studio?

  2. When a Power Automate tool returns a large JSON string, can Copilot Studio automatically summarize or truncate it before the next tool/custom prompt receives it?

  3. What is the recommended architecture for processing large structured payloads in Copilot Studio?

  4. If the payload is too large, is the recommended approach to:

     

    • store the JSON externally, for example in OneDrive, SharePoint, Dataverse, or Blob Storage;

    • pass only a file path or identifier between tools;

    • and have the next flow read the full content directly? 

    •  

  5. For this kind of scenario, would Microsoft recommend:

     

    • a topic-based orchestration with variables;

    • separate tools with persisted state;

    • or a single backend/API that performs retrieval, transformation, and document generation?


    •  

  6. Are there best practices for splitting/chunking large work item payloads before sending them to a custom prompt?


  7. Is there a way to prevent Copilot Studio from replacing a large tool output with a summarized placeholder when that value is intended to be passed to another tool?



  8.  
 

Any guidance or recommended design pattern would be appreciated.

 

Thanks!

I have the same question (0)
  • Suggested answer
    Sayali-MSFT Profile Picture
    Microsoft Employee on at
    Hello  ,

    This looks like an expected design/architecture limitation rather than an Azure DevOps or Word template issue. Copilot Studio is not a reliable pass-through layer for large structured payloads between tools, prompts, and flows. Microsoft documents a 5 MB connector payload limit for Copilot Studio in public cloud, and notes that generative AI features and prompts are subject to usage limits/capacity throttling. Also, custom prompts are intended to use provided inputs as prompt context, not to act as a guaranteed large JSON processing pipeline. 

    For this scenario, the recommended pattern would be to avoid passing the full work item JSON through the agent conversation/tool chain. Instead:

    1.       Let the first Power Automate flow retrieve and normalize the Azure DevOps work items.
    2.       Store the full JSON externally, for example in SharePoint, OneDrive, Dataverse, or Blob Storage.
    3.       Return only a small identifier, file path, or record ID back to Copilot Studio.
    4.       Have the next flow read the full JSON directly from that external store.
    5.       Run the transformation and Word document generation in Power Automate or a backend/API where the full payload is preserved.

      If AI rewriting is required, chunk the work items before sending them to the custom prompt. For example, process features, bugs, and hotfixes separately, generate smaller summaries per chunk, and then merge the final release notes JSON in Power Automate or a backend service. This avoids relying on Copilot Studio to carry a large payload across multiple prompt/tool calls.

    For a production-grade release notes generator, I would recommend either:
     

    •   single backend/API or Power Automate orchestration for retrieval, transformation, persistence, and document generation; or
    •   separate tools with persisted state, where Copilot Studio only orchestrates the user interaction and passes lightweight IDs between steps.

    I would not recommend passing the full Azure DevOps JSON from one Copilot Studio tool to another custom prompt as the main architecture, because large outputs can be reduced, summarized, or fail depending on context/payload limits and generative AI processing behavior. Using persisted state plus IDs is the safer and more scalable design.

    Reference Document-
    1.Quotas and limits - Microsoft Copilot Studio | Microsoft Learn
    2.Create a prompt - Microsoft Copilot Studio | Microsoft Learn
    3.Use your prompt actions in Microsoft Copilot Studio | Microsoft Learn

  • Suggested answer
    Beyond The Platforms Profile Picture
    260 on at
    Hi,
     
    Based on the behavior described, this appears to be a limitation of how Copilot Studio generative orchestration handles large tool outputs rather than an issue with Azure DevOps or Power Automate itself.
     
    What is happening?
     
    Your Power Automate flow successfully retrieves the Azure DevOps work items and returns the complete JSON payload. However, when the payload becomes large, Copilot Studio appears to summarize or replace parts of the tool output before passing it to the next prompt or tool.
     
    The placeholder you are seeing:
     
    ```text
    [truncated workitemjson from RetrieveADOWorkItem]
    ```
     
    strongly suggests that the orchestration layer is reducing the payload to fit within the model's available context window rather than passing the raw JSON unchanged.
     
    Is there a documented size limit?
     
    Microsoft documents a **5 MB connector payload limit**, but this should not be interpreted as a guarantee that a 5 MB response can be passed unchanged between tools within a generative orchestration flow. The connector payload limit and the LLM context limit are two different constraints. The orchestration engine may still summarize, truncate, or compress tool outputs when they become too large for the model context. 
    Source:
    - Copilot Studio Quotas and Limits
    - Prompt Performance and Execution Guidance
     
    Can Copilot Studio automatically summarize tool outputs?
     
    Based on the documented behavior of generative orchestration, yes.
     
    Generative orchestration uses an LLM-based planner that selects tools, manages data flow between them, and builds execution plans dynamically. Large outputs can be condensed before being used by subsequent prompts or tools in order to remain within model limits.
     
    Unfortunately, there is currently no documented setting that forces Copilot Studio to always pass the complete raw tool output to downstream tools.
     
    Recommended architecture
     
    For scenarios involving large structured payloads such as Azure DevOps work items, release-note generation, audit reports, or document creation, the recommended pattern is:
     
    ```text
    Flow 1
    Retrieve Azure DevOps Work Items
            ↓
    Persist full JSON
    (SharePoint / Dataverse / Blob Storage)
            ↓
    Return only:
    - Document ID
    - File URL
    - Reference Key
            ↓
    Custom Prompt / Next Tool
            ↓
    Read full content using the reference
            ↓
    Generate Release Notes
            ↓
    Generate DOCX
    ```
     
    This approach keeps the large payload out of the agent context while preserving access to the complete dataset.
     
    Recommended pattern vs. anti-pattern
     
    ✅ Recommended
     
    ```text
    Tool A
        ↓
    Store full JSON externally
        ↓
    Pass ID/Reference
        ↓
    Tool B reads original data
    ```
     
    ❌ Not recommended
     
    ```text
    Tool A
        ↓
    Large JSON payload
        ↓
    Prompt
        ↓
    Tool B
    ```
     
    I believe you are encountering an expected limitation of the generative orchestration runtime rather than a bug.

    If preserving the complete Azure DevOps payload is critical, I would recommend persisting the work items externally (SharePoint, Dataverse, Blob Storage, SQL, etc.) and passing only lightweight identifiers between tools. This is the most reliable pattern and avoids context-window limitations, truncation, and unexpected summarization of structured JSON data.
     
    Hope this helps!
    Paolo


    Did this solve your issue? → Accept as Solution
    👍 Partially helpful? → Click "Yes" on "Was this reply helpful?" or drop a Like!


    Want more tips on Power Platform & AI? Follow me here:

    🔗 LinkedIn: https://www.linkedin.com/in/paoloasnaghi/
    ▶️ YouTube: https://www.youtube.com/@BeyondThePlatforms
    📸 Instagram: https://www.instagram.com/beyond_the_platforms/
    🌐 Website: https://www.beyondtheplatforms.com/


     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the June Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Copilot Studio

#1
sannavajjala87 Profile Picture

sannavajjala87 202 Super User 2026 Season 1

#2
11manish Profile Picture

11manish 196

#3
Valantis Profile Picture

Valantis 154

Last 30 days Overall leaderboard