Copilot cli agent
Skill richfrem/agent-plugins-skills/plugins/cli-agents/skills/copilot-cli-agent
Copilot CLI sub-agent system for dispatching tasks and persona-based analysis to GitHub Copilot models. Use for task delegation (agent reads/writes files directly), security audits, architecture reviews, or any work requiring a fresh model context.From its SKILL.md
npx -y skills add richfrem/agent-plugins-skills --skill copilot-cli-agentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
15.0 KB, ~4.1k tokens by cl100k_base, as published. Nobody here has run it
⚖️ Execution Contract
See
references/execution-contract.md(full rules) andreferences/backend-capabilities.md(backend selection).Key rules: (1) One backend per task — no silent fallback. (2) Run
output-validatororself-criticwhen output quality is uncertain. (3) Architecture/high-risk tasks requirearchitect-review→red-team-reviewer→debate-synthesizer. (4) Backend failure → halt and log toreferences/map-debt.md. No workarounds.
🎭 Identity: The Sub-Agent Dispatcher
You, the Antigravity agent, dispatch specialized analysis tasks to Copilot CLI sub-agents.
[!IMPORTANT] Billing model: AI Credits (token-based, effective June 1 2026). All models consume AI credits at per-token rates — there are no longer "included" or "free" models for chat/agent interactions. Code completions and Next Edit Suggestions remain unlimited for paid plans. Copilot CLI interactive default is
claude-sonnet-4.6;run_agent.pydefaults togpt-5-minifor cost efficiency. See 💰 AI Credits & Cost Discipline andreferences/copilot-models.jsonfor full pricing.
✅ Minimal Working Code Review Agent Pattern
To ensure Copilot CLI behaves as a specialized persona rather than a generic responder, always embed the persona and source material directly into the prompt flag (-p).
copilot -p "$(cat agents/persona.md)
---SOURCE CODE---
$(cat target.py)
---INSTRUCTION---
Perform a full code review. Use severity levels: 🔴 CRITICAL, 🟡 MODERATE, 🟢 MINOR.
You are operating as an isolated sub-agent.
Do NOT use tools. Do NOT access filesystem." > review.md
🛠️ Orchestration Pattern: run_agent.py (Cross-Platform)
For reusable sub-agent execution, use the provided Python orchestrator which handles temp file assembly and prompt concatenation reliably across Windows, macOS, and Linux.
# Signature:
python ./scripts/run_agent.py <PERSONA_FILE> <INPUT_FILE> <OUTPUT_FILE> "<INSTRUCTION>" [MODEL] [isolated]
# ^ ^
# optional optional (default: false)
Two dispatch modes
Task dispatch (default — agent has full filesystem access via --yolo):
# Agent reads/writes files directly. Pass the task prompt as INPUT_FILE.
python plugins/cli-agents/scripts/run_agent.py \
/dev/null \
tasks/todo/copilot_prompt_0025.md \
temp/copilot_output_0025.md \
"Implement all changes specified in the prompt." \
claude-sonnet-4.6
Isolated analysis (no filesystem tools — text output only):
# Pass isolated=true as 6th arg. Agent generates text output only.
python plugins/cli-agents/scripts/run_agent.py \
agents/security-auditor.md target.py security.md \
"Find vulnerabilities." gpt-5-mini true
Prompt assembly (handled automatically by run_agent.py)
| Inputs present | Assembled prompt |
|---|---|
| persona + input | persona / ---SOURCE--- input / ---INSTRUCTION--- instruction |
| input only (task dispatch) | input / ---INSTRUCTION--- instruction |
| instruction only (heartbeat) | instruction |
Passing /dev/null for persona or input skips that block cleanly.
🔀 Model Selection Guide
Full model data (identifiers, per-token costs, context windows):
references/copilot-models.json
Default for run_agent.py: gpt-5-mini (cheapest, best for most tasks)
# No model arg = gpt-5-mini (25 credits/1M input, 200 credits/1M output)
python ./scripts/run_agent.py agents/security-auditor.md target.py security.md \
"Find vulnerabilities."
Value pick for coding tasks: mai-code-1-flash (new Jun 2026)
# Microsoft MAI-Code-1-Flash — Microsoft claims similar quality to claude-sonnet-4.6 at ~4× lower cost
# Input: 75 credits/1M Output: 450 credits/1M (vs Sonnet: 300 input / 1500 output)
python ./scripts/run_agent.py agents/security-auditor.md target.py security.md \
"Audit for OWASP Top 10 vulnerabilities." mai-code-1-flash
Absolute cheapest: gpt-5.4-nano
# GPT-5.4 nano: 20 credits/1M input, 125 credits/1M output — cheapest in catalog
python ./scripts/run_agent.py /dev/null /dev/null heartbeat.md \
"HEARTBEAT CHECK: Respond HEARTBEAT_OK only." gpt-5.4-nano
Complex reasoning / multi-file: claude-sonnet-4.6
# 300 credits/1M input, 1500 credits/1M output. Batch everything into one call.
python ./scripts/run_agent.py /dev/null /tmp/copilot_prompt.md /tmp/copilot_output.md \
"Generate all files exactly as specified using ===FILE:=== delimiters." \
claude-sonnet-4.6
Model Identifiers & Credit Costs (June 2026 — AI Credits billing)
[!NOTE] 1 AI Credit = $0.01 USD. All costs are per 1 million tokens. Copilot CLI interactive session default is
claude-sonnet-4.6;run_agent.pydefaults togpt-5-mini.
| Model | Identifier | Input cr/1M | Output cr/1M | Notes |
|---|---|---|---|---|
| GPT-5.4 nano | gpt-5.4-nano | 20 | 125 | Cheapest overall |
| GPT-5 mini | gpt-5-mini | 25 | 200 | Best default — fast, cheap |
| Raptor mini | raptor-mini | 25 | 200 | GitHub fine-tuned, same cost as gpt-5-mini |
| Gemini 3 Flash | gemini-3-flash | 50 | 300 | Preview |
| MAI-Code-1-Flash | mai-code-1-flash | 75 | 450 | New Jun 2026 — code-focused, 256K ctx, no cache write cost |
| GPT-5.4 mini | gpt-5.4-mini | 75 | 450 | Same price tier as MAI-Code-1-Flash |
| Claude Haiku 4.5 | claude-haiku-4.5 | 100 | 500 | Cheapest Anthropic; +125 cr/1M cache write |
| Gemini 2.5 Pro | gemini-2.5-pro | 125 | 1000 | Good reasoning at moderate cost |
| Gemini 3.5 Flash | gemini-3.5-flash | 150 | 900 | Better via agy CLI |
| GPT-5.3-Codex | gpt-5.3-codex | 175 | 1400 | Code-specialist, high output cost |
| Gemini 3.1 Pro | gemini-3.1-pro | 200 | 1200 | Preview; long ctx doubles cost above 200K |
| GPT-5.4 | gpt-5.4 | 250 | 1500 | Long ctx doubles above 272K |
| Claude Sonnet 4.6 | claude-sonnet-4.6 | 300 | 1500 | Copilot default — best reasoning; +375 cr/1M cache write |
| Claude Sonnet 4.5 | claude-sonnet-4.5 | 300 | 1500 | Prefer 4.6 (same price, newer) |
| Claude Opus 4.8 | claude-opus-4.8 | 500 | 2500 | Highest Anthropic quality; +625 cr/1M cache write |
| Claude Opus 4.7 | claude-opus-4.7 | 500 | 2500 | Same price as Opus 4.8; prefer 4.8 |
| Claude Opus 4.6 | claude-opus-4.6 | 500 | 2500 | Same price as Opus 4.8 |
| GPT-5.5 | gpt-5.5 | 500 | 3000 | Very expensive output; avoid unless justified |
| Claude Fable 5 | claude-fable-5 | 1000 | 5000 | UNAVAILABLE — currently withdrawn |
[!WARNING] Model identifiers use dots not dashes in version numbers —
claude-sonnet-4.6notclaude-sonnet-4-6. Verify current identifiers with/modelin an interactive session before any expensive run. Deprecated:gpt-4.1,gpt-4o,claude-sonnet-4,gpt-5.2/gpt-5.2-codex.
🎭 Persona Registry (agents/)
| Persona | Use For |
|---|---|
security-auditor.md | Red team, vulnerability scanning, threat modeling |
refactor-expert.md | Optimizing code for readability, performance, and DRY |
architect-review.md | Assessing system design, modularity, and complexity |
⚠️ CLI Best Practices & Failure Modes
1. ❌ Why Stdin Piping Fails
Using cat code.py | copilot -p "review this" is unreliable. The CLI often prioritizes the prompt flag and ignores the piped input. Always embed the code inside the command string as shown in the Core Pattern.
2. ❌ Empty Output (Background Runs)
Large prompt expansions (e.g., $(cat ...) > 10KB) can silently fail when run in the background (&).
- Fix: Use a temporary file for the combined prompt (as implemented in
run_agent.py). - Fix: Run commands sequentially and verify output size with
wc -l.
🧩 Force Agent Behavior & Model
Always add these instructions to your dispatch prompt to prevent the sub-agent from attempting to use external tools. Default to gpt-5-mini for cost efficiency; use mai-code-1-flash for code tasks where quality matters.
4. 💡 Improve Quality
To dramatically improve review results, add:
"Think step-by-step internally, but output only final results. Be strict and critical. Do not be polite."
💰 AI Credits & Cost Discipline
[!CAUTION] AI Credits billing (effective June 1, 2026): all models consume credits at per-token rates. 1 Credit = $0.01 USD. Credits do NOT roll over monthly. When credits are exhausted, Copilot stops — no fallback model. Set additional-spend cap to $0 in GitHub billing settings to hard-stop at your allotment.
Code completions and Next Edit Suggestions are excluded — still unlimited for paid plans. Annual plan subscribers stay on legacy PRU pricing until their plan expires.
Monthly Credit Allotments
| Plan | $/month | Credits/month | Notes |
|---|---|---|---|
| Copilot Pro | $10 | 1,000 | Individual |
| Copilot Pro+ | $39 | 3,900 | Individual |
| Copilot Business | $19/user | 1,900 (pooled) | Business (promotional: 3,000 Jun–Aug 2026) |
| Copilot Enterprise | $39/user | 3,900 (pooled) | Enterprise (promotional: 7,000 Jun–Aug 2026) |
Model Strategy
| Use case | Model | Reasoning |
|---|---|---|
| Heartbeat / connectivity check | gpt-5.4-nano | Cheapest (20 cr/1M in) |
| Default / high-frequency tasks | gpt-5-mini | 25 cr/1M — best routine default |
| Code analysis / code review | mai-code-1-flash | 75 cr/1M — Microsoft claims Sonnet-level quality for code at 4× lower cost |
| Claude quality, cost-efficient | claude-haiku-4.5 | 100 cr/1M — best Claude reasoning per credit |
| Complex reasoning / multi-file generation | claude-sonnet-4.6 | 300 cr/1M — Copilot's default; best for nuanced work |
| Critical / highest-quality tasks only | claude-opus-4.8 | 500 cr/1M — 5× more than Sonnet; justify before using |
| Avoid | gpt-5.5 (long ctx), claude-fable-5 | Extremely expensive; Fable 5 currently unavailable |
Rules for All Model Calls (not just premium)
- Plan before calling; batch for output quality. Two distinct reasons to minimize requests:
- Planning reduces wasted tokens — a well-specified prompt avoids correction requests that each re-pay full context cost.
- Batching improves coherence — one call generating 7 files produces internally consistent output that 7 separate calls won't.
- Use structured output delimiters so one response parses into multiple files:
===FILE: [relative/path/to/file]=== [complete file content] ===ENDFILE=== - Verify delimiter coverage before calling. Count expected
===FILE:===markers in your prompt — confirm the same count appears in output before parsing. - No follow-up requests for minor gaps. Fill small omissions yourself. Only make a second high-cost request if a whole file is entirely missing.
- Heartbeat with
gpt-5.4-nanoorgpt-5-mini. Run connectivity checks against the cheapest model — verifies Copilot CLI is working without spending meaningful credits. - Do NOT background (
&) expensive model calls. Large prompts can silently produce empty output in background processes. Run foreground and verify withwc -l(expect 200+ lines for multi-file output).
Premium Model Invocation Pattern
# Write the full multi-file prompt to a temp file first
cat > /tmp/copilot_prompt.md << 'PROMPT_EOF'
[Your complete, dense, multi-file generation prompt]
PROMPT_EOF
# Dispatch ONE request — all output in a single call
python ./scripts/run_agent.py \
/dev/null \
/tmp/copilot_prompt.md \
/tmp/copilot_output.md \
"Generate all files exactly as specified using ===FILE:=== delimiters." \
claude-sonnet-4.6
# Verify output is substantial before parsing
wc -l /tmp/copilot_output.md # expect 200+ lines for multi-file output
Quality Gate Before Parsing
# Confirm all expected FILE markers are present before assuming success
grep -c '===FILE:' /tmp/copilot_output.md # should equal your expected file count
✅ Functional CLI Heartbeat (Mandatory: "All Signals Go")
Before initiating major orchestrations or long-running iterative loops (e.g., Triple-Loop), you MUST perform a zero-shot heartbeat check to verify the host CLI has end-to-end connectivity and correct model defaults.
Heartbeat Pattern:
python .agents/skills/copilot-cli-agent/scripts/run_agent.py \
/dev/null /dev/null ./HEARTBEAT_MD.md \
"HEARTBEAT CHECK: Respond with 'HEARTBEAT_OK' only."
# Verification Logic:
[ -s ./HEARTBEAT_MD.md ] && grep -q "HEARTBEAT_OK" ./HEARTBEAT_MD.md && echo "HEARTBEAT_OK" || echo "HEARTBEAT_FAIL"
Logging Requirement: The result of this heartbeat (Success or Failure) MUST be explicitly written to the session log before proceeding. If it fails, halt execution and report the error details (e.g., 401 Unauthorized, 429 Rate Limit, or Network Error).
✅ Smoke Test
python ./scripts/run_agent.py agents/refactor-expert.md target.py output.md "Refactor this code."
Examine output.md. It should contain ONLY the refactored code and a brief 3-bullet summary.
Gotchas (field-tested)
- Model identifiers use dots, not dashes.
claude-sonnet-4.6works;claude-sonnet-4-6returns "model not available". Always use dot notation for Claude version numbers in Copilot CLI. - Always verify the model identifier before a premium batch run. Run
copilot --yolo --model <id> -p "HEARTBEAT_OK"first — if it echoes back any response, the identifier is valid. Do not assume identifiers from docs or memory are current. run_agent.pypasses the 5th argument directly to--model. If the identifier is wrong, the script exits with a non-zero code and produces no output file. Check exit code and output file size before claiming success.- Background premium runs can silently fail with empty output. Never background (
&) a premium model call. Run foreground and verify withwc -l output.md— expect 200+ lines for multi-file output. - Heartbeat with
gpt-5-mini, not a credit-consuming model. It's an included model — connectivity checks cost nothing. permissions.disableBypassPermissionsModesetting (v1.0.55+) — can lock out--yolo/allow-all mode. If headless dispatch stops working, check this setting hasn't been set totrueby an org admin.- Recursive skill/agent discovery (v1.0.55+) — Copilot CLI now discovers agents and skills in subdirectories, not just the root
.agents/level. Nested layouts work. - Per-MCP-server token usage now visible in
/mcpand/context— use this to audit which MCP tools are consuming credits.
What ships with it: 29 files
80.2 KB alongside SKILL.md, 2 of them executable
evals/
- evals.json1.2 KB
- experiments/2026-03-13_182514/results.json35.3 KB
- experiments/2026-03-13_182514/results.tsv10.5 KB
- experiments/2026-03-13_182514/timing.json1.8 KB
- experiments/2026-03-13_183006/results.json3.0 KB
- experiments/2026-03-13_183006/results.tsv327 B
- experiments/2026-03-13_183006/timing.json273 B
- experiments/2026-03-13_183028/results.json5.6 KB
- experiments/2026-03-13_183028/results.tsv1.5 KB
- experiments/2026-03-13_183028/timing.json453 B
- experiments/2026-03-13_183345/logs/improve_iter_1.json9.6 KB
- experiments/2026-03-13_183345/results.json5.3 KB
- experiments/2026-03-13_183345/results.tsv778 B
- experiments/2026-03-13_183345/timing.json453 B
- .lock.hashes585 B
- results.tsv293 B
references/
scripts/
- run_agent.pyruns29 B
- acceptance-criteria.md866 B
- fallback-tree.md1.1 KB
- output.md329 B
- output_restored.md666 B
- requirements.txt22 B
- target.pyruns292 B