The Eight Surfaces of Copilot: Where It Lives
A map of every place Copilot appears, and which one to reach for when.
What You Will Learn
- Name all eight Copilot surfaces without looking them up.
- State which surface is best suited for each of five common tasks.
- Explain the difference between interactive and autonomous Copilot surfaces.
- Identify which surfaces require which plan tiers.
- Choose the right entry point for a task instead of defaulting to one surface.
Why This Matters
Most beginners discover one surface — usually inline completions — and use it for everything. That works for a week or two, then they hit a wall: "why can't Copilot see my other file?", "can I use this from the terminal?", "why is the chat giving me generic answers?". The wall is always the same: they're using the wrong surface for the task.
Knowing the eight surfaces is like knowing the eight tools in a chef's knife roll. You don't need all eight for every meal — but you need to know which one to grab when.
Concept Explained
A "surface" is a place where Copilot appears and where you interact with it. Each surface has its own context model, latency profile, and affordances. Some are interactive (you type, it responds); one is autonomous (you delegate, it works in the background); two are programmatic (you call them via code).
The eight surfaces, in order of typical beginner exposure, are:
- Inline completions — ghost-text suggestions inside your editor's text buffer.
- Copilot Chat — a conversational side panel in your editor and on github.com.
- Slash commands — short, scoped instructions prefixed with
/(e.g./explain,/tests). - The
copilotCLI — a standalone terminal command (replaced the deprecatedgh copilotextension in October 2025). - Copilot on GitHub.com — chat, pull-request summaries, code review, and issue triage in the browser.
- Copilot Spaces — scoped context containers (GA September 2025) that group repos, docs, and files.
- The Copilot coding agent — an autonomous developer (GA September 2025) that you assign an issue to and that works in a branch.
- Copilot Extensions —
@-participants that call external services (e.g.@azure,@github).
There is also a REST API surface, but it is administrative (seat management, usage metrics, policy), not a coding assistant. We list it as the "eighth-plus" surface and cover it in the Professional phase.
How It Works
All eight surfaces share the same underlying model fabric — they differ in context assembly and interaction shape:
- Inline completions fire on every keystroke (after a debounce), with context = current file + recent edits. Latency budget: ~300ms before the suggestion feels laggy.
- Chat fires on each message, with context = current selection + attached files + chat history. Latency budget: a few seconds for the first token, streaming thereafter.
- Slash commands are pre-baked prompts that ship in Chat and the CLI. They add structure ("explain", "write tests", "fix this") without you typing the full instruction.
- The CLI fires on each command, with context = your current shell session + the files you point it at. It can edit files directly, which the editor's Chat cannot do without your confirmation.
- GitHub.com chat fires on each message, with context = the repo or issue you're viewing in the browser.
- Spaces pre-assemble a context bundle (repos + docs + files) that persists across conversations, so you don't have to re-attach context every time.
- The coding agent runs autonomously. You assign it an issue; it plans, edits files across the repo, runs tests if available, and opens a PR. Latency budget: minutes to hours.
- Extensions are triggered by typing
@+ a participant name in Chat. They fetch real-time data from an external service and inject it into the model's context.
The mental shortcut: surfaces on the left of this list are interactive and fast; surfaces on the right are batched, scoped, or autonomous. Pick accordingly.
Step-by-Step Tutorial
1. Map each surface to its primary use
For each surface, decide what it is best at. A reasonable starting point:
- Inline completions — finishing the line or function you're already writing.
- Chat — explaining code, refactoring, exploring alternatives.
- Slash commands — the four common chores: explain, fix, tests, doc.
- CLI — driving edits from the terminal, especially for ops/infra tasks.
- GitHub.com chat — answering repo-level questions without cloning.
- Spaces — keeping multi-repo or docs+code context persistent.
- Coding agent — delegated, multi-file tasks you'd otherwise queue for a junior.
- Extensions — bringing live external data (deployments, alerts, tickets) into the conversation.
2. Decide interactive vs autonomous
Surfaces 1–6 are interactive: you type, it responds. Surface 7 (coding agent) is autonomous: you delegate, it works while you do something else. Knowing this changes how you phrase your request. Interactive prompts should be short and incremental; agent prompts should be complete specifications ("Implement issue #142. Tests must pass. Don't touch auth/*.").
3. Check plan availability for each surface
Free and Pro plans include inline completions, Chat, slash commands, the CLI, GitHub.com chat, and (since GA in September 2025) the coding agent. Copilot Spaces is available on Pro and higher. Copilot Extensions work on Pro and higher. The REST API for usage metrics and seat management requires Business or Enterprise.
4. Pick the right surface for five common tasks
Test yourself against these five scenarios. (Answers in the next section.)
- You're writing a function and want the body suggested as you type.
- You inherited a 5,000-line file and want a one-paragraph summary.
- You're in a terminal and need to refactor three Python files.
- You want Copilot to answer "which repos use the deprecated v1 API?" across 12 repos.
- You want Copilot to implement a GitHub issue end-to-end while you review a different PR.
Real-World Example
A platform team at a fintech adopted Copilot in early 2026. Their first month was chaotic: every developer used inline completions for everything, including multi-file refactors ("why does Copilot keep forgetting the type definitions?"). After a one-hour workshop on surfaces, the team adopted a simple rule: if a task touches one file, use inline or Chat; if it touches multiple files, use @workspace or the CLI; if it's a fully specified chore, delegate to the coding agent; if it requires external context (alerts, tickets, dashboards), use an Extension. Within two weeks, Copilot-induced bugs dropped by 60% and developer satisfaction scores doubled. The product hadn't changed — only the surface selection had.
Example Prompts / Commands / Code
1. Inline completions
2. Chat with the file open (use @workspace if the file references others)
3. The `copilot` CLI (multi-file edits + diff review from terminal)
4. Copilot Spaces (curate the 12 repos into a Space, then ask)
5. The coding agent (assign the issue, work on something else, review the PR)
# From a repo root, run:
copilot "Replace all usages of the deprecated `getUser(id)` API with `fetchUser(id)` across src/. Show me a diff before applying."
# Copilot CLI will propose changes file-by-file, ask for confirmation, then apply.
Common Mistakes
- Using inline completions for multi-file refactors — it has no cross-file context by default.
- Using Chat when the CLI would be faster — Chat can't run commands; the CLI can.
- Using the coding agent for a 30-second task — agent sessions take minutes to spin up; only delegate multi-file chores.
- Assuming GitHub.com chat has the same context as your IDE — it doesn't see your local working tree, only what's pushed.
- Forgetting that Spaces persist — context you added last week is still there. Prune them periodically.
- Treating Extensions as toys — they can call real services with real side effects. Audit their scopes before installing.
Best Practices
- Match the surface to the task's scope: 1 file → inline/Chat; many files → CLI or
@workspace; multi-repo → Spaces; delegated → agent. - Keep one surface as your default (Chat for most people) and reach for the others deliberately.
- When you switch surfaces, briefly tell yourself why — the act of naming prevents autopilot.
- Audit installed Extensions monthly. Uninstall any you haven't used in 30 days.
- Use the CLI for ops/infra work where you're already in a terminal; the editor would just slow you down.
- When delegating to the agent, write the issue as a complete spec — see PR-16 for the delegation runbook.
Troubleshooting
| Problem | How to Fix |
|---|---|
| Inline completions work but Chat doesn't | Chat may require a different plan tier or may be rate-limited separately. Check the status indicator and your plan allowances. |
| CLI says 'gh copilot is deprecated' | You're on the old extension. Install the new standalone Copilot CLI (covered in IN-41). The old extension was deprecated October 25, 2025. |
| GitHub.com chat doesn't see my recent commits | It only sees what's been pushed to GitHub. Push your branch and try again. |
| Copilot Spaces says 'not available on your plan' | Spaces require Pro or higher. Free tier does not include Spaces. |
Practical Exercise
Your Turn
For each of the following tasks, write down which surface you'd reach for and why:
- Generate a JSDoc comment for the function your cursor is on.
- Debug why your build is failing on CI but works locally.
- Write a migration plan for replacing library X with library Y across 8 repos.
- Summarize the changes in a 50-file PR for the PR description.
- Implement a small GitHub issue while you're in a meeting.
Compare your answers with a colleague or with the answer in the examples above. Disagreements are fine — surface selection is a judgment call, not a rule.
Professional Challenge
Draw a one-page diagram of your team's typical week, mapping each kind of task your team does to the Copilot surface that should handle it. Identify three tasks currently done with the wrong surface and propose the swap. Share the diagram in your team's wiki.
This is exactly the kind of artifact a tech lead or platform engineer would produce during a Copilot rollout — see Phase 3 capstone PR-47 for the full treatment.
Key Takeaways
- Copilot lives on eight surfaces, not one.
- Interactive surfaces (inline, Chat, slash commands, CLI, GitHub.com chat) fire on your input.
- Autonomous surface (coding agent) works in the background once you delegate.
- Scoped surfaces (Spaces) keep context persistent across conversations.
- Programmatic surfaces (Extensions, REST API) bring external data and admin control.
- Surface selection is a skill — practice it deliberately, don't default to one.
Frequently Asked Questions
Which surface should I learn first?
Are all surfaces available on every plan?
What's the difference between Copilot Chat in the IDE and on GitHub.com?
Can the coding agent push directly to main?
Do Extensions cost extra?
Can I use Copilot entirely from the CLI without an IDE?
copilot CLI is editor-independent. Many DevOps engineers use it that way. See IN-41 through IN-46.Further Reading
- Copilot CLI product page
- Copilot Spaces announcement
- Copilot coding agent GA
- Copilot Extensions overview
Official References
- GitHub Copilot — features overview
- Copilot Spaces GA changelog
- Copilot coding agent GA discussion
- Copilot CLI documentation
Related lessons: BE-01, BE-04, IN-17
SEO Metadata
SEO title: The 8 Surfaces of GitHub Copilot: Where It Lives
Meta description: Map every Copilot surface — inline completions, Chat, CLI, GitHub.com, coding agent, Spaces, Extensions, REST API — and learn which one to reach for in each situation.
Primary keyword: github copilot surfaces
Secondary keywords: copilot inline completions, copilot chat, copilot cli, copilot coding agent, copilot spaces
Search intent: Informational — beginner wants to know what features exist before deciding where to invest time.
URL slug: /github-copilot-eight-surfaces-map
Categories: AI Tools, GitHub Copilot
Tags: GitHub Copilot, Beginner, Surfaces, CLI, Chat, Coding Agent, Tutorial
Featured image concept: Diagram showing all 8 Copilot surfaces arranged around a central developer icon.
Comments
Comments
Post a Comment