- Responsibility boundaries in multi-agent systems
- Map multi-agent responsibilities to SDLC stages
- Define scope boundaries
- What orchestration means
- Common orchestration triggers
- Sequential orchestration
- Parallel orchestration
- Fan-out/fan-in orchestration
- Artifact-based coordination
- Execution isolation
- Concurrency controls
- Agent invocation modes and parallelism
- Conflict types
- Merge validation checks
- CODEOWNERS as arbitration
- Escalation thresholds
- Observability in multi-agent systems
- Attribution and naming conventions
- PR structure for decisions and handoffs
- Reliable operation at scale
- Configuration effects on orchestration
- Handoffs between agents
- Exam checklist
A multi-agent system only works well when each agent has a clear role. Without defined responsibilities, agents overlap, duplicate work, create conflicting pull requests, and make ownership unclear.
This fourth post covers multi-agent responsibilities, orchestration patterns, isolation, conflict resolution, observability, and failure recovery.
Responsibility boundaries in multi-agent systems
Multi-agent failures are often predictable. When responsibilities overlap, the system produces duplicated work, conflicting changes, and unclear review routing.
A strong design prevents these outcomes by:
- assigning each agent a narrow role,
- limiting scope by path and artifact type,
- defining completion signals,
- validating outcomes through checks and reviews.
The safest boundary remains: agents propose; humans and policy accept.
Map multi-agent responsibilities to SDLC stages
| SDLC stage | Multi-agent responsibility | GitHub artifact that makes it reviewable |
|---|---|---|
| Planning | Define goal, scope, success criteria, risks | PR plan section or PLAN.md |
| Implementation | Make changes in an isolated branch | Branch, commits, PR |
| Validation | Produce evidence and results | Actions runs, checks, artifacts |
| Acceptance | Apply policy and human judgment | CODEOWNERS, reviews, required checks |
| Deployment | Gate high-risk execution | Environments and approvals |
For example, a dependency agent may update package manifests and lockfiles, while a refactoring agent modifies src/. This prevents overlap and reduces conflict.
Define scope boundaries
A stable starting point is to define what each agent is allowed to change.
| Agent type | Allowed scope | Avoid |
|---|---|---|
| Dependency agent | Dependency manifests and lockfiles | Broad app refactors unless required |
| Refactoring agent | Application code under src/ |
Dependency manifests, lockfiles, workflows |
| Security validation agent | Reports, scan summaries, validation evidence | Unbounded refactoring unless explicitly tasked |
| Documentation agent | docs/, markdown, generated summaries |
Production code and deployment workflows |
If multiple agents act as general developers across the entire repository, including workflows and infrastructure, collisions become likely and risk increases.
What orchestration means
Orchestration defines how multiple agents coordinate work in a shared environment. It determines:
- when agents run,
- how tasks are sequenced,
- how outputs are passed between jobs,
- how conflicts are detected,
- how completion is validated.
In GitHub, orchestration works best when expressed through workflows, pull requests, checks, logs, and artifacts. Hidden coordination is difficult to diagnose.
Common orchestration triggers
Typical triggers include:
- schedules for reporting, dependency checks, or hygiene tasks,
- pull request events for validation and iteration,
- workflow completion events when one step depends on another,
- manual
workflow_dispatchtriggers for controlled execution.
Sequential orchestration
Some work must happen in a strict sequence.
Example sequence:
- Dependency agent opens a PR.
- CI validates correctness.
- Security validation runs after CI completes.
- Human reviewer approves.
- Merge happens only after gates are satisfied.
# File: .github/workflows/security-validate.yml
name: Security Validation
on:
workflow_run:
workflows: [CI Validation]
types: [completed]
permissions:
contents: read
security-events: write
jobs:
validate:
runs-on: ubuntu-latest
steps:
- run: echo "Run security validation here."
Use sequential orchestration when downstream work depends on upstream results.
Parallel orchestration
Parallel orchestration is appropriate when scope boundaries prevent overlap.
A documentation agent and a refactoring agent can work at the same time if they operate in separate paths. Their outputs still converge through PR checks and reviews.
The core requirement is isolation. If agents can collide on the same files, parallelism increases instability instead of throughput.
Fan-out/fan-in orchestration
Fan-out/fan-in is useful when multiple agents perform independent analysis and a later job merges their outputs.
name: multi-agent-orchestration
on:
workflow_dispatch:
permissions:
contents: read
jobs:
spec_analyzer:
runs-on: ubuntu-latest
steps:
- name: Run spec analyzer
run: ./executors/spec_analyzer.sh
risk_reviewer:
runs-on: ubuntu-latest
steps:
- name: Run risk reviewer
run: ./executors/risk_reviewer.sh
plan_merger:
runs-on: ubuntu-latest
needs: [spec_analyzer, risk_reviewer]
concurrency:
group: multiagent-$
cancel-in-progress: true
steps:
- name: Merge analysis and risk outputs
run: ./executors/plan_merger.sh
- name: Publish merged plan
run: echo "publish plan artifact"
The plan_merger job waits for both upstream jobs. The concurrency group prevents overlapping merge jobs on the same branch.
Artifact-based coordination
Direct agent-to-agent communication is often less reliable than shared, reviewable artifacts.
A robust pattern is:
- Run an agent with restricted permissions.
- Produce structured output such as a plan, report, or proposal.
- Upload the output as an artifact.
- Use a controlled step to apply only allowed operations.
# File: .github/workflows/daily-repo-report.yml
name: Daily Repo Status Report
on:
schedule:
- cron: "0 2 * * *"
permissions:
contents: read
issues: write
pull-requests: read
jobs:
report:
runs-on: ubuntu-latest
steps:
- name: Generate report
run: |
echo '{ "summary": "Daily status", "links": [] }' > report.json
- name: Upload report artifact
uses: actions/upload-artifact@v4
with:
name: repo-status-report
path: report.json
- name: Create issue from controlled output
run: echo "Create issue from report.json"
This separates reasoning from writing and leaves evidence for reviewers.
Execution isolation
Execution isolation separates agent activity so agents do not interfere with each other.
Isolation applies to:
- branches,
- workflows,
- permissions,
- concurrency,
- artifacts,
- review routing.
Branch isolation
Use dedicated branch names for each agent task:
agent/dependency/<ticket>
agent/refactor/<ticket>
agent/security/<ticket>
This keeps changes bounded and makes intent visible.
Workflow isolation
Give each agent a dedicated workflow or a dedicated job with distinct permissions. This makes triggers, outputs, and permissions easier to reason about.
Permission isolation
Reduce workflow permissions to the minimum needed.
permissions:
contents: read
pull-requests: write
Grant write permissions only where the workflow truly needs them.
Concurrency controls
When a pull request is updated frequently, workflow runs can overlap. Concurrency controls cancel outdated runs and reduce noise.
concurrency:
group: $-$
cancel-in-progress: true
Include github.workflow in the group. Using only github.ref can make concurrency global to the branch and block unrelated workflows.
Job-level concurrency only applies within or around workflow jobs. Matrix strategy controls intra-run parallelism, not parallelism across triggers or agent sessions.
Agent invocation modes and parallelism
Not all invocation modes support parallel tasks.
| Agent mode | Parallel sessions across multiple tasks? |
|---|---|
| Copilot Cloud | Yes |
| Copilot CLI | Yes |
| Local | No, usually serial only |
Design orchestration around the actual execution mode.
Conflict types
Even with isolation, conflicts happen.
Common conflict types include:
| Conflict type | Example |
|---|---|
| Textual merge conflict | Same files or lines changed |
| Semantic conflict | Clean merge, broken combined behavior |
| Policy conflict | Different approval requirements for sensitive paths |
| Duplicate effort | Two PRs solve the same problem differently |
A stable system detects conflicts early and resolves them through explicit rules.
Merge validation checks
GitHub PRs show merge conflicts, but a merge validation check can fail fast.
- name: Validate merge with main
run: |
git fetch origin main
git merge --no-commit origin/main
If this check is required, conflicts become enforceable and do not depend only on reviewers noticing them manually.
CODEOWNERS as arbitration
CODEOWNERS routes review based on file paths, which is essential for arbitration.
# File: CODEOWNERS
/security/ @security-team
/.github/workflows/ @platform-team
/infra/ @platform-team
* @core-team
This gives sensitive areas clear ownership.
Escalation thresholds
Automation should stop before repeated failures create instability.
Escalate when:
- a PR conflicts twice after rebase attempts,
- the same required check fails twice with the same failure signature,
- two agents propose incompatible fixes to the same alert,
- required evidence is missing after repeated runs.
Escalation should include what conflicted, what was attempted, and which options remain.
Observability in multi-agent systems
Observability means every meaningful action can be inspected, explained, and validated after the fact.
GitHub-native observability includes:
- pull requests,
- commits,
- workflow runs,
- logs,
- artifacts,
- checks,
- review outcomes.
As the number of agents grows, traceability becomes a primary requirement. Reviewers need to understand which agent produced a change, what decision was made, what evidence supports it, and what happened next.
Attribution and naming conventions
Use consistent attribution:
PR title: [agent: dependency] Update <package> to <version>
Labels: agent: dependency, agent: security, agent: refactor
PR body sections: Plan, Evidence, Risks, Rollback/Escalation
Upload structured reports as artifacts:
- name: Upload agent report
uses: actions/upload-artifact@v4
with:
name: agent-report
path: report.json
If artifacts are unexpectedly missing, organization audit logs can help identify deletion events such as artifact.destroy, depending on audit log availability.
PR structure for decisions and handoffs
A consistent PR structure helps reviewers understand state and ownership.
## Objective
What problem is being solved?
## Plan
1.
2.
3.
## Evidence
- CI run:
- Scan outputs:
- Relevant issue or alert:
## Decisions and handoffs
- Decision:
- Rationale:
- Next owner, if escalation is needed:
## Risks and rollback
-
This keeps decisions, evidence, and handoffs visible.
Reliable operation at scale
Multi-agent failures are often coordination failures.
Common failure modes include:
- partial execution: PR exists, but evidence or validation is missing,
- stalled workflows: checks fail repeatedly or approvals never arrive,
- conflicting outputs: PRs compete and block each other,
- flapping: workflows rerun repeatedly without convergence.
Diagnose failures with GitHub-native evidence:
- PR timelines,
- required check results,
- workflow run history,
- artifacts,
- logs.
Apply bounded retries, rollback readiness, and escalation.
Configuration effects on orchestration
Agent configuration can affect orchestration.
| Setting | Effect |
|---|---|
disable-model-invocation: true |
Agent cannot be invoked as a subagent through orchestration |
user-invocable: false |
Agent is not directly selectable by users in chat or UI |
If a parent agent tries to invoke a subagent that has model invocation disabled, orchestration can fail.
Handoffs between agents
A parent agent can define allowed subagents and handoffs.
# planner.agent.md
---
agents: [implementer, code-review]
handoffs:
- label: Start Implementation
agent: implementer
send: true
model: GPT-5.2
- label: Run Review
agent: code-review
prompt: Review the code changes made in the previous step.
---
Handoffs should be deliberate and auditable.
Exam checklist
Remember these points for the certification exam:
- Multi-agent systems need narrow roles and explicit scope boundaries.
- Use sequential orchestration when outputs depend on prior steps.
- Use parallel orchestration only when path and artifact boundaries prevent overlap.
- Prefer artifact-based coordination over hidden agent-to-agent state.
- Isolate branches, workflows, permissions, and concurrency.
- Detect conflicts early using merge validation, required checks, and CODEOWNERS.
- Escalate after repeated failures or incompatible outputs.
- Observability requires attribution, PR structure, logs, artifacts, and review outcomes.
In the final post, we will cover memory, state, evaluation, autonomy, least privilege, human-in-the-loop controls, and continuous governance.