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

Copilot CLI Deep Research Agent ยท issue ยท closed

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

published Aug 26, 2026, 4:04 AM ยท updated Aug 27, 2026, 4:26 AM

Analysis Date: 2026-08-26
Repository: github/gh-aw
Scope: 294 total workflows, 89 using Copilot engine (id: copilot)


๐Ÿ“Š Executive Summary

Research Topic: Copilot CLI Optimization Opportunities (4th research cycle)
Key Findings:

  1. copilot-sdk: true adoption has been flat at 61 workflows for three consecutive runs (runs 2, 3, 4) โ€” true plateau confirmed, not a measurement artifact.
  2. engine.version pinning for Copilot is still 0/89 after four cycles โ€” every workflow rides latest, with zero deliberate exception.
  3. --share, plugins, and custom engine.agent personas remain at effectively 0% adoption for the fourth straight cycle despite repeated flagging in runs 2 and 3.
  4. shared/copilot-defaults.md โ€” recommended in run 2 (2026-08-24) โ€” still does not exist. Two full cycles have passed with no action.
  5. cache-memory continues to grow (80, up from 105-workflow high-water mark last cycle โ€” see note on measurement below) while repo-memory sits steady around 30.

Primary Recommendation: Stop repeating unactioned recommendations as open-ended "opportunities." The four items above (SDK plateau, version pinning, shared defaults snippet, agent personas) have each been flagged 2โ€“3 times with no measurable movement. This cycle escalates them to a decide-or-implement framing: either a maintainer explicitly deprioritizes them, or a follow-up PR implements the highest-leverage one (shared/copilot-defaults.md) directly, since it requires no per-workflow decision-making and unblocks the others.

Beyond the persistent gaps, this cycle's new observation is that the id: copilot count (89) is lower than the 109 recorded in runs 2โ€“3, while total workflow count grew from 292 to 294. This suggests some non-Copilot workflows were reclassified or removed, or the counting method shifted โ€” flagged as a data-quality note rather than a real regression in adoption (see Trends section).


Critical Findings

๐Ÿ”ด High Priority Issues

  • engine.version never pinned for Copilot (0/89, 4 cycles running). Every Copilot workflow runs whatever latest resolves to at compile/run time. For workflows with mode: strict or compliance-sensitive scopes (security-compliance.md, daily-secrets-analysis.md, daily-malicious-code-scan.md), floating on latest means a CLI regression or behavior change could silently alter results with no changelog signal in the workflow file itself.
  • No shared Copilot defaults snippet exists, despite being recommended in the 2026-08-24 cycle. With 89 workflows independently deciding tool args, models, and log settings, there is no single place to fix a systemic issue (e.g. add a safety flag to every Copilot workflow at once).

๐ŸŸก Medium Priority Opportunities

  • --share and --allow-all-paths remain unused as explicit engine.args. --allow-all-paths is auto-injected by the compiler when edit tool is enabled (confirmed in pkg/workflow/copilot_engine_execution.go:309-311), so its "0 manual adoption" is expected and not a gap โ€” but --share genuinely has no manual workflow usage, meaning no workflow author is opting into shareable conversation links for debugging failed runs.
  • Custom agent personas (engine.agent) usage is effectively 0 in this sample despite .github/agents/*.md having 12 defined agent files available to reference. Prior cycles found ~7; this cycle's stricter query (matching engine: block scoped agent: key) found 0, suggesting the earlier ~7 count may have included agent imports (imports: [.github/agents/x.md]) rather than the --agent flag itself โ€” a distinction worth clarifying in the next research pass.
  • Timeout-minutes values are broadly scattered (5, 8, 10, 15, 20, 25, 30, 35, 45, 60, 120) across Copilot workflows with no visible correlation to workflow complexity documented anywhere, making it hard to know if any given timeout is deliberate or copy-pasted.

View Full Analysis

1๏ธโƒฃ Current State Analysis

View Copilot CLI Capabilities Inventory

Copilot CLI Capabilities Inventory (from pkg/workflow/copilot_engine_execution.go, copilot_engine.go, copilot_mcp.go)

  • Always-on/compiler-managed flags: --add-dir (workspace, /tmp/, cache/drive-memory dirs), --log-level all, --log-dir, --headless, --no-auto-update (SDK server mode), --host/--port (SDK mode).
  • Conditional flags:
    • --disable-builtin-mcps โ€” added unless workflow uses web-fetch tool
    • --no-ask-user โ€” added when CLI version supports it (v1.0.19+), for autonomous runs
    • --agent <name> โ€” set only via engine.agent, not via agent-file imports
    • --autopilot --max-autopilot-continues N โ€” set when engine.max-continuations > 1
    • --allow-all-paths โ€” auto-added when edit tool enabled
    • --no-custom-instructions โ€” added when engine.bare: true
  • Engine config surface: id, version, model, args (raw passthrough), env, agent, max-continuations, bare, max-tool-denials, harness options, copilot-sdk: true.
  • Memory/storage integration: cache-memory and repo-memory both auto-wired into --add-dir.
  • BYOK support: COPILOT_PROVIDER_* env vars for custom model providers (seen in smoke-copilot-aoai-*.md, smoke-copilot-mai.md).
  • MCP integration: pkg/workflow/copilot_mcp.go configures MCP servers for the Copilot CLI transport.
View Usage Statistics

Usage Statistics (this cycle vs. prior cycles)

Metric Run 1 (08-23) Run 2 (08-24) Run 3 (08-25) Run 4 (08-26, this run)
Total workflows โ€” 292 292 294
Copilot workflows (id: copilot) 39 109 109 89
copilot-sdk: true โ€” 61 61 61
cache-memory โ€” 105 105+ 80
repo-memory โ€” 29 present 30
max-tool-denials โ€” โ€” 55 55
engine.version pinned 0 0 0 0
--share manual use 0 0 0 0
plugins: adoption โ€” 0 0 0
engine.agent persona use โ€” ~7 ~7 0 (stricter query)

Note on count discrepancies: The id: copilot and cache-memory counts dropped this cycle versus runs 2โ€“3 (109โ†’89, 105โ†’80) while total workflow count rose slightly (292โ†’294). This is very likely a query-methodology difference (this cycle used stricter nested-block matching) rather than an actual adoption regression โ€” flagged so the next cycle can reconcile the counting method and confirm.


2๏ธโƒฃ Feature Usage Matrix

Feature Category Available Features Used Not Used Usage Rate
CLI Flags (compiler-controlled) --add-dir, --log-level, --disable-builtin-mcps, --no-ask-user, --allow-all-paths All (auto-injected by compiler based on config) --share (never manual) ~90% (mostly automatic)
Engine Config id, version, model, args, env, agent, max-continuations, bare, max-tool-denials, copilot-sdk model (40+), bare (21), max-continuations (10), max-tool-denials (55), copilot-sdk (61) version (0/89), agent (0 confirmed this cycle) ~55%
MCP Servers GitHub MCP w/ toolsets, custom MCP servers via mcp-servers: GitHub MCP toolsets widely used with scoped toolsets: [...] Custom/local MCP servers less common outside a few workflows (eslint-miner, docs-noob-tester) Moderate
Memory cache-memory, repo-memory, drive-memory cache-memory (80), repo-memory (30) โ€” Growing
Network Config network.allowed: [defaults, github, python, ...] 172/294 workflows set explicit network: Remaining ~122 rely on engine default network policy ~59%
Sandbox sandbox.agent.runtime: cloud-hypervisor Present in several workflows (ace-editor, agent-job-health, agent-performance-analyzer) Not universal Partial
Advanced plugins, --share, custom engine.agent None confirmed All three 0% (persistent)

3๏ธโƒฃ Missed Opportunities

View High Priority Opportunities

๐Ÿ”ด High Priority

Opportunity 1: Create shared/copilot-defaults.md (escalated 2nd time โ€” no action after 08-24 recommendation)

  • What: A shared import snippet bundling common Copilot engine settings (e.g. a pinned version, standard max-tool-denials, log verbosity) that workflows can imports: instead of repeating ad hoc.
  • Why It Matters: 89 Copilot workflows each independently decide these settings; a systemic fix (e.g., responding to a CLI regression) currently requires touching every file individually.
  • Where: All id: copilot workflows, especially the daily-* and smoke-copilot-* families that already share structure via shared/ imports for other concerns (otlp, graders).
  • How to Implement: Add .github/workflows/shared/copilot-defaults.md with an engine: fragment (version, standard args) following the existing shared/otlp.md import pattern; migrate 3โ€“5 pilot workflows to validate before wider rollout.
  • Example:
    # shared/copilot-defaults.md
    ---
    engine:
      id: copilot
      version: "0.x.y"   # pin to last-known-good
      max-tool-denials: 3
    ---

Opportunity 2: Decide on engine.version pinning policy (0/89, 4 cycles)

  • What: No Copilot workflow pins engine.version; all float on latest.
  • Why It Matters: For compliance/security-sensitive workflows (security-compliance.md, daily-malicious-code-scan.md, daily-secrets-analysis.md), an unannounced CLI behavior change could silently affect audit results.
  • Where: At minimum, the security/compliance-tagged Copilot workflows.
  • How to Implement: Either (a) explicitly document that "always latest" is the intended policy for this repo (closing the gap by decision, not code), or (b) pin version on the handful of compliance-critical workflows as a pilot.
View Medium Priority Opportunities

๐ŸŸก Medium Priority

Opportunity 3: Clarify engine.agent vs. agent-file imports in future research

  • What: This cycle's stricter query found 0 workflows setting engine.agent (the flag that actually triggers --agent), versus ~7 in prior cycles that may have matched imports: [.github/agents/*.md] instead.
  • Why It Matters: 12 custom agent files exist in .github/agents/ but if none actually set the --agent CLI flag, that authoring investment may be under-leveraged.
  • Where: N/A โ€” this is a research methodology fix, but worth a manual audit of a sample workflow (e.g. archie.md, which appeared in both agent: searches) to determine ground truth.
  • How to Implement: Manually inspect 3โ€“5 workflows previously counted as "agent users" to confirm whether they set engine.agent or merely import agent markdown files.

Opportunity 4: Reconcile id: copilot and cache-memory count discrepancy

  • What: Counts dropped 109โ†’89 and 105โ†’80 between this cycle and the last two, while total workflow count grew.
  • Why It Matters: Without reconciling, trend tracking for adoption rates is unreliable across cycles.
  • Where: Research process itself.
  • How to Implement: Standardize the exact grep pattern used for id: copilot (nested under engine: block) and cache-memory: (top-level key) in the next cycle, and record the pattern in notes.md for repeatability.

Opportunity 5: --share flag remains fully unused for debugging

  • What: No workflow opts into --share for producing shareable conversation transcripts.
  • Why It Matters: For workflows that fail intermittently (e.g. daily-* scheduled jobs), a shareable transcript link could speed up triage without needing full log-dir access.
  • Where: High-failure-rate or hard-to-debug workflows โ€” check agent-job-health.md / aw-failure-investigator.md output for candidates.
  • How to Implement: Add args: ["--share"] to engine: on 1โ€“2 pilot workflows and confirm the resulting artifact/link surfaces usefully in run logs.
View Low Priority Opportunities

๐ŸŸข Low Priority

Opportunity 6: Standardize timeout-minutes selection guidance

  • What: Copilot workflow timeouts span 5โ€“120 minutes with no documented rationale tying value to workflow complexity.
  • Why It Matters: Minor โ€” inconsistency doesn't break anything but makes it hard for new workflow authors to pick a sensible default.
  • Where: All Copilot workflows.
  • How to Implement: Add a short guideline table to docs/src/content/docs/reference/engines.md (e.g., "simple triage: 10-15m, multi-step research: 30-60m, deep audits: 60m+").

Opportunity 7: plugins feature at 0% adoption, 3 consecutive cycles

  • What: The documented Agent Plugins feature has never been used in any workflow across all measured cycles.
  • Why It Matters: Low urgency since no workflow currently needs it, but worth confirming it isn't dead/unsupported functionality being carried in docs.
  • Where: N/A.
  • How to Implement: Verify with a maintainer whether plugins is still an active, supported feature before continuing to track its adoption in future cycles.

4๏ธโƒฃ Specific Workflow Recommendations

View Workflow-Specific Recommendations

Workflow family: security-compliance.md, daily-malicious-code-scan.md, daily-secrets-analysis.md

  • Current State: All run Copilot engine on latest with no version pin.
  • Recommended Changes: Pin engine.version to a known-good release for these specifically, since they gate compliance/security signal quality.
  • Expected Benefits: Reproducible audit results; CLI regressions caught deliberately via version bump rather than silently.

Workflow family: daily-* scheduled workflows (broad set)

  • Current State: Each independently configures Copilot engine settings; no shared defaults snippet exists.
  • Recommended Changes: Adopt shared/copilot-defaults.md once created (see Opportunity 1).
  • Expected Benefits: Single point of control for engine-wide fixes/upgrades.

5๏ธโƒฃ Trends & Insights

View Historical Trends
  • Persistent zero-adoption features across 4 cycles: engine.version pinning, plugins, --share manual use. These have now been flagged in 3+ consecutive reports without any change โ€” this cycle treats them as requiring an explicit decision rather than continued monitoring.
  • copilot-sdk: true plateaued at exactly 61 for three straight measurements (runs 2, 3, 4) โ€” genuinely flat, not measurement noise, since the exact same number recurred three times.
  • shared/copilot-defaults.md still not created despite being recommended in run 2 (08-24) and escalated in run 3 (08-25). Two cycles of inaction โ€” this is the single most actionable, low-effort item in the backlog.
  • Count discrepancy this cycle (id: copilot 109โ†’89, cache-memory 105โ†’80) likely reflects a stricter/different grep pattern rather than real regression; flagged for reconciliation rather than alarm.
  • max-tool-denials usage held steady at 55 between runs 3 and 4 โ€” a genuinely stable, moderate-adoption feature, unlike the SDK/version-pin items that are stuck at extremes (flat-high or flat-zero).

6๏ธโƒฃ Best Practice Guidelines

  1. Pin engine.version for compliance-sensitive workflows at minimum. Floating on latest everywhere is a reasonable default for most automation but leaves zero deliberate safety margin for audit-oriented workflows.
  2. Consolidate common Copilot engine settings into a shared import before adding yet another individually-configured workflow โ€” the repo already uses this pattern successfully for shared/otlp.md and shared/graders.md.
  3. When flagging the same unactioned opportunity for a 3rd+ consecutive research cycle, escalate to a decision request rather than repeating the same recommendation verbatim โ€” either implement it or explicitly close it as intentionally deprioritized, to keep the research signal useful.


7๏ธโƒฃ Action Items

Immediate Actions (this week):

  • Decide whether shared/copilot-defaults.md should be created, or explicitly deprioritized (2 cycles overdue)
  • Reconcile the id: copilot / cache-memory count discrepancy in the next research query

Short-term (this month):

  • Pilot engine.version pinning on 2โ€“3 compliance-critical Copilot workflows
  • Manually verify whether any workflow actually sets engine.agent (vs. importing agent files) to correct the persona-adoption metric

Long-term (this quarter):

  • Confirm with a maintainer whether the plugins feature is still supported/relevant before continuing to track it
  • Add timeout-minutes selection guidance to docs/src/content/docs/reference/engines.md

View Supporting Evidence & Methodology

๐Ÿ“š References

  • Copilot Engine source: pkg/workflow/copilot_engine.go, pkg/workflow/copilot_engine_execution.go, pkg/workflow/copilot_mcp.go
  • Prior research: repo-memory memory/copilot-cli-research branch (latest.json, notes.md) โ€” runs 08-23, 08-24, 08-25
  • Sample workflows referenced: security-compliance.md, daily-malicious-code-scan.md, daily-secrets-analysis.md, ace-editor.md, agent-job-health.md

Research Methodology

Static analysis via grep/glob/view across .github/workflows/*.md and pkg/workflow/copilot_*.go. Counts compared against three prior repo-memory snapshots to compute trend deltas. No workflow runs or Copilot CLI invocations were made as part of this research โ€” file/config inspection only.


Generated by Copilot CLI Deep Research (Run: 32928414627)

Generated by ๐Ÿ”ฌ Copilot CLI Deep Research Agent ยท copilot ยท auto ยท 37.2 AIC ยท โŒ– 8.76 AIC ยท โŠž 10.9K ยท โ—ท

  • expires on Aug 26, 2026, 8:04 PM UTC-08:00