published Aug 25, 2026, 4:01 AM · updated Aug 26, 2026, 4:04 AM
Analysis Date: 2026-08-25
Repository: github/gh-aw
Scope: 292 total workflows, 109 using Copilot engine (23 with simple engine: copilot form, 86 with extended engine: {id: copilot, ...} form)
📊 Executive Summary
Research Topic: Copilot CLI Optimization Opportunities
Key Findings:
--share(conversation transcript export) and--allow-all-paths(manual) remain completely unused despite being available and even appearing in generated lock files for detection jobs — no workflow manually opts in for richer conversation artifacts.- Zero workflows pin
engine.versionfor Copilot — this is now the third consecutive research run confirming this gap, meaning every workflow floats to "latest," which is convenient but risks unannounced behavior changes breaking scheduled runs. - Custom agent files (
engine.agent) are used in only ~7 workflows out of 109 Copilot workflows (~6%), despite being a first-class mechanism for reusable, specialized agent personas. - Agent Plugins (
plugins:top-level field) has 0% adoption across all 292 workflows despite being documented as supported by Copilot, Claude, and Codex. - Model slug usage is inconsistent — a mix of size aliases (
small,large), CLI-native slugs (copilot/gpt-5.4), and bare vendor model names (claude-sonnet-4.6) are used side-by-side with no apparent convention, making cost/quality trade-offs hard to reason about at a glance.
Primary Recommendation: Create a shared/copilot-defaults.md snippet (following the existing shared/otlp.md pattern) that pins engine.version, standardizes --no-custom-instructions/model conventions, and document/promote engine.agent custom personas — this closes three of the top gaps in one reusable artifact.
Copilot engine adoption and instrumentation continue to mature: copilot-sdk: true is now used in 61 workflows, cli-proxy/gh-proxy GitHub tool mode in 205, cache-memory in 105+, and max-tool-denials (SDK-only safety valve) in 55. These indicate the team is actively using more advanced SDK-mode features. However, several low-effort, high-value flags and configuration options remain untouched, and there's no shared configuration snippet to propagate best practices across the growing workflow fleet.
Critical Findings
🔴 High Priority Issues
- No
engine.versionpinning anywhere — all 109 Copilot workflows implicitly track "latest" CLI version. A CLI regression or breaking flag change would silently affect every scheduled workflow simultaneously with no rollback path other than a globalgh aw update. --shareflag unused for conversation export — the flag exists in the CLI (confirmed present in generated detection-job commands, e.g.pkg/workflow/copilot_engine_installation.go/lock files use--share .../conversation.mdfor internal detection runs) but no user-facing workflow opts into exporting a shareable conversation transcript for debugging or audit trails.- Agent Plugins (
plugins:) at 0% adoption — documented as supported by the Copilot engine (docs/src/content/docs/reference/engines.mdline 65) yet not used in any of 292 workflows, three research cycles running.
🟡 Medium Priority Opportunities
- Custom agent personas underused — only ~7/109 (6%) Copilot workflows set
engine.agentto a real custom.github/agents/*.mdpersona; mostagent:matches found in earlier greps were prompt-text/template mentions, not live config. - Model slug inconsistency — 39 workflows use the
smallalias, 33 usemai-code-1-flash-picker, 21 usecopilot/gpt-5.4, and a long tail of vendor-specific slugs (claude-sonnet-4.6,gpt-5.4-mini,kiwi, etc.) are mixed without a documented selection policy. --disable-builtin-mcpsmanual override still rare (only ~2 workflows manually reference it outside the compiler's automatic injection) — the compiler already adds this by default, so this is expected, but workflows wanting selective built-in MCP re-enablement have no documented pattern.- No shared Copilot-defaults snippet exists (unlike
shared/otlp.mdfor telemetry) to propagate version pin, harness/retry tuning, and naming conventions across the fleet.
View Full Analysis
1️⃣ Current State Analysis
View Copilot CLI Capabilities Inventory
Copilot CLI Capabilities Inventory (from pkg/workflow/copilot_engine*.go)
- CLI flags emitted by compiler automatically:
--add-dir(workspace/tmp/agent dirs, cache-memory dirs, drive-memory dirs),--log-level all,--log-dir,--disable-builtin-mcps,--no-ask-user(v1.0.19+),--agent <name>(fromengine.agent),--autopilot --max-autopilot-continues N(frommax-continuations > 1),--allow-all-paths(whenedittool enabled),--no-custom-instructions(bare mode),--share <path>(internal detection-job use only),--headless --no-auto-update --host --port(copilot-sdk server mode). - Engine configuration fields:
engine.id,engine.version,engine.model,engine.args(raw passthrough),engine.env,engine.agent,engine.bare,engine.max-continuations,engine.copilot-sdk,engine.max-tool-denials(top-level, Copilot-only). - MCP integration:
pkg/workflow/copilot_mcp.gosupports stdio and HTTP MCP servers, GitHub MCP ingh-proxy/direct modes withtoolsets:filtering. - Sandbox/network options: AWF firewall (
network: {allowed: [...]}),sandbox.agent.runtime(gvisor/docker-sbx/cloud-hypervisor/docker-sudo-iptables). - Other:
plugins:(Agent Plugins format),cache-memory,repo-memory,cli-proxytool.
View Usage Statistics
Usage Statistics
- Total Workflows: 292
- Copilot Workflows: 109 (~37%)
copilot-sdk: true: 61 workflowscli-proxy: true(GitHub tool proxy): 205 workflowsgh-proxyGitHub MCP mode: 156 workflowscache-memory: 105+ workflowsmax-tool-denials: 55 workflowssandbox.agent.runtime: gvisor: 35 workflowsbare: true: 21 workflowsengine.versionpinned for copilot: 0 workflows--shareused manually: 0 workflowsplugins:used: 0 workflowsengine.agent(real custom personas): ~7 workflows
2️⃣ Feature Usage Matrix
| Feature Category | Available Features | Used | Not Used | Usage Rate |
|---|---|---|---|---|
| CLI Flags | --add-dir, --share, --disable-builtin-mcps, --no-ask-user, --agent, --autopilot, --allow-all-paths, --no-custom-instructions |
--add-dir(auto), --disable-builtin-mcps(auto), --no-ask-user(auto), --agent(7), --autopilot(10), --allow-all-paths(auto via edit tool), --no-custom-instructions(21, bare) |
--share (manual) |
~85% (mostly automatic) |
| Engine Config | version, model, args, env, agent, bare, max-continuations, copilot-sdk, max-tool-denials |
model(40+), env(56), agent(7), bare(21), max-continuations(10), copilot-sdk(61), max-tool-denials(55) |
version (0), raw args (3, and those are MCP server args not engine args) |
~78% |
| MCP Servers | stdio, HTTP, GitHub (gh-proxy/direct), custom mcp-servers: |
GitHub gh-proxy(156), custom stdio/HTTP(9) | — | high |
| Network Config | network: {allowed: [...]}, defaults |
169 workflows configure network restrictions, 1 uses allowed: [defaults] explicitly |
broader adoption of curated allowlists vs defaults | moderate |
| Sandbox Options | gvisor, docker-sbx, cloud-hypervisor, docker-sudo-iptables |
gvisor(35) |
docker-sbx/cloud-hypervisor adoption not measured this run, appears rare |
low-moderate |
| Plugins | plugins: (Agent Plugins format) |
0 | all 292 workflows | 0% |
3️⃣ Missed Opportunities
View High Priority Opportunities
🔴 High Priority
Opportunity 1: Pin engine.version for Copilot workflows
- What: No workflow specifies
engine.version, so every run uses whatever CLI version is resolved at compile/install time. - Why It Matters: A CLI update with a breaking flag change or behavior shift would affect all 109 Copilot workflows at once with no easy rollback; scheduled/cron workflows are especially exposed since there's no PR review gate for the version bump.
- Where: All Copilot workflows, especially scheduled ones like
weekly-editors-health-check.md,stale-pr-cleanup.md,daily-doc-updater.md. - How to Implement: Add
version: "<pinned-version>"underengine:in a shared defaults snippet, bump deliberately via PR. - Example:
engine: id: copilot version: "0.0.339" copilot-sdk: true
Opportunity 2: Adopt --share for debugging-critical workflows
- What: The compiler already knows how to emit
--share <path>/conversation.md(used internally for detection jobs) but no workflow author-facing config surfaces this for the main agent run. - Why It Matters: Workflows performing complex, multi-step reasoning (e.g.
architecture-guardian.md,breaking-change-checker.md) would benefit from an exportable, human-readable conversation transcript artifact for post-run review, independent of the JSONL session logs. - Where: Complex/long-running Copilot workflows with
max-tool-denialsormax-continuationsset. - How to Implement: Expose a documented
engine.share-conversation: true(or similar) frontmatter option that adds--shareand uploads the resulting file as a workflow artifact.
Opportunity 3: Enable Agent Plugins on at least pilot workflows
- What:
plugins:(Agent Plugins format) has been documented as Copilot-supported for at least 3 research cycles with zero adoption. - Why It Matters: Plugins could reduce duplicated tool/MCP boilerplate across the 109 Copilot workflows and give a standard extension point instead of ad hoc
imports:. - Where: Any workflow currently importing multiple shared snippets for tool config, e.g.
ci-coach.md,code-scanning-fixer.md. - How to Implement: Pilot one workflow with a minimal
plugins:block per the Agent Plugins format and measure whether it simplifies frontmatter versus currentimports:-heavy patterns.
View Medium Priority Opportunities
🟡 Medium Priority
Opportunity 4: Increase adoption of engine.agent custom personas
- What: Only ~7 of 109 Copilot workflows set a real
engine.agentvalue; the mechanism exists (archie.md→adr-writer,contribution-check.md→contribution-checker) but is rarely reused elsewhere. - Why It Matters: Custom agent files centralize persona-specific instructions/behavior and reduce prompt duplication in workflow markdown bodies.
- Where: Workflows with long, repeated instruction blocks that resemble a specialized persona (e.g.
tidy.md,craft.md). - How to Implement: Extract common instruction patterns into
.github/agents/*.mdand reference viaengine: {id: copilot, agent: <name>}.
Opportunity 5: Standardize model slug conventions
- What: Mixed usage of size aliases (
small/large, 48 combined), CLI-prefixed slugs (copilot/gpt-5.4,copilot/claude-sonnet-4.5), and bare vendor slugs (claude-sonnet-4.6,gpt-5.4-mini) with no documented policy on when to use which form. - Why It Matters: Makes it hard to audit cost/quality trade-offs fleet-wide or bulk-migrate model versions.
- Where: All Copilot (and other-engine) workflows.
- How to Implement: Document a convention (e.g., "use size aliases for routine automation, explicit slugs only for benchmarked/critical workflows") in
.github/aw/github-agentic-workflows.md.
Opportunity 6: Create a shared/copilot-defaults.md snippet
- What:
shared/otlp.mdexists for telemetry defaults, but no equivalent exists for common Copilot engine settings (version pin, harness/retry tuning,--no-custom-instructionspolicy). - Why It Matters: Would let all 109 Copilot workflows inherit best practices via a single
imports:line rather than duplicating engine config, and is the natural vehicle for fixing Opportunities 1 and 5 at scale. - Where: New shared file, imported by existing Copilot workflows incrementally.
- How to Implement: Add
.github/workflows/shared/copilot-defaults.mdwith a pinnedengine:block; migrate 2-3 workflows as a pilot.
View Low Priority Opportunities
🟢 Low Priority
Opportunity 7: Document --allow-all-paths interaction more explicitly
- What:
--allow-all-pathsis auto-added whenever theedittool is enabled (pergithub.com/github/copilot-cli/issues/67), but this is an implicit side-effect not obvious from workflow frontmatter. - Why It Matters: Workflow authors may be surprised by broadened path permissions when they only intended to enable file editing.
- How to Implement: Add a note in
docs/src/content/docs/reference/engines.mdclarifying this automatic linkage.
Opportunity 8: Broaden network: allowed: [defaults] explicit usage
- What: Only 1 workflow explicitly sets
allowed: [defaults]; most either omitnetwork:or hand-list domains, though 169 workflows configurenetwork:in some form. - Why It Matters: Explicit
[defaults]improves readability/auditability versus implicit behavior. - How to Implement: Low-effort documentation nudge; not urgent.
Opportunity 9: Investigate docker-sbx/cloud-hypervisor sandbox adoption
- What: These stronger isolation runtimes exist but weren't measured as widely adopted versus
gvisor(35 workflows). - Why It Matters: Security-sensitive workflows (auto-merge, code-scanning-fixer) may benefit from stronger isolation guarantees.
- How to Implement: Follow-up research to quantify adoption and identify candidate workflows for upgrade.
4️⃣ Specific Workflow Recommendations
View Workflow-Specific Recommendations
Workflow: weekly-editors-health-check.md / daily-doc-updater.md / stale-pr-cleanup.md (scheduled, engine: copilot)
- Current State: Simple
engine: copilotform, no version pin, no--share. - Recommended Changes: Migrate to
engine: {id: copilot, version: "<pinned>"}once a shared defaults snippet exists. - Expected Benefits: Predictable, auditable CLI version across scheduled runs.
Workflow: archie.md / contribution-check.md
- Current State: Already using
engine.agentcustom personas — good examples to reference/document as the pattern for others. - Recommended Changes: None needed; use as internal documentation examples for Opportunity 4.
Workflow: architecture-guardian.md / breaking-change-checker.md
- Current State:
copilot-sdk: true,max-tool-denials: 3, no conversation export. - Recommended Changes: Pilot
--share-based conversation export (Opportunity 2) here given their complex multi-step reasoning. - Expected Benefits: Easier post-hoc debugging of nuanced decisions.
5️⃣ Trends & Insights
View Historical Trends
This is the third research cycle (previous runs: 2026-08-23, 2026-08-24; this run: 2026-08-25).
- Persistent gaps across all 3 runs:
engine.versionpinning (still 0),--sharemanual usage (still 0), Agent Plugins (still 0%). These are stable, repeated findings — worth escalating from "opportunity" to a concrete tracked action item since data confirms they are not organically improving. - Adoption growth:
copilot-sdk: truesteady at 61 (unchanged from run 2),cache-memory/repo-memoryusage continues to be common,max-tool-denialsnow measured at 55 (new metric this run, not directly comparable to prior runs' data). - Custom agent adoption stagnant: ~7 workflows across all 3 runs — no growth despite being flagged as an opportunity twice before.
- No shared Copilot-defaults snippet created yet despite being recommended in run 2 — still open.
6️⃣ Best Practice Guidelines
- Pin engine versions for scheduled/critical workflows: Treat Copilot CLI version like any other dependency — pin and bump deliberately via reviewed PRs rather than floating to latest.
- Centralize common engine config via shared snippets: Follow the
shared/otlp.mdpattern for Copilot defaults to reduce duplication and drift across 100+ workflows. - Reserve custom agent personas for workflows with substantial, reusable instruction blocks: Don't force every workflow into a custom agent, but actively extract repeated instructions once a pattern shows up in 2+ workflows.
7️⃣ Action Items
Immediate Actions (this week):
- Decide on and document a
engine.versionpinning policy for Copilot workflows - Pilot
--share/conversation-export support on 1-2 complex workflows (e.g.architecture-guardian.md)
Short-term (this month):
- Create
.github/workflows/shared/copilot-defaults.mdwith pinned version + conventions - Migrate 3-5 scheduled workflows to the new shared defaults snippet
Long-term (this quarter):
- Pilot Agent Plugins on one workflow and evaluate vs. current
imports:pattern - Audit and standardize model slug usage across all engines, not just Copilot
- Follow-up research on
docker-sbx/cloud-hypervisorsandbox runtime adoption
View Supporting Evidence & Methodology
📚 References
- Copilot Engine Documentation:
docs/src/content/docs/reference/engines.md - Copilot Engine Source:
pkg/workflow/copilot_engine.go,pkg/workflow/copilot_engine_execution.go,pkg/workflow/copilot_engine_tools.go,pkg/workflow/copilot_mcp.go - Previous Research: repo-memory
memory/copilot-cli-research/notes.md(runs 2026-08-23, 2026-08-24)
Research Methodology
Static analysis via grep/glob/view across pkg/workflow/copilot*.go source files and all 292 .github/workflows/*.md frontmatter blocks. Feature availability derived from source code (flag-emission logic in buildCopilotArgs/buildCopilotFeatureArgs) cross-referenced against documented behavior in docs/src/content/docs/reference/engines.md. Usage counts derived from grep -l/grep -c pattern matching against workflow frontmatter keys. Historical trend data loaded from repo-memory copilot-cli-research/latest.json and notes.md from the two prior research runs.
Generated by Copilot CLI Deep Research (Run: 32806958803)
Generated by 🔬 Copilot CLI Deep Research Agent · copilot · auto · 45.3 AIC · ⌖ 5.67 AIC · ⊞ 10.9K · ◷
- expires on Aug 25, 2026, 8:01 PM UTC-08:00