AI Tooling
Goose vs. GitHub Copilot: which agent actually ships code?
· 5 min read · By Jon Jovinsson
If you are trying to decide between Goose (Block's open-source on-machine coding agent) and GitHub Copilot for real engineering work in 2026, the honest answer is they are not the same class of tool. Copilot autocompletes. Goose ships. Copilot sits inside your editor and predicts the next few lines. Goose sits on your machine, takes a high-level goal, plans the steps, calls tools, runs commands, and comes back when the task is done. Both are useful. Both earn their place. They just do different jobs.
What each one is actually doing
GitHub Copilot is an inline completion tool. You type, it predicts. The latest version has a chat panel and can operate on a selection or a file, but the shape of the interaction is you writing code and Copilot accelerating each keystroke. It is excellent at this. For day-to-day grinding through known patterns, it saves real time and the friction is near zero.
Goose is an agent. You tell it what you want, it decides what to do. Read these files. Run that test. Modify this module. Check if it compiles. Open a PR. It runs locally, which means your code and your credentials do not leave your machine, and it connects to external systems through MCP (Model Context Protocol) servers. Under the hood it is driving a frontier model (recent OpenAI releases run well, as do Claude and Gemini) through a loop of tool calls until the goal is reached or it gets stuck.
Where Copilot still wins
When you already know what you want to write and you just want to type it faster, Copilot is unbeatable. Boilerplate. Test scaffolds. Predictable refactors. Moving a function from one file to another. The loop is so tight that there is no cognitive cost to using it. You are always in control and the model is always a suggestion away from a keystroke. For a senior engineer who is steering every line, Copilot is still the better tool for the inner loop.
Where Goose wins
Anywhere the task is bigger than a single file and you are willing to delegate. A three-step bug fix across a service, a test suite, and a config. Writing a new endpoint end to end, including the types, the handler, the test, and the doc. Upgrading a dependency across a monorepo. Goose can hold the whole task in its head (and the filesystem), plan the steps, and execute them with you watching the trace. When it works it saves a morning. When it does not, you read the trace, fix the context, and try again.
The local-first design is the feature that matters most for serious engineering work. Your codebase does not leave your box. Your env vars do not leave your box. The agent runs shell commands in your shell, against your repo, using your git config. For Australian businesses with compliance concerns (financial services, health, anything under the Privacy Act) this is a different risk profile from a cloud-hosted agent, and it is usually the easier one to get approved.
The MCP point nobody else is making
Goose uses MCP as its tool-extension protocol. That means the same agent that edits your code can also query your database, post to Slack, open tickets in Linear, or hit an internal admin API, just by adding an MCP server. Copilot does not have a comparable extension story. If you are an engineering team that lives inside three or four internal tools, Goose becomes more valuable every time you add an MCP integration. Copilot does not get better when you add tools, because that is not what it is for.
What we actually use
We use both. Copilot runs inside the editor all day. Goose gets called when a task is too big to type and too boring to steer line by line. There is no world in which these compete directly. The interesting question is not Goose vs Copilot. It is whether your team has figured out when to reach for the autocomplete and when to reach for the agent. Teams that know the difference ship faster than teams that treat everything as an autocomplete problem.
The short version
- →Copilot: inner loop, line-by-line, senior engineer is steering every keystroke
- →Goose: outer loop, task-level, engineer delegates and reviews the trace
- →Copilot shines on boilerplate, scaffolds, and known patterns
- →Goose shines on multi-file changes, cross-repo refactors, and long tasks
- →Goose is local-first and MCP-native (matters for compliance and for tool-heavy teams)
- →Both are additive, not alternatives. Use Copilot inside the editor, reach for Goose when the work is too big to type.