cat posts/2025-07-15-agentic-ides-compared.md

Agentic IDEs compared, from the terminal side

· 6 min read · ai agents tools editors

There are five AI coding tools installed on my laptop as of last night, and the company pays for two of them. That number was one at the start of the year (Copilot, in VS Code) and I didn’t plan any of the others, they just kept arriving. The latest is Kiro, which AWS put out yesterday as a free preview, and which I spent most of last evening with.

It’s been a strange week to be choosing editors. On Friday OpenAI’s deal to buy Windsurf fell apart, Google hired Windsurf’s CEO and some of its team in a licensing deal reported at $2.4 billion, and yesterday Cognition announced it’s buying what was left. A couple of weeks before that Cursor changed its Pro plan from a fixed number of requests to something based on usage, a lot of people got surprise bills, and they put out an apology on the 4th with refunds. If you’d standardized your team on one of these products in January, you’ve had an eventful six months.

So this is less a review than an attempt to sort out what I actually use, and why.

The two shapes

Underneath the branding there are really two shapes of tool. One is an agent that lives in your terminal and works on files: Claude Code, which I’ve used most days since February, OpenAI’s Codex CLI, and Google’s Gemini CLI, which came out at the end of June, is open source, and has a generous free tier on a personal Google account. You run it in a repo, describe what you want, and it reads, edits and runs commands in a loop until it’s done. It doesn’t care what editor you have open, and I have Neovim open.

The other is an editor with an agent built into it: Cursor, Windsurf, Copilot’s agent mode in VS Code, and now Kiro. These are all forks of VS Code or extensions to it (Kiro is built on Code OSS, so it looked very familiar), and the agent edits files you can see, in a panel next to the code, with the diff shown inline as it goes.

People argue about which shape is better as if it were a question about the AI, and from using them I doubt it is, mostly. Several of them can run the same Claude models, and Kiro’s preview runs on Anthropic’s Sonnet models too. The thing that actually differs is where you review the work, and that turns out to matter more to me than anything else on the feature lists.

In the editor, I review as it types. That’s good for small changes I’m steering closely, a refactor of one function, a test I want written a particular way. It’s also tiring for anything longer, because the screen is full of motion and I keep wanting to interrupt.

In the terminal, I review at the end, or at checkpoints, as a diff, the same way I review a colleague’s PR. The .NET upgrade I let an agent do in May was a long unattended run in a container, and part of why it worked is that there was nothing to watch. The terminal agents are better at that kind of job because they’re built for it. You can run one in a container, over ssh, in three panes at once, on a box with no screen.

Kiro

Kiro’s pitch is “spec-driven development”, and it’s the most interesting idea in the batch, so I’ll spend some time on it. When you start a feature in spec mode, it doesn’t write code. It writes a requirements.md with user stories and acceptance criteria in a format called EARS (“WHEN the user submits an empty form THE SYSTEM SHALL…”), then a design.md, then a tasks.md with a numbered checklist, and it asks you to approve each one before going on. Then it works through the tasks one at a time, and you can watch the checkboxes fill in. There are also “steering” files, standing instructions for the project, which are the same idea as a CLAUDE.md, and hooks that run an agent when a file is saved.

I tried it on my RSS-to-email app, the Ruby one Claude Code fixed in February, with a feature I’d been meaning to add (a weekly digest for feeds that post too often). The requirements doc was good. It caught an edge case I hadn’t thought of, a feed that changes its post IDs, and asked me about it. The design doc was too long, a page and a half for about eighty lines of change. The tasks were sensible, the code was fine, and the whole thing took about forty minutes, of which maybe fifteen were me reading documents about a feature I already understood.

My reaction is mixed. I’ve been writing specs for agents by hand since spring, because the long runs only work with one, and Kiro makes that the default, which I like. But a generated spec has the same problem as a generated design doc, which is that the one decision that matters is in there somewhere, between a lot of paragraphs that don’t. The spec I wrote for the .NET upgrade was a page, and every line in it was something I actually meant.

What we can use at work

This is the part that decides things for us, more than any comparison.

Claude Code went through our vendor review in March, and it’s on the allowed list for source code, so that’s what most of the team uses. Copilot has been allowed since 2022, and on the business plan since 2023, and the agent mode in VS Code comes with that, so the two or three people who’d rather stay in the editor can do that.

Cursor isn’t allowed, yet, and three people have asked. The product sends code to Cursor’s servers and from there to whichever model provider you’ve picked, plus some of their own models, so a review means reading their terms and their subprocessors’ terms. I don’t object to that, it’s what we did for OpenAI and Anthropic, but it’s weeks of our security lead’s time, and I’d like to see where the pricing settles before spending it.

Kiro is out for now, and not because it’s new. AWS is already our biggest vendor and the contract is one we know well. The problem is in the preview’s terms: content from the free preview, including code and conversations, may be used to improve the underlying models unless you turn that off in the settings. That’s a reasonable thing for a free preview to say, and it’s exactly the thing our AI usage policy exists to stop. A setting each person has to remember to flip on their own machine isn’t something I’m going to rely on. So it’s on my own projects only, with the setting off anyway.

Gemini CLI is the same story. The free tier is personal, and the terms that come with a personal Google account are not the terms I’d want for company code.

Where I’ve ended up

Terminal agent for anything bigger than a function, and for anything I want to run while I’m doing something else. The editor agent for small, close work, which for me is mostly C# in VS Code, since that’s where I already do C#. I haven’t found a reason to have both an editor agent and a terminal agent on the same task, and when I tried it in Cursor once, on a personal repo, they had a disagreement about a file that I had to settle.

What I’d tell a team choosing now is to pick based on how you want to review, and to assume the company behind your choice might look quite different by Christmas. Two of the five on my laptop have changed owners or prices in the last month. The open part, the instructions file, the specs, the tests, moves with you. I’ve rewritten my CLAUDE.md into Kiro’s steering format and back already, and it took five minutes.