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.
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 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
| Platform | Config File | Root Key | Scope |
|---|---|---|---|
| Claude Code | .mcp.json | mcpServers | Per-project |
| VS Code Chat | .vscode/mcp.json | servers | Per-project |
| Copilot CLI | .mcp.json (project) or ~/.copilot/mcp-config.json (global) | mcpServers | Per-project (since v1.0.12) or global |
@Agent Invocation
In addition to /dx-* skills, Copilot CLI supports @Agent invocation.
| Agent | Purpose |
|---|---|
@DxPRReview | Review PRs with inline patches and severity levels |
@DxCodeReview | Deep code review with architecture analysis |
@AEMComponent | Inspect and verify AEM components |
@DxHelp | Answer architecture questions from project docs |
@DxReqAll | Full requirements pipeline |
@DxStepAll | Execute all plan steps with recovery loops |
@DxBugAll | Full bug workflow: triage → verify → fix |
@DxAgentAll | End-to-end delivery: requirements → PR |
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).
Differences from Claude Code
| Aspect | Shared | Differs |
|---|---|---|
| Skills | 77 skills, same commands | |
| Marketplace | Same git URL | |
| Rules | Same .claude/rules/ files | Dual frontmatter (paths: + applyTo:) |
| Agents | Claude: 13 subagents | Copilot: 25 @Agents | |
| Env Vars | Claude: shell + settings.local.json | Copilot: shell only | |
| MCP Config | Same servers | Claude: .mcp.json | Copilot: ~/.copilot/mcp-config.json |
| Permissions | Claude: prompt | Copilot: allowed-tools allowlist |