A Copilot CLI plugin + companion wrapper script that lets you use Claude Code CLI syntax with GitHub Copilot CLI, without shadowing your real claude binary.
| Component | Type | Purpose |
|---|---|---|
plugin.json |
Plugin manifest | Registers this as a Copilot CLI plugin |
skills/claude-compat/SKILL.md |
Plugin skill | /claude-help — full mapping reference inside Copilot sessions |
hooks.json |
Plugin hook | Shows a reminder on session start |
cpc |
Companion script | Translates Claude Code CLI flags → Copilot CLI flags |
setup-claude-copilot-compat.sh |
Setup script (bash) | Symlinks config dirs + installs the plugin |
setup-claude-copilot-compat.ps1 |
Setup script (PowerShell) | Same as above, for Windows/PowerShell |
cpc.ps1 |
PowerShell wrapper | Invokes the cpc Python script from PowerShell |
cpc.cmd |
CMD wrapper | Invokes the cpc Python script from cmd.exe |
- GitHub Copilot CLI installed (
copilot --version) - Python 3.6+ (ships with macOS; install from python.org on Windows)
If you just want the /claude-help reference skill inside Copilot CLI:
copilot plugin install ./macOS / Linux (bash):
# 1. Make scripts executable
chmod +x cpc setup-claude-copilot-compat.sh
# 2. Put cpc on your PATH (pick one)
cp cpc /usr/local/bin/
# or: ln -s "$(pwd)/cpc" ~/bin/cpc
# or: add this directory to PATH
# 3. Run setup (installs plugin + symlinks config dirs)
./setup-claude-copilot-compat.shWindows (PowerShell):
# 1. Put cpc on your PATH (pick one)
Copy-Item cpc, cpc.ps1, cpc.cmd -Destination "$env:USERPROFILE\bin\"
# or: add this directory to your PATH
# 2. Run setup (installs plugin + symlinks config dirs)
# Note: Run as Administrator if symlink creation requires elevated privileges.
.\setup-claude-copilot-compat.ps1copilot plugin install abhi-singhs/copilot-cli-claude-code-compat# Start interactive session
cpc # → copilot
# Start with a prompt
cpc "explain this project" # → copilot -i "explain this project"
# Non-interactive mode
cpc -p "summarize README.md" # → copilot -p "summarize README.md"
# Continue last conversation
cpc -c # → copilot --continue
# Resume a session (-r is the shorthand for --resume in both CLIs)
cpc -r my-session "keep going" # → copilot --resume=my-session -i "keep going"
cpc --resume my-session # → copilot --resume=my-session
cpc -r # → copilot --resume (session picker; needs a TTY)
# Auth (copilot login options pass through)
cpc auth login # → copilot login
cpc auth login --host https://x.ghe.com # → copilot login --host https://x.ghe.com
cpc auth login --device-code # → copilot login --device-code
cpc auth logout # → /logout (in interactive session; subcommand removed)
# Update
cpc update # → copilot update
# MCP server management
cpc mcp # → copilot mcp
# Skip permissions
cpc --dangerously-skip-permissions # → copilot --allow-all
# Tool permissions (syntax is auto-converted)
cpc --allowedTools "Bash(git log *)" "Bash(npm test)" -p "check history"
# → copilot --allow-tool=shell(git log *) --allow-tool=shell(npm test) -p "check history"
# Read-only Claude Code tools collapse onto Copilot's 'read' permission kind
cpc --allowedTools "Grep" "Glob" -p "find the bug"
# → copilot --allow-tool=read --allow-tool=read -p "find the bug"
# Limit turns
cpc --max-turns 5 -p "fix all lint errors"
# → copilot --max-autopilot-continues=5 -p "fix all lint errors"
# MCP config
cpc --mcp-config ./my-servers.json # → copilot --additional-mcp-config=@./my-servers.json
# Tool availability
cpc --tools "Bash,Edit,Read" -p "q" # → copilot --available-tools=bash,edit,view -p "q"
# Delegate to cloud (like Claude Code --cloud "task")
cpc --cloud "Fix the login bug"
# → copilot -i "/delegate Fix the login bug"
# --remote is a deprecated Claude Code alias for --cloud
cpc --remote "Fix the login bug"
# → copilot -i "/delegate Fix the login bug"
# Resume a cloud session locally (like Claude Code --teleport)
cpc --teleport abc123 # → copilot --resume=abc123
cpc --teleport # → copilot --resume (session picker)
# Select model
cpc --model sonnet "fix the bug" # → copilot --model sonnet -i "fix the bug"
cpc --model gemini-3.6-flash "fix it" # → copilot --model gemini-3.6-flash -i "fix it"
# Shell sandbox for this session only (Copilot CLI-only, experimental mode)
cpc --sandbox -p "run the test suite" # → copilot --sandbox -p "run the test suite"
cpc --no-sandbox -p "run the build" # → copilot --no-sandbox -p "run the build"
# Plan mode
cpc --permission-mode plan # → copilot --plan
# Code review (Claude Code /review is an alias for /code-review; its effort
# level, --fix, and --comment have no Copilot equivalent and are stripped)
cpc -p "/review high --fix pr#123" # → copilot -p "/review pr#123"
# Isolated Git worktree (experimental in Copilot CLI)
cpc --worktree feature-auth # → copilot --worktree=feature-auth
cpc -w # → copilot --worktree (auto-generated name)Use --dry-run to see what copilot command would be executed:
cpc --dry-run --dangerously-skip-permissions --max-turns 3 -p "fix tests"
# Output: copilot --allow-all --max-autopilot-continues=3 -p fix testsSlash commands are in-session only and can't be aliased externally. Type /claude-help inside a Copilot CLI session to see the full mapping table.
Quick reference for the most common ones:
| Claude Code | Copilot CLI | Same? |
|---|---|---|
/compact |
/compact [FOCUS-INSTRUCTIONS] |
✅ Both accept optional focus instructions |
/autocompact [auto|<tokens>] |
— | ❌ Claude Code-only (v2.1.221+, sets the auto-compact threshold; Copilot's /compact only compacts on demand) |
/clear |
/clear |
✅ — note: Claude Code's optional [name] labels the previous conversation in /resume; Copilot's optional [PROMPT] starts the new conversation |
/context [all] |
/context |
✅ Claude Code's optional all expands the per-item breakdown in fullscreen; Copilot's /context takes no arguments |
/diff |
/diff |
✅ |
/model |
/model [--session|--global|--repo|--local] [MODEL] (/models) |
✅ Copilot CLI scopes the change: --session (default) is the current session, --repo/--local pin a repository default, --global sets it for future sessions |
/plan |
/plan |
✅ |
/resume |
/resume (/continue) |
✅ |
/review [low|medium|high|xhigh|max|ultra] [--fix] [--comment] [target] |
/review [PROMPT] |
/review is now an alias for /code-review; Copilot's takes a free-form prompt, so cpc strips effort levels, --fix, and --comment |
/tasks |
/tasks |
✅ |
/agents |
/agent (/subagents) |
/agent browses agents; /subagents (/agents) configures per-agent subagent models. Claude Code removed the /agents wizard in v2.1.198 |
/security-review |
/security-review [PROMPT] |
✅ Direct match — both run a security review agent over pending changes |
/background (/bg) |
— | ❌ Claude Code-only (detach to background agent; closest: Ctrl+X then b) |
/fork [prompt] |
/fork [NAME] (experimental) |
✅ Aligned in Claude Code v2.1.212+ — both copy the session into a new independent session; the forked-subagent behavior moved to /subtask |
/subtask <task> |
/fleet <task> |
/fleet runs parallel subagents (not 1:1) |
/branch [name] |
/branch [NAME] |
✅ Aligned — fork the session into a new one (experimental in Copilot CLI) |
/btw [question] |
/ask (experimental) |
|
/code-review (/simplify, /review) |
/review |
/simplify and /review are now aliases; --fix, --comment, and effort levels have no Copilot equivalent |
/cost |
/usage |
|
/permissions |
/permissions [default|assisted|allow-all|show] (/permissions reset) |
/permissions now switches permission modes (default/assisted/allow-all) in addition to show; /permissions reset clears in-memory tool and path approvals |
/allow-all (/yolo) |
/allow-all [off|auto|show] (/yolo) |
/permissions allow-all — the on option was replaced with auto |
/sandbox |
/sandbox [config|status|policy|enable|disable] |
/sandbox; Copilot adds config (settings dialog), status, and policy alongside enable/disable |
/voice [hold|tap|off] |
/voice [on|off|models|devices] |
models and devices browse voice models and pick the microphone, and it has no push-to-talk hold/tap |
/deep-research <question> |
/research TOPIC |
|
/export |
/share [link|off|file|html|gist|research] (/export) |
/export is a Copilot alias; bare /share generates a shareable GitHub link (falling back to a Markdown export) and off stops sharing |
/config [key=value] |
/config [--repo|--local] [show KEY|KEY|KEY VALUE] (/settings) |
✅ Name match — Copilot CLI documents /config as an alias of /settings; only the inline syntax differs (space instead of =) |
/extra-usage → /usage-credits |
— | ❌ Claude Code-only (configure usage credits; closest: /usage for stats only) |
/goal |
/autopilot [OBJECTIVE] (/goal [OBJECTIVE]) |
/autopilot [OBJECTIVE] (alias /goal, experimental) starts/refocuses autopilot mode with an optional objective (--max-ai-credits N caps spend); /goal on//goal off toggle without an objective, closing the gap for Claude Code's /goal <condition> / /goal clear |
/radio |
— | ❌ Claude Code-only (Claude FM lo-fi radio) |
/remote-control |
/remote [on|off] |
on/off toggles |
/run, /run-skill-generator, /verify |
— | ❌ Claude Code-only (build/launch/drive the project's app; v2.1.145+) |
/memory |
/memory [on|off|show] |
✅ Both have it — Copilot CLI added /memory on|off|show in v1.0.49 |
/scroll-speed |
— | ❌ Claude Code-only (interactive scroll speed adjustment) |
/stop |
— | ❌ Claude Code-only (stop current background session) |
/autofix-pr |
— | ❌ Not available |
/import [codex|gemini] [--dry-run] [--yes] |
— | ❌ Claude Code-only (v2.1.213+, import Codex or Gemini CLI config into Claude Code) |
/list-agents (/peers) |
— | ❌ Claude Code-only (v2.1.224+, list subagents and sessions Claude can message; /subagents only configures models) |
/doctor (/checkup) |
— | ❌ Claude Code-only (installation health check) |
/web-setup |
— | ❌ Not available |
/team-onboarding |
— | ❌ Not available |
/fewer-permission-prompts |
— | ❌ Not available |
/loop (/proactive) |
— | ❌ Not available |
| — | /ask QUESTION |
🆕 Copilot CLI only (experimental) |
| — | /env |
🆕 Copilot CLI only — show loaded environment details |
| — | /chronicle [standup|tips|improve|reindex|skills create|skills review|skills status] |
🆕 Copilot CLI only (experimental) — session history tools, insights, and repository skill proposals |
| — | /research TOPIC |
🆕 Copilot CLI only |
| — | /rubber-duck [PROMPT] |
🆕 Copilot CLI only — rubber duck agent for a second opinion |
| — | /update (/upgrade) |
🆕 Copilot CLI only |
| — | /version |
🆕 Copilot CLI only |
| — | /streamer-mode (/on-air) |
🆕 Copilot CLI only — hide preview model names and quota details for streaming |
| — | /after [DELAY PROMPT] / /every [INTERVAL PROMPT] |
🆕 Copilot CLI only (experimental) — schedule a one-shot or recurring prompt/skill for this session |
| — | /app |
🆕 Copilot CLI only — launch the GitHub Copilot app (or show its download URL) |
| — | /extensions (/extension) [manage|mode] |
🆕 Copilot CLI only — manage CLI extensions |
| — | /settings [--repo|--local] [show KEY|KEY|KEY VALUE] (/config) |
🆕 Copilot CLI only — open the settings dialog, focus it on a key, set a setting inline, or print a key's value |
| — | /pr [view|create|fix|auto|automerge] |
🆕 Copilot CLI only — manage pull requests for the current branch |
| — | /limits / /limits set max-ai-credits VALUE |
🆕 Copilot CLI only — per-response AI credit limits |
| — | /move [branch|task] |
🆕 Copilot CLI only (experimental) — move uncommitted changes into a new Git worktree and switch to it |
| — | /refine [TEXT] |
🆕 Copilot CLI only — rewrite a rough prompt into a clear one for review before sending (no args cleans up the current input box) |
| — | /tuikit [colors|icons|select|tabbar] |
🆕 Copilot CLI only — preview TUIkit design-system components and color tokens |
| — | /worktree [branch|task] / /worktree new [PROMPT] |
🆕 Copilot CLI only (experimental) — move the conversation to a new Git worktree, or start a new conversation in one; Claude Code's /fork and /branch are partial analogs |
The setup script symlinks these directories so both tools share the same files:
| Directory | Shared? |
|---|---|
agents/ |
✅ Symlinked between ~/.claude/ and ~/.copilot/ |
skills/ |
✅ Symlinked (Copilot also reads ~/.claude/skills/ natively) |
commands/ |
✅ Copilot reads .claude/commands/ natively |
AGENTS.md |
✅ Copilot reads natively |
Settings (~/.claude/settings.json / ~/.copilot/settings.json) |
❌ Different schemas |
| MCP config | ❌ Different formats |
- Slash commands can't be aliased — use
/claude-helpfor the reference - System prompts (
--system-prompt,--append-system-prompt) don't exist in Copilot CLI — use.github/copilot-instructions.mdor.instructions.mdfiles - Subagent system prompts (
--append-subagent-system-prompt) can't be injected in Copilot CLI; the flag and its text are ignored with a warning - Cloud web sessions (
--cloud, and its deprecated alias--remote) map to/delegatewhen a task is provided; bare web-session launch has no Copilot CLI equivalent - MCP configs have different JSON schemas — migrate manually
- Settings (
~/.claude/settings.jsonvs~/.copilot/settings.json) have different formats. Copilot CLI moved user settings from~/.copilot/config.jsonto~/.copilot/settings.jsonand migrates the old file automatically; repository settings live in.github/copilot/settings.jsonand.github/copilot/settings.local.json - Windows symlinks may require running PowerShell as Administrator or enabling Developer Mode
- Budget limits (
--max-budget-usd) aren't available in Copilot CLI - Plugin URL loading (
--plugin-url) is a Claude Code-only feature — Copilot CLI only supports local plugins viacopilot plugin install <dir> /team-onboardingis a Claude Code–only command (generates team onboarding guides from session history) — no Copilot CLI equivalent/loop(/proactive) is a Claude Code–only command (runs a prompt repeatedly while the session stays open) — no Copilot CLI equivalent--bg/--backgroundflag (start session as a background agent) is Claude Code-only — closest: Ctrl+X then b to promote a running task to the background--teammate-modeflag (set how agent team teammates display:in-process(default),auto,tmux, oriterm2(added in v2.1.186); default changed fromautotoin-processin v2.1.179) is Claude Code-only — Copilot CLI has no agent team display modes, socpcdrops the flag with a warning--advisor <model>flag (enable the server-side advisor tool; acceptsopus,sonnet, or a full model ID — thefablealias was removed in v2.1.212 and now errors out) is Claude Code-only — no direct Copilot CLI equivalent--safe-modeflag (start with all customizations disabled for troubleshooting:CLAUDE.md, skills, plugins, hooks, MCP servers, custom commands/agents, output styles, etc.) is Claude Code-only — no direct Copilot CLI equivalent; closest is--no-custom-instructions, though the semantics differ significantly- Background agent session management (
attach,logs,respawn,rm,stopsubcommands) is Claude Code-only — Copilot CLI manages sessions via/sessionand--resume. Note:claude respawnrestarts a running or stopped background session (--allrestarts every running session) claude daemon statusis Claude Code-only — reports the state of Claude Code's background-session supervisor (version, socket directory, worker count); no Copilot CLI counterpart/code-review(which replaces/simplifyin Claude Code;/simplifyand/revieware now aliases) maps to Copilot CLI/review. The--fixflag (apply the suggested fixes), the--commentflag (post inline PR comments), and effort levels (low|medium|high|xhigh|max|ultra) have no Copilot equivalent. Copilot CLI's/review [PROMPT]takes a free-form prompt, socpcstrips those arguments when/review ...is passed as the initial prompt (e.g.cpc -p "/review high --fix pr#123"→copilot -p "/review pr#123")/ultraplanwas removed from Claude Code — use plan mode (/plan), which exists in both CLIs/autocompact [auto|<tokens>](Claude Code v2.1.221+, sets how full the context window gets before Claude Code compacts automatically and saves it to user settings) has no Copilot CLI equivalent — Copilot's/compactis a one-shot compaction command, not a threshold setting--autocompact <auto|tokens>(the session-only launch-flag form of/autocompact) is Claude Code-only —cpcdrops the flag and its value with a warning--environment <environment-id>(with-p, create a new Claude Code cloud session on a named environment and exit; self-hosted IDs look likeccpool_...; cannot be combined with--cloud) and--ref <branch>(base that cloud session's checkout on a named ref instead of localHEAD) are Claude Code-only —cpcdrops both flags and their values with a warning; the closest Copilot CLI workflow is/delegateinside a session/claude-api [migrate|managed-agents-onboard|prompt-audit]is a Claude Code-only skill (prompt-audit, v2.1.221+, flags instructions written for older models in prompts, skills, and tool descriptions and proposes fixes as a diff) — no Copilot CLI equivalent/usage-credits(renamed from/extra-usagein Claude Code) is Claude Code-only — configure usage credits to keep working when you hit a limit; closest in Copilot CLI is/usage(stats only)/run,/run-skill-generator,/verifyare Claude Code-only skills (v2.1.145+) that build, launch, and drive the project's app to observe a change running — no Copilot CLI equivalent/radiois a Claude Code-only command (opens Claude FM lo-fi radio in the browser) — no Copilot CLI equivalent/dataviz [request]is a Claude Code-only skill (v2.1.198+) offering design guidance for charts, graphs, and dashboards (picks the chart form, assigns color by role, validates the palette for colorblind safety) — no Copilot CLI equivalent/design-loginis a Claude Code-only command (authorize design-system access for/design-syncwith your claude.ai account; requires a claude.ai subscription) — no Copilot CLI equivalent/design-sync [hint]is a Claude Code-only skill (convert your repo's React design system and upload it to Claude Design so generated designs use real components) — only available on the Anthropic API (not on Amazon Bedrock, Google Cloud Vertex AI, or Microsoft Foundry) and no Copilot CLI equivalent/background(/bg) slash command (detach current session to background) is Claude Code-only — closest: Ctrl+X then b/goal [condition|clear](Claude Code: set a goal for a multi-turn agentic loop) maps to Copilot CLI's/autopilot [OBJECTIVE](alias/goal, experimental) — with no objective it infers intent from context, and--max-ai-credits Ncaps autopilot spend;/goal on//goal offtoggle autopilot without setting an objective, so Claude Code'sclear/stop/off/cancelvariants map to Copilot's/goal off. This closes a previous gap where Copilot had no equivalent for Claude Code's autonomous goal-tracking/stopslash command (stop current background session while attached) is Claude Code-only — no Copilot CLI equivalent/scroll-speedis a Claude Code-only UI command — no Copilot CLI equivalentclaude install [version]is Claude Code-only — usecopilot update(no version pinning)claude setup-tokenis Claude Code-only — usegh auth tokenfor CI/script authenticationclaude project purge [path]is Claude Code-only — use/session cleanupor/session prunein Copilot CLI/tui,/focus,/heapdump,/recapare Claude Code–only UI/debugging commands — no Copilot CLI equivalents/ultrareview [PR]is a Claude Code–only command (deep cloud-based code review) — use/reviewin Copilot CLI for local reviews/keep-alive [on|off|busy|DURATION](/caffeinate) is a Copilot CLI-only slash command (prevent machine sleep; duration accepts bare numbers,30m,2h,1d) — no Claude Code equivalent/research,/update(/upgrade),/versionare Copilot CLI-only slash commands — Claude Code's closest analog to/researchis/deep-research <question>(best-effort mapping; the research pipelines differ)/bug [report]is now the primary bug-reporting command in Claude Code, with/shareas its alias (before v2.1.212 both/bugand/sharewere aliases of/feedback);/feedbackstill opens the same dialog, and in the VS Code extension/bugopens the extension's own feedback dialog (v2.1.229+). The/sharealias collides in name with Copilot CLI's/share [link|off|file|html|gist|research] [...](session sharing and export). Same name, different action —/sharesubmits a bug report in Claude Code but shares or exports the session in Copilot CLI/import [codex|gemini] [--dry-run] [--yes]is a Claude Code-only command (v2.1.213+) that imports another coding agent's configuration — instruction files, MCP servers, commands, subagents, and skills — from OpenAI Codex or Google Gemini CLI. Not available on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, or Claude Platform on AWS.--dry-runpreviews without writing,--yesskips the picker. Copilot CLI is not a supported source, so there is nothing forcpcto map/list-agents(/peers) is a Claude Code-only command (v2.1.224+) that lists the subagents and other Claude Code sessions Claude can message, and is only available when cross-session messaging is enabled. Copilot CLI has no equivalent —/subagents(/agents) configures subagent models, and thelist_agentstool only covers background agents started from the current session/doctor(alias/checkup) is a Claude Code-only command (installation and auto-updater health check) — no Copilot CLI equivalent/deep-research <question>is a Claude Code workflow (fan out web searches, cross-check sources, synthesize a cited report) — thecpcwrapper treats it as a best-effort mapping to Copilot CLI's/research TOPIC, which uses GitHub search + web sources/advisor [model|off]is a Claude Code-only command (enable/disable the server-side advisor tool; acceptsopus,sonnet, or a full model ID — thefablealias was removed in v2.1.212) — no Copilot CLI equivalent/cd <path>(Claude Code v2.1.169+, move the session to a new working directory) maps to Copilot CLI's/cd [PATH](combined with/cwd)/reload-skills(Claude Code v2.1.152+, re-scan skill/command directories without restarting) maps to Copilot CLI's/skills reload/forkchanged semantics again in Claude Code v2.1.212 —/fork [prompt]now copies the current conversation into a new background session while the original keeps running (the two are independent afterwards), which matches Copilot CLI's own/fork [NAME]//branch [NAME](experimental). The forked-subagent behavior it had on v2.1.161–v2.1.211 moved to/subtask/subtask <task>(Claude Code v2.1.212+) spawns a forked subagent that inherits the full conversation and works on the task while you keep working; the result returns to the conversation when it finishes. Copilot CLI has no 1:1 equivalent — the closest is/fleet <task>(parallel subagent execution)/search [QUERY](/find) is a Copilot CLI-only experimental command (search the conversation timeline) — no Claude Code equivalent--effort/--reasoning-effortis now supported in both CLIs and passes straight through — Copilot CLI accepts the same five levels as Claude Code (low,medium,high,xhigh,max;maxis the highest-depth tier for Anthropic models), socpcforwards it to Copilot's--effort=LEVELunchanged. Claude Code'sultracodelevel (v2.1.203+:xhighreasoning + automatic workflow orchestration) has no Copilot equivalent —cpcmaps it tomaxwith a warning--ax-screen-reader(Claude Code v2.1.181+, renders screen-reader-friendly output and forces the classic renderer) maps to Copilot CLI's--screen-reader--worktree/-w [NAME](create or reuse an isolated Git worktree) now maps to Copilot CLI's--worktree[=NAME](-w) flag —cpcforwardsclaude --worktree NAME→copilot --worktree=NAME. Copilot's worktree flag is experimental, so enable Copilot CLI's experimental mode for it to take effect;cpcprints a warning as a reminder/worktreeis a Copilot CLI-only slash command (experimental)./worktree [branch|task]creates a new Git worktree and switches the current conversation to it, leaving uncommitted changes behind;/worktree new [PROMPT]starts a new conversation in a new worktree and leaves the current conversation and its working directory unchanged (newis a reserved keyword and can't be a literal branch name). Claude Code has no exact equivalent —/forkand/branchcopy the conversation but don't create a worktree/voicenow exists in both CLIs with different arguments — Claude Code's/voice [hold|tap|off]selects the input style, while Copilot CLI's/voice [on|off|models|devices]toggles voice mode, browses voice models, or picks the input device (microphone). Onlyon/offoverlap, so drophold/tapwhen switching-ris now documented as the shorthand for--resumein Copilot CLI, matching Claude Code.cpcforwards both forms as--resume=SESSION(Copilot spells the flag--resume[=VALUE], so the value must be attached with=); bare--resume/-ropens the session picker, which requires a TTY/configgained inlinekey=valuesupport in Claude Code v2.1.181 (e.g./config thinking=false, also works in-pmode). Copilot CLI now documents/configas an alias of/settings, so the command name matches — use a space instead of=(/config thinking false)/clikit [COMPONENT]is a Copilot CLI-only internal/debug command — no Claude Code equivalent/tuikit [colors|icons|select|tabbar]is a Copilot CLI-only internal/debug command (preview TUIkit design-system components and color tokens) — no Claude Code equivalent/envis a Copilot CLI-only slash command (show loaded environment details) — no Claude Code equivalent/rubber-duck [PROMPT]is a Copilot CLI-only slash command (consult the rubber duck agent for a second opinion on plans, code, and tests) — no Claude Code equivalent/sandboxexists in both CLIs but with different syntax — Claude Code's/sandboxtoggles sandbox mode, while Copilot CLI's/sandbox [config|status|policy|enable|disable]manages OS-level sandboxing for shell commands, MCP/LSP servers, and built-in file/web tools:config(or bare/sandbox) opens the settings dialog,statusreports whether sandboxing is enabled,policyshows the effective path grants, denials, and network access, andenable/disabletoggle it directly (the olderenable/disableusage still works). Copilot CLI also has--sandbox/--no-sandboxlaunch flags (experimental mode only) that enable or disable the OS-level shell sandbox for a single session without changing the saved setting (handy with-p) — Claude Code has no launch-flag equivalent, andcpcpasses both through unchanged/permissionsdiffers between the CLIs — Claude Code manages persistent allow/ask/deny rules with/permissions; Copilot CLI's/permissions [default|assisted|allow-all|show]now switches between permission modes (default,assisted,allow-all), and/permissions resetclears in-memory tool and path approvals./allow-all(/yolo) is documented as an alias for/permissions allow-all— itsonoption was replaced withauto(/allow-all [off|auto|show])/compact [FOCUS-INSTRUCTIONS]now accepts optional focus instructions in both CLIs (e.g./compact focus on the auth module);cpcpasses in-session slash commands through unchanged/chronicleis a Copilot CLI-only experimental command —standupsummarizes recent work,tipsandimprovesurface usage insights and propose instruction-file changes,reindexrebuilds the session index, andskills create|review|statuspropose, review, and report on repository skills. No Claude Code equivalent/streamer-mode(/on-air) is a Copilot CLI-only command that hides preview model names and quota details for streaming — no Claude Code equivalent--connect[=SESSION-ID]is a Copilot CLI-only flag for remote session joining — no direct Claude Code equivalent (see--remoteand--teleport)--attachment PATHis a Copilot CLI-only flag that attaches a file to the initial prompt (image files accepted if model/org policy allows vision input; repeatable).cpcpasses it through and consumes its value, e.g.cpc --attachment image.png "describe this". Claude Code has no launch-flag equivalent--context default|long_contextis a Copilot CLI-only flag that sets the context window tier (overrides the persisted setting).cpcpasses it through unchanged; Claude Code manages context via/compactand/contextinstead-C DIRECTORYis a Copilot CLI-only flag that changes the working directory before launch.cpcpasses it through unchanged; Claude Code uses--add-dir/--worktreeinstead--acp,--allow-all-mcp-server-instructions,--enable-memory, and--extension-sdk-path DIRECTORYare Copilot CLI-only flags with no Claude Code equivalent —cpcpasses them through as-is--mode=MODEand--planare Copilot CLI-only flags —cpcmaps--permission-mode plan→--plan; Claude Code's--permission-mode manualalias maps likedefaultand needs no Copilot flagCOPILOT_SUBAGENT_MAX_DEPTH(default4, range1–128) andCOPILOT_SUBAGENT_MAX_CONCURRENT(default32, range1–256) are Copilot CLI-only environment variables for tuning subagent behaviorGITHUB_COPILOT_PROMPT_MODE_EXTENSIONS,GITHUB_COPILOT_PROMPT_MODE_REPO_HOOKS, andGITHUB_COPILOT_PROMPT_MODE_WORKSPACE_MCPcontrol whether prompt mode (-p) loads repository-provided extensions, hooks, and MCP sources (all disabled by default for security). Set totrueexplicitly when usingcpc -pwith repo hooks or MCP serverscopilot logoutsubcommand has been removed — use/logoutin an interactive session instead/security-reviewis now a direct match — both Claude Code and Copilot CLI (/security-review [PROMPT]) run a security review agent that analyzes pending changes for vulnerabilities/after [DELAY PROMPT]and/every [INTERVAL PROMPT]are Copilot CLI-only experimental commands (schedule a one-shot or recurring prompt, skill, or schedulable slash command for the session; no args opens the schedule manager) — Claude Code's/schedule(/routines) only partially overlaps/extensions(/extension)[manage|mode]is a Copilot CLI-only command for managing CLI extensions — Claude Code's/pluginis a conceptually similar but distinct system/appis a Copilot CLI-only command (launch the GitHub Copilot desktop app, or show its download URL) — no Claude Code equivalent/settings [--repo|--local] [show KEY|KEY|KEY VALUE](alias/config) opens the Copilot CLI settings dialog, opens it focused on a specific key, sets a setting inline, or prints a key's current value (secret-named values are masked).--repoand--localwrite to.github/copilot/settings.json/settings.local.jsoninstead of user settings, and only repo-overridable keys can be set that way/subagents(alias/agents) configures default and per-agent subagent models in Copilot CLI — a richer counterpart to Claude Code's/agentsthan/agent/mcpgained asearchsubcommand in Copilot CLI (/mcp [show|add|edit|delete|disable|enable|auth|reload|search] [SERVER-NAME]) for searching available MCP servers/refine [TEXT]is a Copilot CLI-only slash command (rewrite a roughly composed prompt into a clear one for review before sending; no args — viaCtrl+Xthen/refine— cleans up the current input box) — no Claude Code equivalent, andcpccan't translate it because it is in-session only$(a lone$on an empty prompt) is a Copilot CLI-only shortcut that hands the terminal over to a real interactive shell ($SHELLon Unix,%COMSPEC%on Windows), suspending the CLI UI so job control, full-screen apps, tab completion, and colors work natively. Disabled by default — enable it with theshellShortcutsetting; only available for local, trusted, idle sessions on a real TTY, and it can be disabled in enterprise managed settingscopilot plugins [list|enable|disable|remove] [--plugin|--mcp|--skill] NAME(note the plural) is a Copilot CLI-only subcommand for non-interactively inspecting, enabling, disabling, or uninstalling plugins, MCP servers, and skills.enable/disablepersist to configuration;removecan only delete personal and project skills (disable plugin-provided or built-in ones instead).cpc plugins ...passes through tocopilot plugins ...(cpc plugin ...still maps tocopilot plugin ...)mai-code-1-flashis a Copilot CLI model (fast, adaptive coding tasks); pass it through withcpc --model mai-code-1-flashgemini-3.6-flashis a Copilot CLI model (fast Google Gemini responses), joininggemini-3.1-pro-previewandgemini-3.5-flash; pass it through withcpc --model gemini-3.6-flashCOPILOT_MCP_TOOL_CACHE(set tofalseto disable loading and persisting local MCP server tool snapshots for the whole process; existing cache files are left untouched) andCOPILOT_TASK_WAIT_TIMEOUT_SECONDS(default600; maximum seconds-p, including-p --autopilot, waits for pending background agents or shell commands before exiting —0exits immediately) are Copilot CLI-only environment variables.COPILOT_TASK_WAIT_TIMEOUT_SECONDSis worth setting for scriptedcpc -ppipelinesCOPILOT_COMPUTER_USE_LINUX(opt in to thecomputer-useMCP server on supported Linux distributions; not available on Alpine Linux / musl libc) andCOLORFGBG(fallback for dark/light terminal background detection) are no longer listed in the Copilot CLI reference docs — they may still work, but treat them as undocumented.COPILOT_ENABLE_HTTP2(set to1/trueto opt into HTTP/2 transport; HTTP/1.1 is the default) remains a documented Copilot CLI-only environment variablecopilot help [TOPIC]now supports asandboxtopic in addition tobilling,config,commands,environment,logging,monitoring,permissions, andproviders
This project has two parts:
Installed via copilot plugin install. Provides:
/claude-helpskill — type it in any Copilot session for the full mapping reference- sessionStart hook — shows a reminder that the plugin is active
A standalone Python script (not part of the plugin — plugins can't intercept CLI invocation). It:
- Checks for subcommands (
update,auth login,plugin, etc.) - Translates flags that differ between the two CLIs
- Warns on flags with no Copilot equivalent
- Passes through all unknown/matching flags unchanged
- On Unix, calls
os.execvp("copilot", ...)to replace the process — TTY, stdin, and signals are inherited transparently. On Windows, usessubprocess.run()and forwards the exit code
Why can't cpc be a plugin? Copilot CLI plugins can provide skills, agents, hooks, and MCP servers — but they cannot intercept or modify how copilot itself is invoked from the shell. Flag translation must happen before copilot starts, which only an external wrapper can do.