Orchestrator displays 'explanation_of_tool_call' and 'new_instruction' to end-user

Miller, Rokas 0 Reputation points
2026-01-28T10:36:13.0666667+00:00

Problem Summary:

  • The agent includes technical fields such as explanation_of_tool_call and new_instruction in its responses.
  • This occurs despite explicit "Instructions" configured in the agent to never show JSON code or internal thought processes.
  • When attempting to bypass this by setting After running to "Send specific response (specify below)", the agent sends duplicate answers: first the specified variable, immediately followed by a secondary message from the orchestrator.
  • The issue appears to be related to how the orchestrator handles "Rationale" and decision logic when executing tools.

Questions:

Why is the orchestrator ignoring "negative instructions" regarding JSON and instead dumping internal fields like explanation_of_tool_call to the user?

How can I configure the agent to only return the content of a specific output variable (String) without the orchestrator adding its own generative follow-up or technical rationale?

Is this a known limitation of "Generative Orchestration," and is there a way to force the agent to strictly provide plain-text output only?

Microsoft Copilot | Microsoft 365 Copilot | Development

1 answer

Sort by: Most helpful
  1. Sayali-MSFT 6,396 Reputation points Microsoft External Staff Moderator
    2026-01-29T08:07:51.2+00:00

    Hello Miller, Rokas,
    The issues you’re encountering are due to Copilot Studio’s Generative Orchestrator, not your agent’s prompts or configuration. The JSON fields and duplicate responses are system-generated planning metadata produced outside the LLM, so your instructions (including “do not show JSON”) cannot suppress them. When using “Send specific response”, the orchestrator still appends its own natural-language summary, resulting in duplicate messages—a known, non-configurable limitation where orchestrator output can only be appended, not replaced. The only reliable ways to return a single clean response are to end the topic with a return value, bypass orchestration via Power Automate, disable generative reasoning for deterministic flows, or strip metadata in a backend step; prompt engineering and negative instructions will not work.

    Q1. Why is the orchestrator ignoring my instructions?

    Because the leaking fields were not produced by the LLM — they are generated by the Copilot Orchestrator, which your instructions do not control.

    Q2. How do I force the agent to output ONLY my variable?

    Use one of these:

    End the topic with “Return value” (best)

    Run a Power Automate flow and return its output

    Turn off generative orchestration for the topic

    Strip orchestrator metadata using a custom API

    Q3. Is this a known limitation?

    Yes. It is a documented internal limitation of Generative Orchestration — tool‑planning metadata may be surfaced when:

    Tool calls are executed

    Instructions conflict with orchestrator defaults

    Output is forced into deterministic mode

    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.