Skip to content

[copilot-cli-research] Copilot CLI Deep Research - 2026-08-03 #49900

Description

@github-actions

Analysis Date: 2026-08-03
Repository: github/gh-aw
Scope: 269 total workflows, 98 using engine: {id: copilot, ...} block form (33 using shorthand engine: copilot)


📊 Executive Summary

Research Topic: Copilot CLI Optimization Opportunities
Key Findings:

  1. --share flag is used in exactly 1 workflow (this research workflow) despite being available for conversation sharing/tracking.
  2. 5 custom agent files (create-safe-output-type, custom-engine-implementation, grumpy-reviewer, interactive-agent-designer, w3c-specification-writer) are defined under .github/agents/ but referenced by zero workflows — unchanged since the prior research run.
  3. --autopilot/max-continuations is used in only 11 of 98 copilot-block workflows, leaving most workflows to rely on a single non-continuing run even where multi-step tasks are common.
  4. copilot-sdk: true adoption is strong (68 workflows) and growing, suggesting a broad shift toward SDK mode — worth confirming CLI-only mode is still intentionally used elsewhere.
  5. Network/firewall configuration (network:) appears in only 42/98 copilot workflows; only 1 workflow references firewall: explicitly, meaning most rely on defaults rather than explicit allowlists.

Primary Recommendation: Clean up orphaned agent files (delete or wire them into workflows) and evaluate --share adoption for workflows with complex/long-running interactions where conversation replay would aid debugging.

This is a repeat analysis (previous run: 30732964595, 2026-08-02). The orphaned-agent-file finding is a recurring, unresolved item across two consecutive research runs — it's a low-effort cleanup that keeps being deferred.


Critical Findings

🔴 High Priority Issues

  • 5 unreferenced custom agent files sitting in .github/agents/ for at least 2 research cycles with no workflow using them via engine.agent. These represent either dead code or missed integration opportunities.
  • Low network:/firewall explicit configuration (42/98, ~43%) — many copilot workflows run with default network settings rather than reviewed allowlists, which is a security posture gap worth auditing individually.

🟡 Medium Priority Opportunities

  • --autopilot/max-continuations underused (11/98) — workflows doing multi-step repo analysis or iterative fixes could benefit from continuation support instead of single-shot runs.
  • --share flag essentially unused (1/269) — no visibility into whether teams want conversation-sharing for debugging failed runs.
  • Most bare: true usage (14 workflows) suppresses custom instructions; confirm this is intentional per-workflow rather than copy-paste.

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 gh-aw: --disable-builtin-mcps (always), --no-ask-user (autonomous runs, v1.0.19+), --agent <name> (via engine.agent), --autopilot --max-autopilot-continues N (via max-continuations), --add-dir (multiple, for /tmp, cache dirs), --allow-all-paths (when edit tool enabled), --no-custom-instructions (bare mode), --headless --no-auto-update --port (SDK mode), --log-level all --log-dir.
  • Engine config options: id: copilot, version, model, agent, bare, copilot-sdk, driver (custom SDK driver — JS/Python/Go/Ruby, inline or file), args (raw passthrough), env, max-tool-denials (SDK-only), harness sub-keys mapped to GH_AW_HARNESS_* env vars.
  • MCP support: RenderMCPConfig builds JSON MCP config (copilot_mcp.go); GitHub MCP toolsets used by 64/98, github: tool block by 72/98.
  • Sandbox: AWF (Agentic Workflow Firewall) integration for max-turns; firewall enablement toggles HOME path handling for ARC/DinD topology.
  • Not found in code: --share is not referenced anywhere in copilot_engine_execution.go — it appears only in this research prompt's example text, meaning it may not be an actual supported CLI flag in the installed Copilot CLI version, or it's unmapped to any engine.* config. This should be verified against the actual copilot binary help output before recommending it further.
View Usage Statistics

Usage Statistics

  • Total Workflows: 269
  • Copilot (shorthand engine: copilot): 33
  • Copilot (block id: copilot): 98
  • agent: sub-field usage: 84/98
  • copilot-sdk: true usage: 68/98
  • bare: true usage: 14/98
  • args: (raw CLI passthrough) usage: 5 workflows (copilot-pr-merged-report.md, daily-cli-performance.md, eslint-miner.md, jsweep.md, smoke-copilot.md)
  • network: config usage: 42/98
  • safe-outputs: usage: 86/98
  • cache-memory: usage: 25/98
  • Timeout distribution: 20min (25), 30min (23), 15min (18), 10min (14), 5min (6), 45min (6), 60min (3), 120min (2), others (long tail)

2️⃣ Feature Usage Matrix

Feature Category Available Features Used Not Used / Underused Usage Rate
CLI Flags --disable-builtin-mcps, --no-ask-user, --agent, --autopilot, --add-dir, --allow-all-paths, --no-custom-instructions --disable-builtin-mcps/--no-ask-user (auto-applied), --agent (84), --allow-all-paths (auto), --no-custom-instructions via bare (14) --autopilot/continuations (11/98 only) Autopilot: ~11%
Engine Config agent, bare, copilot-sdk, driver, args, env, max-tool-denials, harness, model, version agent (84), copilot-sdk (68), bare (14), args (5) driver (custom SDK driver) rarely used; explicit version pinning rare Custom driver: near 0%
MCP Servers GitHub MCP, custom JSON MCP config GitHub MCP (72) Custom third-party MCP servers rare Low custom MCP adoption
Network Config network: allowlist, firewall: network: (42) firewall: explicit (1) ~43% explicit network config
Custom Agents .github/agents/*.agent.md (9 total) 4 referenced (adr-writer, contribution-checker, technical-doc-writer, ci-cleaner) 5 orphaned (see below) 44% dead

3️⃣ Missed Opportunities

View High Priority Opportunities

🔴 High Priority

Opportunity 1: Orphaned custom agent files

  • What: 5 files in .github/agents/ (create-safe-output-type.agent.md, custom-engine-implementation.agent.md, grumpy-reviewer.agent.md, interactive-agent-designer.agent.md, w3c-specification-writer.agent.md) are not referenced by any workflow's engine.agent field.
  • Why It Matters: Dead configuration accumulates maintenance risk (docs drift, unclear intent) and confuses contributors about which agents are "live."
  • Where: .github/agents/*.agent.md
  • How to Implement: Either (a) wire each into a workflow via engine: {id: copilot, agent: <name>}, or (b) remove the file if no longer needed, or (c) document them explicitly as "templates/examples" if intentionally unused.
  • Example:
    engine:
      id: copilot
      agent: w3c-specification-writer

Opportunity 2: Low explicit network/firewall configuration

  • What: Only 42/98 copilot-block workflows set network:, and just 1 sets firewall: explicitly.
  • Why It Matters: Workflows running with default network access have a larger attack surface for prompt-injection-driven exfiltration attempts.
  • Where: Audit the 56 copilot workflows without network: for whether they touch untrusted content (issues/PRs/external data) and need an allowlist.
  • How to Implement: Add network: {allowed: [...]} scoped to only the domains each workflow needs (e.g., api.github.com, package registries used).
View Medium Priority Opportunities

🟡 Medium Priority

Opportunity 3: Underused autopilot/continuations

  • What: max-continuations (which triggers --autopilot --max-autopilot-continues) is set in only 11/98 workflows.
  • Why It Matters: Multi-step workflows (e.g., large refactors, iterative issue triage) may silently stop after one pass without continuation support, requiring manual re-triggering.
  • Where: Workflows doing large-scope analysis (e.g., jsweep.md, eslint-miner.md) could benefit if they aren't already using it.
  • How to Implement:
    engine:
      id: copilot
      max-continuations: 3

Opportunity 4: --share flag unexplored

  • What: Not referenced in the Go engine code (copilot_engine_execution.go), suggesting gh-aw doesn't currently map any config to it, and only this research workflow's prompt text mentions it.
  • Why It Matters: If Copilot CLI does support --share for conversation URLs, it could aid debugging failed runs; if it doesn't exist in the installed CLI version, prompt/doc text referencing it should be corrected to avoid confusion.
  • How to Implement: Verify via copilot --help in the CLI version gh-aw installs; if valid, consider exposing via engine.args or a dedicated config key; if invalid, remove references from this workflow's prompt.

Opportunity 5: Custom SDK driver (engine.driver) underused

  • What: gh-aw supports fully custom Copilot SDK drivers (JS/Python/Go/Ruby, inline or file-based) but adoption appears minimal outside smoke-test workflows.
  • Why It Matters: Advanced workflows needing bespoke tool-approval logic or telemetry hooks aren't leveraging this extensibility point.
  • Where: Consider for workflows needing custom sandboxing or non-standard tool-call interception.
View Low Priority Opportunities

🟢 Low Priority

Opportunity 6: Explicit version pinning

  • What: Very few workflows pin an explicit engine.version; most rely on "latest," which the code notes matters for flag compatibility (e.g., --no-ask-user requires v1.0.19+).
  • Why It Matters: Silent CLI upgrades could introduce behavior changes; pinning aids reproducibility for critical workflows.
  • Where: High-stakes workflows (release automation, security checks) are best candidates.

Opportunity 7: args: passthrough usage is minimal and inconsistent

  • What: Only 5 workflows use engine.args for raw CLI passthrough, each seemingly for different one-off needs.
  • Why It Matters: If common patterns emerge (e.g., always adding a specific --add-dir), consider promoting to first-class config instead of ad hoc args.

Opportunity 8: Timeout tuning

  • What: Timeout values cluster around 10–30 minutes with some outliers up to 120 minutes; no clear correlation to workflow complexity was found in this pass.
  • Why It Matters: Right-sizing timeouts reduces wasted CI minutes on workflows that fail fast, and avoids premature cutoffs on genuinely long-running ones.

Opportunity 9: bare: true review

  • What: 14 workflows suppress custom instructions via bare: true; worth spot-checking whether all of these are intentional (e.g., isolated test/smoke workflows) vs. accidental copy-paste from a template.

4️⃣ Specific Workflow Recommendations

View Workflow-Specific Recommendations

Orphaned agents: create-safe-output-type, custom-engine-implementation, grumpy-reviewer, interactive-agent-designer, w3c-specification-writer

  • Current State: Defined in .github/agents/*.agent.md, zero workflow references across two consecutive research runs.
  • Recommended Changes: Decide fate — wire up, archive, or document as templates.
  • Expected Benefits: Reduced repo clutter and clearer contributor guidance on active vs. reference agents.

jsweep.md, eslint-miner.md (use args: for custom CLI flags)

  • Current State: Use raw engine.args passthrough for one-off CLI needs.
  • Recommended Changes: Confirm these couldn't be satisfied by first-class config (bare, agent, max-continuations) to reduce brittleness against future CLI flag changes.

5️⃣ Trends & Insights

View Historical Trends

Comparing to previous analysis (run 30732964595, 2026-08-02):

  • Orphaned agent list is unchanged — same 5 files, still unreferenced after a full cycle. This is now a recurring, unaddressed finding.
  • copilot-sdk: true continues strong adoption (68 this run vs. 99 block-form workflows tracked differently in prior counts — direct comparison method differed slightly between runs; recommend standardizing the counting query for future runs).
  • --share usage remains at 1 (the research workflow itself) — no organic adoption signal.
  • Note: exact workflow/engine counts differ slightly from the prior run due to methodology differences (prior run counted id: copilot across all workflows including detection-only stanzas differently). Future runs should use a single canonical query, stored in this memory file, for apples-to-apples trend tracking.

6️⃣ Best Practice Guidelines

  1. Retire or wire up orphaned agent files promptly: An agent file with zero workflow references for more than one research cycle should be actioned (used or removed) rather than left indefinitely.
  2. Default to explicit network: allowlists for workflows processing untrusted content: Especially those triggered by issues/PR comments from external actors.
  3. Reserve bare: true for workflows that genuinely don't need repo custom instructions (e.g., pure smoke tests), and document why in a comment when used elsewhere.


7️⃣ Action Items

Immediate Actions (this week):

  • Decide disposition (use/archive/remove) for the 5 orphaned agent files.
  • Verify whether --share is a real Copilot CLI flag; correct or remove misleading references in this workflow's own prompt if not.

Short-term (this month):

  • Audit the ~56 copilot workflows lacking network: config for exposure to untrusted input; add allowlists where warranted.
  • Evaluate max-continuations for multi-step analysis workflows (e.g., jsweep.md, eslint-miner.md).

Long-term (this quarter):

  • Standardize a single canonical counting methodology for future Copilot CLI research runs (store the exact grep/query set in repo-memory notes) to enable precise trend comparisons.
  • Consider promoting common engine.args passthrough patterns to first-class engine config options if repeated needs emerge.

View Supporting Evidence & Methodology

📚 References

  • Copilot Engine implementation: pkg/workflow/copilot_engine.go, pkg/workflow/copilot_engine_execution.go, pkg/workflow/copilot_mcp.go
  • Engine documentation: docs/src/content/docs/reference/engines.md
  • Custom agent files: .github/agents/*.agent.md
  • Previous research: repo-memory branch memory/copilot-cli-research (copilot-cli-research/latest.json, run 30732964595)

Research Methodology

Static analysis via grep/find over .github/workflows/*.md frontmatter and pkg/workflow/copilot_*.go source files. Counted CLI flags emitted unconditionally vs. conditionally in buildCopilotArgs; cross-referenced engine.agent values against .github/agents/*.agent.md filenames; compared network/firewall/safe-outputs frontmatter presence across all id: copilot workflows. No workflow runs were triggered as part of this analysis.


Generated by Copilot CLI Deep Research (Run: 30785495408)

Generated by 🔬 Copilot CLI Deep Research Agent · auto · 35 AIC · ⌖ 6.19 AIC · ⊞ 10.6K · ◷

  • expires on Aug 3, 2026, 8:58 PM UTC-08:00

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions