[copilot-cli-research] Copilot CLI Deep Research - 2026-08-25

Copilot CLI Deep Research Agent · issue · closed

Filter2mode:review mode:live
All recorded Export JSON
github-actions[bot]

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:

  1. --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.
  2. Zero workflows pin engine.version for 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.
  3. 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.
  4. Agent Plugins (plugins: top-level field) has 0% adoption across all 292 workflows despite being documented as supported by Copilot, Claude, and Codex.
  5. 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

  1. No engine.version pinning 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 global gh aw update.
  2. --share flag 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.md for internal detection runs) but no user-facing workflow opts into exporting a shareable conversation transcript for debugging or audit trails.
  3. Agent Plugins (plugins:) at 0% adoption — documented as supported by the Copilot engine (docs/src/content/docs/reference/engines.md line 65) yet not used in any of 292 workflows, three research cycles running.

🟡 Medium Priority Opportunities

  1. Custom agent personas underused — only ~7/109 (6%) Copilot workflows set engine.agent to a real custom .github/agents/*.md persona; most agent: matches found in earlier greps were prompt-text/template mentions, not live config.
  2. Model slug inconsistency — 39 workflows use the small alias, 33 use mai-code-1-flash-picker, 21 use copilot/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.
  3. --disable-builtin-mcps manual 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.
  4. No shared Copilot-defaults snippet exists (unlike shared/otlp.md for 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> (from engine.agent), --autopilot --max-autopilot-continues N (from max-continuations > 1), --allow-all-paths (when edit tool 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.go supports stdio and HTTP MCP servers, GitHub MCP in gh-proxy/direct modes with toolsets: 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-proxy tool.
View Usage Statistics

Usage Statistics

  • Total Workflows: 292
  • Copilot Workflows: 109 (~37%)
  • copilot-sdk: true: 61 workflows
  • cli-proxy: true (GitHub tool proxy): 205 workflows
  • gh-proxy GitHub MCP mode: 156 workflows
  • cache-memory: 105+ workflows
  • max-tool-denials: 55 workflows
  • sandbox.agent.runtime: gvisor: 35 workflows
  • bare: true: 21 workflows
  • engine.version pinned for copilot: 0 workflows
  • --share used manually: 0 workflows
  • plugins: used: 0 workflows
  • engine.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>" under engine: 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-denials or max-continuations set.
  • How to Implement: Expose a documented engine.share-conversation: true (or similar) frontmatter option that adds --share and 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 current imports:-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.agent value; the mechanism exists (archie.mdadr-writer, contribution-check.mdcontribution-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/*.md and reference via engine: {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.md exists for telemetry defaults, but no equivalent exists for common Copilot engine settings (version pin, harness/retry tuning, --no-custom-instructions policy).
  • 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.md with a pinned engine: 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-paths is auto-added whenever the edit tool is enabled (per github.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.md clarifying this automatic linkage.

Opportunity 8: Broaden network: allowed: [defaults] explicit usage

  • What: Only 1 workflow explicitly sets allowed: [defaults]; most either omit network: or hand-list domains, though 169 workflows configure network: 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: copilot form, 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.agent custom 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.version pinning (still 0), --share manual 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: true steady at 61 (unchanged from run 2), cache-memory/repo-memory usage continues to be common, max-tool-denials now 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

  1. 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.
  2. Centralize common engine config via shared snippets: Follow the shared/otlp.md pattern for Copilot defaults to reduce duplication and drift across 100+ workflows.
  3. 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.version pinning 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.md with 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-hypervisor sandbox 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