Skip to content
Canopy is in pre-release. These docs describe the product at its public launch — commands, tool names, and integration examples reflect what you'll see once binaries ship. Join the waitlist →

Use Canopy Alongside GitHub Copilot

GitHub Copilot and Canopy solve different problems. Copilot generates code completions as you type. Canopy answers structural questions about the codebase — dependents, blast radius, ownership, test coverage, architecture — through one tool, canopy_answer. They don’t conflict; they complement each other.

GitHub Copilot:

  • Autocompletes the line you’re typing
  • Suggests function bodies based on surrounding context
  • Generates boilerplate from a comment or type signature
  • Works in the editor inline, without switching context

Canopy (via canopy_answer):

  • Answers “what depends on src/lib/payments.ts?” before you rename a function
  • Answers “what calls createPayment?” before you change a signature
  • Answers “what should I know before editing src/lib/payments.ts?” — a pre-edit dossier covering dependents, ownership, and tests
  • Answers “who last changed src/lib/payments.ts?” and “what tests cover src/lib/payments.ts?”
  • Answers “architecture overview” across the whole repo

They operate at different levels: Copilot is line-level, Canopy is codebase-level.

Use Copilot for inline completions in VS Code or any editor with the Copilot extension. Use Canopy through an MCP-connected assistant — Claude Code, Cursor, or Continue — or directly from the shell with canopy answer "<question>".

A typical workflow:

  1. Before a refactor, ask canopy_answer: “what should I know before editing src/lib/payments.ts?” Review the dependents and findings.
  2. Plan the refactor with your assistant, informed by Canopy’s structural data.
  3. Implement using Copilot’s inline completions for the actual edits.
  4. After the refactor, ask “what depends on src/lib/payments.ts?” again and confirm every dependent was updated.

This is not a rigid ceremony — skip Canopy for trivial edits (typo fixes, documentation changes). Use it for anything that touches an exported interface, moves a file, or restructures shared code.

Canopy runs as an MCP server — it has no VS Code extension, no autocomplete integration, and no inline suggestions. It doesn’t compete with Copilot for the completion popup or interfere with Copilot’s inference. You can have both active simultaneously.

If you’re using Copilot in VS Code, run Canopy via:

  • VS Code + Continue — an AI chat panel that supports MCP
  • Claude Code (separate terminal) — run alongside VS Code
  • Cursor (separate window) — Cursor supports both Copilot and MCP simultaneously
  • The shell — run canopy answer with the same question

Copilot Chat can answer questions about your codebase from its own context. For questions like “what files import this component?” it works from a probabilistic model of the code, not a precise dependency graph.

Canopy answers the same question from a prebuilt structural index — a deterministic graph traversal. If you need precision (“give me every file that will break if I delete this export”), ask canopy_answer. If you want a rough sketch or a natural-language explanation, Copilot Chat is faster.

The two compose: get the precise list from Canopy, then hand it to your assistant for a refactoring plan.

Scenario: Rename createPayment to initiatePayment in src/lib/payments.ts.

Step 1 — Canopy analysis (via your assistant or the shell):

Terminal window
canopy answer "what depends on `src/lib/payments.ts`?"
canopy answer "what tests cover `src/lib/payments.ts`?"

Step 2 — Plan: With the dependent list in hand, decide the safest order to update call sites atomically.

Step 3 — Implement with Copilot: Open each dependent file. Use Copilot’s completions to make the rename changes quickly; it learns from the pattern you establish in earlier files.

Step 4 — Confirm:

Terminal window
canopy answer "what calls `initiatePayment`?"

Every former call site should now appear under the new name. In CI, canopy ci --fail-on-p0 (Pro tier) catches broken imports the rename left behind.

Asking Copilot Chat for dependency information Copilot Chat’s answers about “what imports this file” are approximate — it works from training data and open files, not a real-time graph. For accurate dependents before a breaking change, ask canopy_answer: “what depends on src/lib/payments.ts?”

Running canopy serve while Copilot is active No conflict. canopy serve is a background MCP process — it doesn’t interact with VS Code’s extension layer or affect Copilot.