- Book: AI That Plans
- The series: AI in TypeScript — 5 books, from your first LLM call to agents in production — all five here
- My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools
- Me: xgabriel.com | GitHub
Open a terminal and run this:
npm view @anthropic-ai/claude-code time --json
| grep '"2026-10-0'
You get one line per version published in the first nine days of October. According to the npm registry entry for Claude Code, version 2.1.287 went out on October 1, 2026, and 2.1.295 on October 8. That is nine versions in eight days. 2.1.296 followed on October 9, and 2.1.299 landed at 00:23 UTC on October 14.
Changes like the ones below land in Claude Code’s own terminal interface the day they ship. If your tool shows Claude Code through some other interface, you are reading this week’s agent through last week’s screen.
Nine versions, eight days, and it isn’t only Anthropic
The pace isn’t a one-vendor quirk. On the Codex releases page, OpenAI’s Codex CLI shows four stable releases in five days: 0.160.1 on October 5, 0.161.0 on October 7, 0.162.0 on October 8 and 0.162.1 on October 9. Alpha builds of the next version came out between those, almost daily.
These aren’t all bug-fix bumps. A sample of what changed in the interface during that stretch, from the Claude Code changelog and the Codex release notes:
- Claude Code 2.1.295 added Program Status Protocol (OSC 7501) support, so “terminals that implement it can show whether Claude Code is working, waiting on you, or done.”
- Claude Code 2.1.295 added quoted text to the
/copypicker. On the same day, Codex 0.162.0’s notes read: “Navigate and copy transcript blocks with/copy.” - Codex 0.162.0 lets you pin tasks in its agent Command Center with
p, and makes URLs clickable in approval headers, questions and MCP prompts, among other places. - Claude Code 2.1.296 underlines the link under the mouse pointer in fullscreen mode.
- Claude Code 2.1.299 added
/effortand/fastto its agent view.
Each of those is a keypress, a picker or a screen. None of them is a new API field. They exist in the vendor’s terminal interface, and the vendor ships them there on day one.

The vendor’s interface gets the new commands first. A copy of it gets them when someone redraws it.
A redrawn UI is a fork you maintain forever
Any tool that re-renders a coding agent’s interface, whether it scrapes the terminal output or drives the agent through an SDK and paints its own chat, has signed up to chase that changelog. It will be one release behind on the good weeks and further behind on the bad ones.
The SDK route is the honest version of this, and it still has the problem. Anthropic’s Agent SDK overview describes the SDK as “a library that runs the Claude Code binary,” with “the same tools, agent loop, and context management that power Claude Code.” The agent loop keeps pace. The interface doesn’t come with it. The TypeScript reference lists more than 30 message types a client can receive, and a view built on it tends to end up with a loop like this:
import { query } from "@anthropic-ai/claude-agent-sdk";
const run = query({ prompt: "Fix the flaky login test" });
for await (const msg of run) {
switch (msg.type) {
case "assistant":
console.log("draw a message card");
break;
default:
// A type this UI has no card for yet.
console.log("unrendered:", msg.type);
}
}
That default branch is where new features live until somebody on the wrapper’s team designs a card for them. Fullscreen link hints, a new picker, a terminal status signal: those are terminal features. A chat view that isn’t the terminal has to rebuild each one itself, if it wants them at all.
Scraping is worse. A parser that reads an agent’s screen and guesses at structure breaks the day a vendor moves a border or renames a prompt, and with nine versions in eight days, that day comes around often.
The fair case for a structured view
Structured views earn their keep. A chat surface can show thinking blocks, tool calls as cards and diff previews in place. It can take a pasted image and hand the model the actual pixels. Some people read a long agent session far better that way than in a scrolling terminal.
The better tools build that view on a protocol the vendor stands behind instead of on scraping. Zed’s external agents are a good example: they “run as separate processes that communicate with Zed over ACP,” the Agent Client Protocol, and its list of common agents includes Claude, Codex, OpenCode and Copilot. That is a sound design. It still means the view shows what the protocol carries, so a feature only reaches it once the protocol carries it.
My rule: run the vendor’s own interface by default. Opt into a structured view only when it sits on a protocol the vendor publishes and you can say what it buys you.

Nine Claude Code versions between October 1 and October 8, 2026, per the npm registry.
Where Hermes IDE landed on this, and where it fell short
I build Hermes IDE, so weigh this section with that in mind. Hermes started out on the other side of this argument.
Its ADR 003, accepted on September 27, 2026, says: “ADR 001 made Claude the one agent with a Hermes-rendered chat surface and made that surface the default for Claude.” The reason for reversing it is the argument of this post, in the ADR’s own words: “A Hermes-rendered view lags behind those interfaces and has to be rebuilt for every vendor.”
Since then, every new session starts in the agent’s own interface, in a real terminal, Claude included. Per the README, that means a vendor’s new commands and modes work in Hermes the day they ship. Hermes adds what sits around the terminals: a branch and worktree per task, one status for every agent, an inbox for the agents blocked on you, and a review desk.

Hermes 2.3: the New task sheet shows the claude command it will run in the session’s terminal.
The structured view still exists, as an opt-in. Tick “Agent view for Claude” on a session and Hermes renders the conversation with tool-call cards and diff previews, and it shows real images. It runs on the official Claude Agent SDK in a small per-session bridge, not on scraping. Per the ADR, another agent only gets a structured view once its vendor has a stable protocol and users ask for one, and even then it stays opt-in per session, with the terminal as the default.
The ADR also lists what this costs, and you should know it before you try it:
- “Status for terminal agents is still mostly heuristic until hook-based signals land.” Hermes labels a guessed status as a guess.
- “A restored terminal session starts a new agent conversation instead of resuming the previous one.”
- Features like tool-call cards are limited to the Agent view for now.
Hermes isn’t immune to cadence either. It shipped four releases on October 13 alone, 2.3.0 through 2.3.3, per its releases page. It’s free, source-available under BSL 1.1, and runs on macOS, Windows and Linux. It isn’t affiliated with Anthropic, OpenAI, Nous Research or any agent vendor.
So, is your agent wrapper behind?
Check it yourself. Run npm view @anthropic-ai/claude-code version for the newest release, read its changelog entry, then open whatever tool you use to run Claude Code and see whether the new command is there today.
If your tool runs the vendor’s interface, the command is there. If it redraws the interface, ask how many releases behind it is this week, and whether that number ever reaches zero.
Do you run your agents in their own terminal, or do you prefer a chat view on top? And what would a structured view have to show you to be worth a week’s lag? Tell me in the comments.
If this was useful
If you’d rather build an agent than wrap someone else’s, the real work is the loop, its state, its memory, and several steps or agents working together. That is what AI That Plans covers, in TypeScript, with LangGraph.js, from a multi-step agent through to multi-agent setups you can debug.
It is book 4 of AI in TypeScript, a five-book series that runs from your first LLM call to agents in production. And if you run several vendors’ agents in their own terminals, download Hermes IDE or star it on GitHub.


