To choose an AI-powered code editor or coding agent, give it a small build whose result you can check yourself. We tested this method with terminal agents, because the editors on our shortlist aren't installed on our test Mac. On 23 October 2026, Claude Code and OpenAI's Codex CLI each passed 18 checks on the same bakery request. Codex added more copy we hadn't asked for. Both of our attempts to run Gemini CLI failed with our credentials.
Editor or terminal agent
Most of these products now come in more than one form, so the first choice is the surface you'll use.
- AI code editors show the code and the agent's changes in a window while it works. Cursor is one. Windsurf has been renamed Devin Desktop and describes itself as an AI IDE. Google's Antigravity comes as a desktop app, a CLI and an IDE. The Codex IDE extension adds Codex to VS Code, Cursor and Windsurf.
- Terminal coding agents take a request in a terminal and work on the folder you point them at. Claude Code, the Codex CLI and Gemini CLI are terminal agents. The Cursor CLI supports the same modes as the Cursor editor, and Antigravity has a CLI too.
Choose an editor if you'd rather review code in a graphical workspace. Choose a terminal agent if you're comfortable typing commands. Terminal agents can be interactive too, showing each change for you to approve. For this test we ran them unattended, with no window at all.
What we didn't test: Cursor, Devin Desktop and VS Code with the Codex extension aren't installed on our test Mac, and we didn't run Antigravity. Everything below about results comes from Claude Code and the Codex CLI only.
Step 1: write the request and the checks first
Write one request that has a right answer you can check. Ours was a one-page site for a made-up bakery:
Build a single file, index.html, for a fictional bakery called Roti
Pagi Bakery. It must work offline: no external scripts, stylesheets,
fonts or images. Include a heading with the bakery name. Include an
opening hours list with exactly these three lines: "Monday to Friday:
07:00 to 18:00", "Saturday: 09:00 to 14:00" and "Sunday: closed".
Include a menu with exactly three items and prices: "Pandan chiffon
RM45", "Kaya butter toast RM8" and "Kopi O RM3.50". Add a button with
id theme-toggle that switches the page between a light and a dark
colour scheme. Add a pre-order form with a name field and a quantity
field, whose submit button shows the text "Pre-order noted (demo
only)" on the page instead of sending anything. The page must fit a
375px wide phone screen without sideways scrolling. Create only
index.html. Don't start a server and don't install anything.Then write down what "done" means before any tool runs:
- Only
index.htmlexists in the folder. - The heading, the three hours lines and the three menu items match the request word for word.
- No other prices appear on the page.
- At 375px wide, the page doesn't scroll sideways, in light or dark mode.
- The toggle switches the colours and switches them back.
- Submitting the form shows the message, stays on the same page, and sends nothing over the network.
Step 2: check access on the day
Plans and logins change, so check each tool works before you compare anything.
Gemini CLI failed here for us, twice. With our Gemini API key, Google replied "API key not valid. Please pass a valid API key." With our existing Google login, it stopped with "This client is no longer supported for Gemini Code Assist for individuals" and pointed us to Antigravity. The Gemini CLI README says that for unpaid tier and Google One users, the CLI was replaced by Antigravity CLI on 18 June 2026.
So we compared two tools, not three. If a tool won't run for you, write that down as the result. Don't fill the gap with a guess about how it would have done.
Step 3: run each tool on its own copy
These commands are for the macOS Terminal or another Bash-style shell. You need Git and a coding tool you're already signed in to, and you only run the tools you have access to. Start in a new, empty folder outside any project, and save the request above in it as a plain text file called request.txt.
Give each tool its own empty folder with git in it, so you can see exactly which files it created:
mkdir copy-claude copy-codex
git -C copy-claude init
git -C copy-claude -c user.name=demo -c user.email=demo@example.com commit --allow-empty -m "start"
git -C copy-codex init
git -C copy-codex -c user.name=demo -c user.email=demo@example.com commit --allow-empty -m "start"These are the commands we ran, with the request saved as request.txt in the working folder:
cd copy-claude
claude -p "$(cat ../request.txt)" --model sonnet \
--tools "Read,Edit,Write" --allowedTools Read Edit Write \
--permission-mode acceptEdits --setting-sources "" --strict-mcp-config \
--output-format json < /dev/null
cd ..
codex exec -m gpt-6.1-sol -c model_reasoning_effort=medium \
-s workspace-write -c approval_policy="never" \
--skip-git-repo-check --ephemeral -C copy-codex "$(cat request.txt)"Claude's final reply is in the result field of the JSON it prints. Claude Code had file tools only, with our own settings switched off. Codex had a shell inside its sandbox, plus our global Codex instructions. The models were different too: Claude Sonnet 5.5 and GPT-6.1 Sol. The versions were Claude Code 2.1.308, Codex CLI 0.163.0 and Gemini CLI 0.64.0. The access wasn't equal, so read the results as how each tool behaved with these settings.
Run the tools from a folder that has no project instructions above it. Our first attempt was inside our own workspace, and Codex read our AGENTS.md house rules before building. We kept that run but don't cite it, and ran both tools again in a clean folder.
Step 4: check the page, not the reply
We used a small Playwright script that opened each page in Chrome at phone width, blocked every outside request, and ran 18 checks per page. Both passed all 18, so 36 of 36.
You can do the same checks by hand in Chrome without writing code. Do this for each copy:
- Run
git -C copy-claude status --short(and the same forcopy-codex). Expect one line:?? index.html. - Open that
index.htmlin Chrome and compare every heading, hours line, menu item and price with the request. - On a Mac, press Option + Command + I to open Chrome's developer tools, then Command + Shift + M for the device toolbar. Choose Responsive and type 375 as the width. Scroll the page in light mode, then click the theme button and scroll again. Look for a sideways scroll bar or cut-off text in both.
- Open the Network tab. Select All, clear any filter, tick Preserve log and make sure recording is on. Clear the log and reload the page, then type a name and a quantity and submit. The message should appear, the address bar shouldn't change, and the Network tab should show no
httporhttpsrequests. - The reload in step 4 puts our pages back in light mode, because neither one saves the theme. Click the theme button to go dark, then click it once more and check that the light colours come back.
Then compare that with the reply. Claude's reply said it hadn't opened the page in a browser, so nothing was tested yet. It also pointed out that our wording could mean the button itself should say "Pre-order noted (demo only)", and asked which we wanted. Codex ran a Python check of its own file and reported success. Both claims held up when we checked.
What was different
- Claude Code: 19.9 seconds, a 2,715-byte page, and about US$0.037 in model cost as reported by Claude Code. We didn't capture a comparable dollar figure for Codex. It built what we asked for, with plain section labels.
- Codex CLI: 1 minute 19 seconds, a 5,795-byte page, 30,718 tokens. It put the menu before the hours, which the request allowed. It also added lines we never asked for, such as "Fresh bakes. Slow mornings." and "Soft pandan cake, warm kaya toast, and a good cup of kopi. Make yourself at home."
On a business page, each extra line is a claim about your shop that you didn't write and haven't approved. "Make yourself at home" is harmless. A line about delivery or halal status wouldn't be. Read every word before anything goes live.
Choose by how you'll work
- You'd rather review code in a graphical workspace: try an editor. Run the same request there and check the files the same way.
- You'd rather work with commands: try a terminal agent. Run it interactively or unattended, then do the hand checks from step 4.
- Your plan only includes one tool: start with that one and run the same checks.
- Someone says one tool is best: ask what they tested, on which date, and how they checked it.
Keep the date with your result. Model names, plans and free allowances change, and so does the result of a test like this.
Questions people ask
Is an AI code editor the same as a terminal coding agent? No. They differ in where you work. An editor shows the code and changes in a window. A terminal agent works on a folder from a command. Many products now offer both.
Can a non-coder check the result? Yes. Use the hand checks in step 4: the files in each folder, every word on the page, the 375px width in both themes, the form, and the Network tab.
Should I choose the tool with the most models? Not on that alone. A small test like this shows what the tool does with your request on the model you can use.
How do free allowances affect a fair comparison? They decide what you can run at all. Gemini CLI's free route didn't work for us on 23 October 2026. Record which plan and model each tool used next to the result.
Can this small test find the best tool for every project? No. It shows how each tool handled one small, clear page. Bigger projects need their own test, with their own checks.
Quick checklist
- Write one request with a right answer, and the checks, before running anything.
- Check access on the day you test, and write down the date, tool version, model, plan and permission settings.
- Give each tool its own empty git folder, outside any project with house rules.
- Check the files, the words, the 375px width in both themes, the form and the Network tab yourself.
- Compare the reply with what you found.
- Read every added line before you publish. Publishing stays your decision.
Related: for a whole site, our website chain guide covers the brief, the build, the browser check and the review. The Playwright guide shows the kind of browser checks we ran here. If you settle on Claude Code, set up the project before the first real task. New to Codex? What is Codex walks through it on one small task, and our Codex vs Claude Code post compares the two on a different job.
Official docs: Claude Code, Codex IDE extension, Codex CLI, Cursor CLI, Devin Desktop (formerly Windsurf), Antigravity and the Gemini CLI README.