Distinguishing internal vs final streamed chunks in Supervisor multi-agent architecture

I’m working with a multi-agent setup using the Supervisor Architecture in LangGraph.

In this setup:

  • A supervisor agent orchestrates the workflow

  • It delegates tasks to child agents

  • Multiple internal messages are exchanged between agents before producing a final answer

Problem

When using streaming, I receive a sequence of chunks, but I currently have no clear way to distinguish between:

  1. Internal reasoning / intermediate agent communication

  2. Final user-facing response generated by the supervisor

This makes it difficult to:

  • Properly render only the final response in the UI

  • Avoid exposing internal agent reasoning/messages

  • Build a clean streaming UX for end users


Expected Behavior

It would be helpful to have a built-in or recommended way to:

  • Tag or identify chunks as:

    • internal (agent-to-agent communication)

    • final (user-facing output)

  • Or otherwise distinguish:

    • Supervisor final response vs intermediate agent outputs

Questions

  • Is there a recommended pattern to differentiate these chunks when streaming?

  • Are there metadata fields, message types, or callbacks that can be used for this?

  • Is this something planned for native support in LangGraph?