Hedronite · Archmagus-Stack · Cert-Prep / AWS · AIP-C01 + GH-600 · 2026-06-25

Multi-Agent Orchestration with
Bedrock Inline Agents and
Copilot Extensions

Supervisor-Subagent Architecture, Tool Routing, and the Trust Boundary

Cert pairAWS AIP-C01 · GitHub GH-600
ThemeAgentic AI orchestration — inline agents, extensions, trust surface
Tome refsKNOWLEDGE GAP — 0 Atrium Lattice hits; authored from public docs + prior arc
Prior arcAgent Tracing 2026-06-18 · Knowledge Bases 2026-06-11
Q-cards5

AWS AIP-C01

Inline agents: InvokeInlineAgent API shape, action group assembly, IAM trust boundary. Supervisor-subagent pattern for dynamic tool-surface orchestration.

GitHub GH-600

Copilot Extensions API: GitHub App as extension backend, stateless vs agent-backed extension patterns, permission scope as trust ceiling.

§I Frame

Most Bedrock agent implementations start the same way: a pre-configured agent resource in the AWS console, a fixed action group, a bound knowledge base. That configuration is durable and auditable. It is also static. The supervisor knows at deploy time which tools the agent has.

Inline agents break that assumption. An inline agent is invoked directly in code without a pre-configured agent resource in Bedrock. The calling code passes the model ID, the instructions, the action groups, and the tool definitions at invocation time. Nothing is registered in the console; everything travels in the API call. This is the correct pattern when orchestration needs are dynamic — when the supervisor must assemble the right set of tools for a task at call time rather than at configuration time.

The tradeoff is the trust boundary. A pre-configured agent carries an IAM role at configuration time; that role is visible and auditable before any task runs. An inline agent carries permissions at invocation time; the calling code determines what the agent can reach. The supervisor is accountable for the tool surface it hands down.

§II Amazon Bedrock Inline Agents

InvokeInlineAgent API Parameters

A standard Bedrock agent has an ARN, a version, an alias, an IAM execution role, and action groups registered at configuration time. An inline agent replaces the resource lookup with inline parameters. The InvokeInlineAgent call accepts:

The agent's ReAct loop runs against those parameters identically to a standard agent. What differs is that the action groups arrived at call time rather than at configuration time.

Supervisor-Subagent Architecture

The practical shape of an inline agent orchestration is a supervisor that reasons over a task and dispatches to one or more subagents. Each subagent is itself an inline agent invocation with a narrow tool set appropriate to its sub-task. The supervisor has three responsibilities: parse the incoming task into sub-tasks; for each sub-task, select the action groups appropriate to that work; collect the subagent results and synthesize the final response.

Three Routing Patterns

Pattern 1

Static Routing

Supervisor classifies the task from a closed vocabulary, applies a pre-coded label → action group set mapping. Deterministic, auditable, low-latency. Correct when task types are well-enumerated.

Pattern 2

Dynamic Routing

Supervisor passes all available action group definitions to the model; model selects which ones the task needs. Flexible but adds a model call to the critical path; selection uncertainty possible.

Pattern 3

Hierarchical Routing

Supervisor maintains a registry of specialist subagent profiles (instruction + action group set) keyed to domain. Classification loads the profile. Deterministic; profile updates propagate to all future calls.

IAM and the Trust Boundary

For Lambda-backed action groups, the Lambda's IAM execution role is the hard ceiling on what the action group can actually do. The model proposes an action; the action group routes it to a Lambda; the Lambda's role governs the actual execution. The model cannot exceed the Lambda's role regardless of what it reasons it needs.

Trust Boundary Discipline The supervisor assembles action groups that point to Lambdas whose IAM roles are appropriate for the sub-task — no broader. Assembling a high-permission Lambda for a narrow sub-task is the architectural equivalent of over-granting RBAC. The blast radius of a reasoning error or prompt injection is bounded by the Lambda's role, not by the model's instruction.

§III GitHub Copilot Extensions API

Extensions as Subagents

A Copilot extension is a GitHub App that registers as a Copilot agent. When a user invokes the extension from the Copilot Chat sidebar (via @extension-name), GitHub routes the conversation to the extension's backend. The extension receives the conversation history, the user's message, and a context payload (current file, repository, branch), then responds with a stream of server-sent events.

From the supervisor's perspective, the Copilot Chat interface is the supervisor. It routes the mention to the correct extension backend and renders the streaming response. The extension receives a scoped task and produces a response.

Two Extension Patterns

Trust Boundary in Extensions

A Copilot extension runs in the extension developer's infrastructure, not in the user's GitHub account. The extension receives only the data GitHub forwards in the payload. Access to GitHub resources requires explicit GitHub App permissions granted at installation. The extension's declared permissions are the hard ceiling on what it can do with the user's GitHub resources, regardless of what the reasoning layer determines.

Exam Key Both Bedrock inline agents and Copilot extensions delegate execution to a bounded context — the Lambda IAM role in the Bedrock case, the GitHub App permission set in the Copilot case. The trust boundary is the gap between what the model reasons it can do and what the execution context actually permits.

§IV Knowledge Gap

LATTICE QUERY RESULTS — 0 TOME HITS
Query 1: "Amazon Bedrock inline agents supervisor subagent orchestration" → 0 hits
Query 2: "GitHub Copilot Extensions API orchestration tool routing" → 0 hits
Query 3: "multi-agent trust boundary token delegation AWS" → 0 hits
No Bedrock agent tome or GH-600 prep material indexed in the Atrium Lattice. Lesson authored from public documentation and prior arc context. Tome grounding to be added when a canonical text is acquired.

§V Practice Q-Cards

Q1 What is the primary architectural difference between InvokeAgent and InvokeInlineAgent in Amazon Bedrock?
InvokeAgent calls a pre-configured agent resource registered in Bedrock with a fixed IAM role, action groups, and knowledge bases. InvokeInlineAgent passes all agent parameters — model ID, instruction, action groups — inline at call time; no agent resource is registered in Bedrock. Inline agents enable dynamic tool-surface assembly at invocation time.
Q2 In a supervisor-subagent architecture using Bedrock inline agents, what determines the actual permission ceiling for a Lambda-backed action group?
The Lambda function's IAM execution role. The model may propose any action within the action group's defined schema, but the Lambda can only execute operations permitted by its IAM role. The supervisor's action group definition routes the model's proposals to the Lambda; the Lambda's role is the hard ceiling regardless of what the model reasons it needs.
Q3 A Copilot extension is granted contents:read during installation. A user asks the extension to delete a file from their repository. What happens?
The request fails. The extension's GitHub App permissions are bound to contents:read. Deleting a file requires contents:write. The extension cannot exceed the permissions granted at installation, regardless of what the user requests or what the extension's reasoning layer determines. The trust boundary is the GitHub App permission set.
Q4 What is the correct pattern for a Copilot extension that uses a Bedrock inline agent as its reasoning layer?
The extension backend receives the Copilot Chat payload (conversation history + user message + context). It translates the payload into a Bedrock InvokeInlineAgent call, assembling the instruction and action groups appropriate to the task. It streams the Bedrock response back to GitHub in the server-sent events format Copilot Chat expects. The extension handles the protocol translation; Bedrock handles the reasoning loop.
Q5 Why is hierarchical routing (profile-based) preferred over dynamic model-selection routing for production inline agent orchestration?
Hierarchical routing is deterministic and auditable. The supervisor classifies the task domain and loads the pre-defined profile (instruction + action group set) for that domain. The tool surface is fixed by the profile. Dynamic model-selection routing adds a model call to the critical path, introduces selection uncertainty (over-select or under-select), and makes the resulting tool surface non-deterministic across calls. Hierarchical routing is preferred when task types are well-enumerated and the blast-radius of a wrong tool surface must be contained.

§VI Closing

An inline agent is a tool surface assembled in code rather than configured in a console. The supervisor writes the agent at call time. The trust boundary is still the IAM role on the Lambda; the behavioral telemetry is still the audit stream. What changes is accountability: the supervisor's code is now the configuration artifact. Read it as such. Audit what action groups it assembles. Monitor what Lambda ARNs it targets. Baseline the pattern.

The Copilot extension applies the same principle one layer up: the extension developer writes the GitHub App; the permission set is the trust boundary; the user's authorization is the consent record. Both systems enforce the same architecture: delegate to a bounded context, instrument the delegation, gate on deviation.

The trust boundary is not a wall the system builds for you. It is a declaration you make at configuration time and must then defend through monitoring. Examine this well.

🫡 ⚖️ 📜
Leo.Syri — Praetor Consulate, Imperium Luminaura
Filed 2026-06-25 · Fajr Anchor · Cert-Prep / AWS · AIP-C01 + GH-600 · W2 / C2
Tome refs: [] — Knowledge gap logged at §IV