Copilot Chat Features
Copilot Chat and inline suggestions
Last reviewed
Recommended
Copilot Chat Features — Timed Test (2 questions)
No account needed. Answers and explanations arrive when you submit.
What this topic tests
The mix every Copilot Chat Features set is built to, and the questions published against it so far. Nothing here is hidden before you start.
| Level | Target share | Published |
|---|---|---|
| Easy | 40% | 1 |
| Medium | 40% | 1 |
| Hard | 20% | 0 |
| Total | 2 |
Copilot Chat Features — the theory
Beyond inline completions, GitHub Copilot offers a chat interface for more conversational, task-oriented interactions within the coding environment.
Copilot Chat. This lets developers ask questions, request explanations of existing code, or ask for help debugging directly within their editor, without leaving the coding context to use a separate general-purpose chat tool.
Common use cases. Developers commonly use Copilot Chat to get an explanation of unfamiliar code, ask for a specific function to be written or modified, generate test cases, or get help diagnosing an error message — all with the current file or project as available context.
Slash commands and context references. Copilot Chat generally supports specific commands or references that let a developer point it at particular files, functions, or the current error, rather than needing to describe everything in plain text each time.
Complementing inline completion. While inline completion is best for quick, in-the-flow suggestions as you type, chat is better suited to more involved requests — explaining a design decision, refactoring a larger block, or working through a bug — where a back-and-forth conversation is more useful than a single suggested completion.
Explaining unfamiliar code. One of the highest-value uses of chat is onboarding: selecting a function nobody on the team remembers writing and asking what it does, what its inputs and outputs are, and what assumptions it makes. The answer is a starting hypothesis rather than documentation — it is derived from reading the code, so it can miss intent that lives outside the file — but it is usually far faster than reconstructing the logic unaided, and it gives you specific claims you can then verify against the code itself.
Generating tests. Asking for tests around an existing function is a natural fit for chat, because the request needs more context and more back-and-forth than a single completion. The assistant can propose cases you had not considered, particularly around boundaries and error paths, and can mirror the conventions of tests already in the project when it can see them. The generated tests still need to be read carefully: a test that asserts the current behavior is only useful if the current behavior is actually correct.
Working through an error. Pasting or referencing an error message along with the relevant code is a well-suited chat task, since diagnosis is inherently conversational — a first hypothesis, a check, a refinement. The assistant can recognize common error patterns quickly and suggest where to look. It cannot observe your runtime state, so it is proposing candidate explanations rather than diagnosing definitively, and the developer still has to confirm which explanation is the real one.
Scoping the context deliberately. The quality of a chat answer depends enormously on whether the assistant can see the code the answer depends on. Pointing it explicitly at the relevant files or selections, rather than asking a general question and hoping the right context is included, is the single most reliable way to improve results. Conversely, dumping in far more context than the question requires can dilute the response, so the goal is relevance rather than volume.
Iterating within the conversation. Chat's advantage over a one-shot completion is that the exchange persists: you can reject an approach, add a constraint you forgot, or ask for a simpler version, without restating the whole problem. Treating the first answer as a draft and steering it — "keep the structure but handle the empty case", "do this without adding a dependency" — usually converges faster than rewriting the original question from scratch.
Where chat falls short. The assistant does not execute code, does not see your data, and has no access to requirements that were never written down. Long conversations can drift, with earlier constraints gradually losing force, and confident explanations of code can still be wrong in ways that read perfectly. For anything consequential, chat output is a lead to verify rather than an answer to trust, and starting a fresh conversation is often better than fighting a drifting one.
Asking for a plan before an implementation. For a change of any real size, asking the assistant to describe its intended approach before writing code is usually worth the extra turn. A proposed plan is far cheaper to read and correct than a finished implementation built on a wrong assumption, and disagreements about approach surface while they are still easy to resolve. It also exposes what the assistant has misunderstood about the requirements — if the plan describes a different problem from the one you have, no amount of well-written code against it will be useful. This is the same decomposition principle that applies to prompting generally, expressed in a coding workflow.
Choosing between the two modes. A practical rule of thumb: if you already know what you want to write and the assistant is only saving you keystrokes, inline completion is the right mode. If you need to understand something, weigh an approach, or make a change that spans more than the cursor's immediate surroundings, chat is the better fit. Most experienced users move between the two continuously rather than committing to either.
Together, inline completion and chat give Copilot two complementary modes of assistance suited to different kinds of coding tasks.
Sample questions
Three questions from this topic, with the answer and the reasoning shown.
Q1EasyWhat is Copilot Chat used for?
- Conversational, task-oriented interactions like asking questions or debugging helpCorrect
- Only displaying weather information
- Automatically deleting code files
- Managing email inboxes
Explanation
Copilot Chat is a conversational layer over the same models behind Copilot's other features, and GitHub's feature list calls it the chat interface that lets you ask coding-related questions. In practice that means explaining an unfamiliar function, generating unit tests, proposing a fix for the stack trace you just pasted in, or working out why a query is slow. It runs on the GitHub website, in GitHub Mobile, in the Copilot CLI and inside supported editors such as VS Code, JetBrains and Xcode. Because the exchange is a conversation rather than a single shot, the follow-up question is cheap: the previous turn is still in context, so "now do it without the extra allocation" lands.
The other three options describe some other product. Chat does not fetch weather, run a mailbox, or delete files by itself. Even agent mode, which can edit files and run terminal commands, surfaces those actions for your approval instead of acting silently. One caution for code review: GitHub states plainly that the code Chat generates may be incorrect or carry security vulnerabilities, so it is a draft you validate, not output you trust.
Q2MediumWhen is Copilot Chat generally more useful than inline completion?
- For more involved requests like explaining a design decision or refactoring a larger blockCorrect
- For every single keystroke a developer types
- Only when the internet connection is offline
- Chat is never more useful than inline completion
Explanation
The difference is the shape of the request. Inline completion answers a single question, what comes next here, from the code surrounding your cursor, and it answers in dimmed ghost text at that spot. There is no slot for intent. You cannot tell it to keep the public API unchanged, and you cannot ask why the current version allocates twice. Chat gives you that slot: state the goal in a sentence, attach the files or symbols that matter, read the reasoning next to the proposed change, then push back in a follow-up turn without retyping any of it.
That makes the boundary practical. Finishing an obvious loop body or the next row of a test table is completion's job, and opening chat for it is slower. Renaming a concept across four files, or asking why a colleague chose a queue over a channel, is chat's. Option B inverts the split, since per-keystroke prediction is precisely what completion already does. C is wrong twice over: both surfaces call a hosted model, so neither works offline. D denies a distinction GitHub's own documentation draws.
Practise all 2 questions
Every published question in Copilot Chat Features, with its answer and explanation.