Copilot CLI — Platform Details

Copilot-specific configuration: env var limitations, MCP config location, and @Agent invocation.

Prerequisites

Complete Steps 1–3 on the Setup page first (install plugins, init, scan). Environment variables (AEM_INSTANCES, AXE_API_KEY, etc.) are documented there.

Critical

Shell-Only Environment Variables

The most important difference from Claude Code.

Copilot CLI Does Not Read settings.local.json

Copilot CLI only inherits shell environment variables. Plugin MCP configs using ${AEM_INSTANCES} work in Claude Code but fail silently in Copilot CLI unless the variable is exported in your shell profile (~/.zshrc or ~/.bashrc).

All env vars from the Setup page must be in your shell profile. If you previously set them in .claude/settings.local.json, add them to your shell profile too.

MCP

MCP Server Configuration

Project .mcp.json auto-loads since v1.0.12, but v1.0.40+ requires an opt-in env var.

v1.0.40+ Opt-In Required for Repo Hooks and Workspace MCP

Starting in Copilot CLI v1.0.40 (2026-05-01), repo-level hooks (.github/hooks/hooks.json) and workspace MCP (.mcp.json) are gated behind two opt-in environment variables. Without them, our plugin hooks and ADO/Atlassian MCP servers will silently not load. Add to your shell profile:

export GITHUB_COPILOT_PROMPT_MODE_REPO_HOOKS=1
export GITHUB_COPILOT_PROMPT_MODE_WORKSPACE_MCP=1

Project .mcp.json Auto-Loaded (v1.0.12+)

Since Copilot CLI v1.0.12 (April 2026), copilot reads .mcp.json at the project root automatically — same as Claude Code. The legacy workaround (—additional-mcp-config or a global ~/.copilot/mcp-config.json) is no longer required for project-specific servers like ADO. On v1.0.40+, also export GITHUB_COPILOT_PROMPT_MODE_WORKSPACE_MCP=1 as shown above.

Plugin-bundled MCP servers (Figma, axe, AEM, Playwright) load automatically from each plugin’s .mcp.json. Project servers (ADO, Atlassian) load from the repo-root .mcp.json that /dx-init generates. If you previously created ~/.copilot/mcp-config.json as a workaround, you can keep it for personal global defaults or remove it.

MCP Config Locations by Platform

PlatformConfig FileRoot KeyScope
Claude Code.mcp.jsonmcpServersPer-project
VS Code Chat.vscode/mcp.jsonserversPer-project
Copilot CLI.mcp.json (project) or ~/.copilot/mcp-config.json (global)mcpServersPer-project (since v1.0.12) or global
Agents

@Agent Invocation

In addition to /dx-* skills, Copilot CLI supports @Agent invocation.

AgentPurpose
@DxPRReviewReview PRs with inline patches and severity levels
@DxCodeReviewDeep code review with architecture analysis
@AEMComponentInspect and verify AEM components
@DxHelpAnswer architecture questions from project docs
@DxReqAllFull requirements pipeline
@DxStepAllExecute all plan steps with recovery loops
@DxBugAllFull bug workflow: triage → verify → fix
@DxAgentAllEnd-to-end delivery: requirements → PR
v1.0.40

What's New (April–May 2026)

Highlights from v1.0.15 → v1.0.40 relevant to plugin workflows.

Prompt-Mode Gates (v1.0.40)

Repo hooks and workspace MCP now require explicit opt-in env vars (GITHUB_COPILOT_PROMPT_MODE_REPO_HOOKS, GITHUB_COPILOT_PROMPT_MODE_WORKSPACE_MCP). Without them, plugin hooks and project .mcp.json are silently ignored. Action required: see callout above.

Persisted Permissions Default (v1.0.37)

Location-based permission persistence is now on by default — approvals carry across sessions for the same project path. No more re-approving the same tool calls each session.

HTTP Hooks (v1.0.35)

Hooks can now POST to an HTTP endpoint instead of running a local script. Useful for autonomous pipelines and webhook-based observability — dx-automation Lambda agents can be reached directly from .github/hooks/hooks.json.

Stop Events (agentStop / subagentStop)

Both agentStop and subagentStop events now exist. The /dx-init Stop guard (completion checks, code review prompts) now ports to Copilot CLI.

${PLUGIN_ROOT} env vars (v1.0.26)

PLUGIN_ROOT, COPILOT_PLUGIN_ROOT, and CLAUDE_PLUGIN_ROOT are injected into plugin hook scripts — no more path-derivation hacks.

Notification Hook (v1.0.18)

A new hook event with sub-types agent_completion, permission_prompt, and elicitation_dialog. Useful for desktop notifications and audit trails.

Auto Model + Opus 4.7 (v1.0.29 / v1.0.32)

Claude Opus 4.7 supported via BYOK (v1.0.29). auto model selection picks the right tier automatically; continueOnAutoMode keeps long autonomous runs going.

Named Sessions (v1.0.35)

—name and —resume=<name> let you keep multiple long-running sessions addressable by name — improves multi-repo hub UX.

Autopilot Cap + ADO Detect (v1.0.40)

Autopilot continuation defaults to 5 (override with —max-autopilot-continues). Azure DevOps repos auto-detect and auto-disable the GitHub MCP server. MCP OAuth gains client_credentials grant type for headless setups.

Full release history

See the Copilot CLI releases page for the complete changelog. Latest snapshot: docs/research/2026-05-01-platform-state-update.md (delta to docs/research/2026-04-25-platform-state-update.md).

Diff

Differences from Claude Code

AspectSharedDiffers
Skills77 skills, same commands
MarketplaceSame git URL
RulesSame .claude/rules/ filesDual frontmatter (paths: + applyTo:)
AgentsClaude: 13 subagents | Copilot: 25 @Agents
Env VarsClaude: shell + settings.local.json | Copilot: shell only
MCP ConfigSame serversClaude: .mcp.json | Copilot: ~/.copilot/mcp-config.json
PermissionsClaude: prompt | Copilot: allowed-tools allowlist
KAI by Dragan Filipovic