Frontier model, same app: a Copilot comparison in ask, edit and agent modes

GitHub Copilot now supports Claude 3.7 Sonnet, Gemini 2.5 Pro, GPT-4 and other frontier models, but choosing between them isn't always obvious. That becomes trickier as Copilot Chat expands into ask, edit and agent modes, each with different strengths. In a recent video, GitHub Developer Advocate Kedasha Kerr and I built the same travel-reservation web app three times, swapping foundation models mid-session to see how each behaves in realistic coding workflows.

We deliberately kept the stack lean to focus on the comparison: a Flask REST API backend, a Vue.js frontend styled with Tailwind, and a local data.json file standing in for a real database. That gave us enough room to scaffold, wire endpoints and add tests and docs while keeping the demos quick.

Three modes, one Copilot

Before getting into results, it's worth restating the division of labor between Copilot's three modes. Ask mode answers questions about your code and project. Edit mode is a focused rewriting tool for precise changes. Agent mode goes further, driving a task from prompt to committed code across the repository.

What it does (nuts & bolts)Ideal moments to reach for it
Ask modeAnalyzes the code you highlight (or the context of your open file) and returns explanations, examples, or quick fixes without touching your code. No diffs, and no saving. It’s just conversational answers.• Debug a puzzling stack trace
• Refresh your memory on a library or pattern
• Grab a snippet or algorithm on the fly
Edit modeYou select one or more files, describe a change in a plain-language prompt, and Copilot applies inline edits across those files. But first, it shows you a diff, so you can approve every change.• Add error handling or refactor repetitive code
• Tight, multi‑file tweaks in a brown‑field codebase
• Apply team style rules via custom instructions
Agent modeFeed it a high‑level prompt and Copilot plans steps, runs terminal commands, edits multiple files, and keeps iterating autonomously while surfacing risky commands for review. Great for project‑wide, multi‑step work.• Scaffold a new service or feature from a README
• Large bug fixes that touch many modules
• Automated clean ups (e.g., migrate to Tailwind everywhere)

Context beats model choice

The first lesson from the demo is that the model is only part of the equation. Prompt shape and the additional files you feed Copilot often dominate output quality. Toggling between modes and switching models mid-build showed how much behavior changes when Copilot is given the right amount of detail or prompted to think several steps ahead.

If you aren't deliberately structuring prompts and selecting context, you're likely leaving accuracy and relevance on the table. For a deeper look, GitHub's guide "Which AI model should I use with GitHub Copilot?" breaks down model tradeoffs more systematically.

Agent mode earns its keep

Agent mode is still maturing, but it already handles multi-file tasks with minimal guidance. It navigates your repository, applies changes and can complete whole workflows that previously required substantial manual orchestration. That power requires a different level of trust and supervision, but two examples from our build show where it fits:

  • One-shot project scaffolding: After pointing Copilot at the project README, Kerr invoked agent mode with a simple "implement this" instruction. Running Gemini 2.5 Pro, agent mode generated the complete Flask and Vue repository, including directories, boilerplate code, unit tests and seeded data.
  • Documentation on demand: Switching to Claude 3.5 and prompting "make documentation for this app … include workflow diagrams in Mermaid," agent mode produced a polished README, an API reference and two sequence or flow diagrams, then opened a preview to render the charts before I committed.

Custom instructions keep models on script

Custom instructions emerged as a major lever in the demo. They let you set ground rules before Copilot makes any suggestion, covering API call patterns, naming conventions and style standards.

Kerr highlighted how they tune tone, code style and task focus for individual or team workflows. In our case, we used the same custom instructions for every model so that swapping between Claude, Gemini and GPT produced consistent, secure code without re-explaining expectations each time. If you haven't set up custom instructions yet, they're worth exploring when your output needs to follow a stable standard.

Speed versus quality is a real tradeoff

The sessions also underscored the constant tradeoff between responsiveness and output quality. A larger model may take longer to suggest edits but deliver better refactoring ideas; a smaller one is quicker but may miss subtleties in a design.

The practical takeaway is not to hunt for a single "best" model but to know which to switch to and why. A default model may serve you well most of the time, yet having alternatives lined up can cover edge cases faster and more effectively. The code repository from the video is available for forking if you want to test that mix yourself.