For the complete documentation index, see llms.txt. This page is also available as Markdown.

How an Agent Decides

Session 1.2 — classic vs. generative orchestration, the three control layers for agent autonomy, and why the GitHub Copilot harness skips the toggle entirely.

Group 1 · Session 1.2 of the Copilot Studio course. Full plan on the Mission page. Follows What's Copilot Studio?.

Session 1.1 sorted your agent into a harness. This session opens the box: what actually happens between a user's message and the agent's response — and who's allowed to decide what.

Two different decision-makers

The standard harness makes you choose, per agent, between two ways of deciding how to respond. It's a real toggle on the agent's Settings page, not a conceptual distinction — you'll flip it yourself in Session 2. The GitHub Copilot harness doesn't give you that toggle at all, and that absence is the more interesting fact, covered at the end of this lesson.

Classic orchestration: match and script

Classic is the older, fully scripted model. The agent compares the user's message against the trigger phrases you wrote for each topic, picks the closest match, and runs that topic's steps exactly as you built them: question nodes to ask for input, message nodes to reply. If nothing matches, it falls back to knowledge search, and if that fails too, it escalates. Nothing here is generated on the fly — you authored every sentence the agent can say.

Generative orchestration: plan and compose

Generative is the default for every newly created standard-harness agent. Instead of matching phrases, an LLM-driven planner reads the topic, tool, knowledge source, and connected-agent descriptions you wrote, decides which are relevant to the request, and can call several of them in one turn. Ask a Northwind agent "what's your return window, and can you check on order 4471" and it doesn't pick one topic — it runs the return-policy topic and the order-status tool in the same turn, then writes one combined reply itself.

Behavior
Generative orchestration
Classic orchestration

Picks a topic by

Matching its description to the request

Matching trigger phrases

Can combine sources

Yes — topics, tools, knowledge, other agents in one turn

No — one topic, knowledge only as fallback

Asks for missing info

Generates the question itself

You author a question node

Writes the reply

Generates it from whatever it gathered

You author a message node

The cost of that flexibility is that descriptions, not trigger phrases, are now the thing you're actually authoring. A vaguely named tool ("Flow1", description "does the thing") is invisible to the planner in exactly the way a topic with no trigger phrases was invisible under classic — just for a different reason. Session 2 is largely about writing descriptions well.

What's underneath the planner

Microsoft's own architecture guidance names five moving parts, and it's worth knowing them by name before you start building, since you'll be authoring four of them directly over the next several sessions.

Component
Role
You build this in

Orchestrator (planner)

Turns a message or event into an ordered plan of steps

Configured by your instructions, not hand-built

Knowledge layer

Read-only retrieval — documents, sites, databases

Group 3

Tools and connectors

Actions the agent can call, with defined inputs/outputs

Group 4

Topics and inline agents

Reusable conversation logic, invoked by description

Group 2

Event triggers

Start a plan without a user message at all

Group 5 — this is autonomy

Deciding how much the agent gets to decide

This is the part of the architecture that connects straight back to my own essay. Giving an agent generative orchestration doesn't mean giving it unlimited judgment — Microsoft's guidance is explicit that production agents split decisions across three layers, and picking the right layer per action is a design decision you make, not something the platform infers for you.

Deterministic layer — rule-based, scripted, no AI interpretation. For anything mission-critical or irreversible — processing a payment, deleting a record — you wrap it in a strictly authored flow the planner can't improvise around.

Put in my terms: this is Copilot Studio building in a gate between "the agent tried something" and "the agent is trusted to have tried it unsupervised." A library doesn't need this — a library can't do damage by being wrong out loud. The moment an agent can act, I inherit the same judgment call my essay makes about skill: repetition and failure are how competence gets proven, and you don't hand over the consequential decisions until it's been proven, watched, and bounded.

Hook points, if you need to intervene mid-plan

Three triggers exist specifically for generative orchestration, letting you step into the planner's process rather than just configuring it upfront:

Trigger
Fires
Typical use

OnKnowledgeRequested

Right before a knowledge search runs

Route the query to your own search index instead

AI Response Generated

After the draft reply is written, before it's sent

Fix formatting, swap in tracked links, redact something

On Plan Complete

After every step finished and the answer went out

Trigger a survey or an end-of-chat topic

And the GitHub Copilot harness just doesn't ask

Here's the fact worth sitting with from Session 1.1: on the standard harness, generative vs. classic is a setting you control. On the GitHub Copilot harness, there's no such setting. Microsoft's own documentation states it plainly — that harness "uses this enhanced orchestration model for all agents," full stop. You don't author topics or branching logic there at all; you describe the agent in natural language and the reasoning runtime figures out the plan every time, with a fixed lifecycle of Create → Build → Test (Preview and Evaluate tabs) → Publish → Monitor.

Worked example: same Northwind agent, one setting flipped

Picture the Northwind support agent with a return-policy topic, an order-status tool, and a live-agent-transfer tool.

Classic orchestration

A customer types "am I too late to return these boots" and it either matches your "Return Window" trigger phrases exactly, or it doesn't and falls back to knowledge, or it doesn't and asks the customer to rephrase.

Generative orchestration

The same message gets read for intent. If the customer then adds "also, where's my other order," the planner runs both the return topic and the order-status tool in one turn and writes a single reply covering both — something classic orchestration structurally cannot do without you hand-authoring that combination in advance.

Check your retrieval

Answer before you expand each one.

True or false: a brand-new standard-harness agent defaults to classic orchestration.

  • True

  • False — generative is the default for new agents

False — generative is the default for new agents

Under classic orchestration, what decides which topic runs?

  • The topic's description

  • Matching the user's words to trigger phrases

  • A vote among all available tools

Matching the user's words to trigger phrases

A user asks two things in one message. Which orchestration mode can act on both without you pre-scripting that exact combination?

  • Generative orchestration

  • Classic orchestration

  • Neither — always requires a dedicated top

Generative orchestration

True or false: you can switch an agent built on the GitHub Copilot harness to classic orchestration if you prefer more predictability.

  • True — it's the same Settings toggle as standard harness

  • False — that harness has no orchestration toggle at all

False — that harness has no orchestration toggle at all

Match to a control layer

For each Northwind Outfitters action, which control layer should own the decision? Now, let's explore three sample cases:

Action
Suggested Layer

"What's your return window for shoes?"

Al orchestrator layer

Issue a $640 refund to a customer's card

Hybrid (intercept) layer

Permanently delete a customer's account on request

Deterministic layer

Reflection

My essay says skill is proven through repetition, failure, and watching whether something holds up. Why might an agent still belong in the hybrid layer for a task even after months of getting it right every time — what would have to be true before you'd move it to the fully AI orchestrator layer?

ONE REASONABLE ANSWER Getting it right every time you've watched isn't the same guarantee as getting it right every time, full stop — the hybrid layer exists precisely because failure modes for high-consequence actions (a wrong refund, a wrongful deletion) are often rare and expensive rather than frequent and cheap, so a good track record doesn't retire the risk. Moving something to the fully Al orchestrator layer isn't really about the agent's skill improving further; it's about the cost of a rare failure dropping low enough — through smaller blast radius, reversibility, or a cap on the action's size — that unsupervised judgment becomes acceptable rather than about trusting the model more.

The natural next primary source, since you're about to start authoring descriptions in Session 2: Configure high-quality instructions for generative orchestration. It's the practical companion to the architecture covered here.

Sources

Last updated