A few months ago I was helping a teammate set up Copilot for the first time. He typed a comment, waited for the ghost text, hit tab, and said "cool, so it's like a smarter autocomplete." I had to stop him right there — because that's exactly what most people still think, and it's not really true anymore.
Here's the thing:
Most people still think Copilot only autocompletes lines of code.
That used to be the whole story. It isn't anymore. The newest and most important part of Copilot is GitHub Copilot Agent Mode, and once you actually use it, you realize it's solving a completely different problem than autocomplete ever did.
Watch it work: the log lines type out and loop, just like Agent Mode working through a real task.
You give it a goal. It runs the loop — edit, test, fix, repeat.
Autocomplete and Agent Mode Aren't the Same Thing
Say "Copilot" to most developers and they picture ghost text finishing a line of code. Fair enough — that's what it was for a long time.
But that's only half the picture now, and mixing the two up is where the confusion starts.
Autocomplete + Chat (the old Copilot): it suggests one line or one function at a time, you accept or reject it, and honestly, it has no clue what happens after you hit save.
Agent Mode (the new one): you hand it a goal, and it figures out the rest. It reads across your codebase, edits whatever files need changing, runs your tests and linters in a real terminal, and — this is the part that surprised me — actually fixes its own mistakes instead of just telling you about them.
Think of It Like Ordering vs. Cooking
Autocomplete is like a recipe app suggesting one ingredient at a time — you still do all the cooking yourself.
Agent Mode is more like handing a chef your fridge and saying "just make dinner." It plans the steps, cooks, tastes as it goes, and adjusts when something's off. You show up at the end and check the plate before it's served.
Let Me Show You What I Mean
Say you type this into chat:
"Add rate limiting to the /api/upload endpoint, using our existing Redis client."
With plain autocomplete, that request is basically useless — you'd still write every line of the logic yourself, maybe with a suggestion popping up here and there.
With Agent Mode, here's roughly what happens instead:
- Find the file with the /upload route
- Locate your existing Redis client setup elsewhere in the repo
- Write the middleware
- Wire it into the route
- Run your test suite
- If a test fails because of a missing import, fix it and rerun — automatically
Watch the highlight move through each step — that's the Agent Mode loop for a single task, looping until tests pass.
The best part? You review the final diff — not every keystroke it took to get there.
Where You Can Actually Use It
Right now, Agent Mode works in both VS Code and JetBrains IDEs. So no, you don't have to switch editors just to get the autonomous behavior.
When It's Actually Worth Using
I've been burned enough times to have opinions here.
It's great for:
- Well-scoped tasks with a clear goal — "add X feature," "fix this failing test"
- Repetitive changes that touch a bunch of files
- Anything where you'd normally be tabbing between files by hand anyway
It's not there yet for:
- Vague requests like "make the app better" (it'll guess, and you probably won't like the guess)
- High-risk changes to core business logic without a careful review
- Big architectural refactors — break these into smaller tasks instead of one giant ask
The One Habit I'd Actually Recommend
Treat it like a junior engineer who's fast but has zero context on your team's tribal knowledge. Give it a clear, scoped task, and always read the diff before you merge. It's quick, not infallible — and it won't feel guilty if it breaks something.
Writing a Good AGENT.md (This One's Underrated)
Here's something nobody tells you when you start using Agent Mode: it performs way better once it stops having to guess your project's conventions. An AGENT.md file is where you write those conventions down once, so every task benefits from it after that.
What's worth putting in there:
- Tech stack and folder structure — e.g. "API routes live in /src/routes, tests in /tests"
- How to actually run tests and builds locally
- Naming conventions that aren't already caught by your linter
- Files or folders that are strictly off-limits — generated code, migrations, vendored libraries
- Libraries you'd rather it use for common tasks
Do
- Keep it short and scannable — bullet points beat paragraphs here
- Be specific: "Use Zod for schema validation" beats "validate inputs properly"
- Update it when your conventions change — a stale file is worse than no file at all
- Include the exact commands for tests and lint, not just "run tests"
- Mention anything unusual about your setup — monorepo, custom build steps, feature flags
Don't
- Don't turn it into a full architecture essay — the agent needs rules, not a wiki
- Don't write anything that contradicts your linter or CI config
- Don't list every dependency — just the ones with a preferred usage pattern
- Don't leave outdated instructions in "just in case" — it will actually follow them
- Don't try to explain fast-changing business logic here; that belongs in code comments
# AGENT.md
## Stack
Node + TypeScript, Express, PostgreSQL (Prisma), Redis for caching/rate limiting.
## Structure
- Routes: /src/routes
- Business logic: /src/services
- Tests: /tests (mirrors /src structure)
## Commands
- Run tests: npm test
- Lint: npm run lint
## Conventions
- Use our httpClient wrapper for outbound requests, not raw fetch
- All new routes need a corresponding test file
- Don't modify anything in /src/generated
## Off-limits
- /migrations (managed by Prisma CLI only)
Took me a couple of tries to get one of these right — but a good AGENT.md is really the difference between Copilot guessing your conventions and actually following them.
So, Is Copilot Still Just Autocomplete?
Short answer: no. Not since Agent Mode showed up.
GitHub Copilot Agent Mode doesn't:
- ❌ Just suggest one line at a time and wait
- ❌ Sit there while you run tests and paste back errors yourself
- ❌ Need hand-holding through every single file change
Instead, it:
- ✅ Takes a goal and figures out the steps on its own
- ✅ Edits multiple files and runs real terminal commands
- ✅ Fixes its own errors in a loop, until the tests actually pass
It feels like a teammate because it runs the whole edit-test-fix cycle on its own — not because it's always right. Keep reviewing the diffs, keep your AGENT.md up to date, and honestly, it just keeps getting more useful the more you use it.
No comments: