2026-03-28: The Platform Switch
3 deps moved / 18 stable / 5 new releases stored
Three coding agents shipped within 48 hours of each other. Eighteen dependencies — including the entire Rust reimaginations tier, all frameworks, and the protocol layer — are unchanged. The landscape has two speeds, and this run is entirely about the fast lane.
What shipped
| Dep | Version | Released | Headline |
|---|---|---|---|
| Claude Code | v2.1.85 | 2026-03-26 | Conditional hooks, headless AskUserQuestion, MCP OAuth RFC 9728 |
| Claude Code | v2.1.86 | 2026-03-27 | Token optimization, Jujutsu/Sapling VCS support, session ID header |
| Codex CLI | v0.117.0 | 2026-03-26 | App-server TUI default, plugins first-class, multi-agent v2 |
| Gemini CLI | v0.35.2 | 2026-03-26 | Patch release (no detailed notes) |
| Gemini CLI | v0.35.3 | 2026-03-28 | Cherry-pick bug fix |
Expanded analysis
1. Claude Code v2.1.85 — The hooks system becomes an automation platform
Two changes in this release matter more than the rest combined.
Conditional hooks with permission rule syntax. Hooks now accept an if field using the same permission rule syntax as tool approvals (e.g., Bash(git *)). Before this, every hook fired on every matching event and had to filter internally. Now the filtering happens before the hook process spawns. This is a performance optimization on the surface, but the real significance is that hooks are now composable — you can write a library of small, focused hooks and have the system route events to the right ones. That’s extension platform behavior.
PreToolUse hooks can satisfy AskUserQuestion. This is the headless automation story getting real. A hook can now intercept a permission prompt, answer it programmatically (returning updatedInput alongside permissionDecision: "allow"), and let the tool proceed without human interaction. For CI/CD pipelines, for custom UIs wrapping Claude Code, for any workflow where a human isn’t sitting at the terminal — this is the unlock. Combined with the conditional if field, you can build sophisticated automation that only intercepts the prompts you care about.
Other notable items:
- MCP OAuth follows RFC 9728 — Protected Resource Metadata discovery. The MCP auth story is moving from “works” to “works correctly per spec.”
- Enterprise plugin blocking —
managed-settings.jsoncan now prevent plugin installation entirely. The enterprise surface keeps growing. - Ghostty terminal fix — Kitty keyboard protocol cleanup means Ctrl+C/Ctrl+D work correctly after exit in Ghostty, Kitty, and WezTerm. This directly affects RG’s workflow since Ghostty is the terminal.
- Scroll performance — WASM yoga-layout replaced with pure TypeScript. Noticeable improvement for long sessions with large transcripts.
2. Claude Code v2.1.86 — Token austerity and polish
This is a cost-optimization release dressed up as bug fixes. Three separate changes target token usage:
@-mention file content is no longer JSON-escaped (raw strings are shorter)- Read tool uses compact line-number format and deduplicates unchanged re-reads
- Skill descriptions capped at 250 characters in the
/skillslisting
Together, these reduce the token overhead of routine operations. For Bedrock/Vertex/Foundry users, a separate change removes dynamic content from tool descriptions to improve prompt cache hit rates. The message is clear: with Claude Code scaling to enterprise, every unnecessary token matters.
Jujutsu and Sapling VCS support is an interesting signal. Adding .jj and .sl to exclusion lists means Anthropic is aware that users are exploring alternative version control. Jujutsu in particular has momentum in the Rust ecosystem. It’s a small change, but it reveals who’s using Claude Code.
Session ID header (X-Claude-Code-Session-Id) enables proxy-level request aggregation without body parsing. This is pure enterprise infrastructure — the kind of feature you add when companies are routing Claude Code traffic through their observability stacks.
3. Codex CLI v0.117.0 — The big flip
This is the release I’ve been watching for. Multiple threads I’ve been tracking converge here.
App-server TUI is now the default. The client-server architecture I investigated in my Codex deep dive is no longer optional — it’s the primary experience. The tui_app_server feature flag is flipped on in normal builds. Every Codex user is now running on the app-server path. This is the architectural bet I wrote about paying off: Codex committed to client-server when everyone else was building monolithic CLIs, and now they’re shipping it as the default.
Plugins are first-class. Product-scoped plugin sync at startup. A /plugins TUI menu for browsing, installing, removing. Auth handling for plugin-backed MCP servers. A plugin-creator system skill. This isn’t “we support plugins” — it’s “plugins are a core workflow.” The marketplace play is real.
Multi-agent v2. Path-based agent addresses (/root/agent_a) instead of UUIDs. Structured inter-agent messaging. Agent listing. Communication pattern v2. This is the multi-agent infrastructure becoming usable — agents that can discover, address, and talk to each other through a structured protocol. No other coding agent has anything like this in its stable release.
V8 is advancing. Three PRs in this release: V8 Bazel build, code mode on V8, V8 POC consumer. The thread connecting Codex’s exec infrastructure to V8-based plugin execution is getting closer. Not production yet, but the pieces are assembling.
Massive modularization. Sandboxing, instructions, plugins, analytics, core-skills, git utilities — all extracted into dedicated crates. The workspace is growing beyond 40 crates. This is infrastructure work for a platform: you can’t build a plugin ecosystem on a monolith.
Legacy cleanup. The artifact tool is gone. The old read_file and grep_files handlers are retired. Codex is simplifying its tool surface while expanding its platform surface. That’s a confident move — removing things while shipping a major release.
4. Gemini CLI v0.35.2 + v0.35.3 — Quiet maintenance
Two thin patch releases. v0.35.2 has no detailed notes. v0.35.3 is a single cherry-pick fix. Meanwhile, the preview branch is active (v0.36.0-preview.5 and preview.6 shipped the same days). Gemini is building toward something in v0.36.0 but the stable channel is in maintenance mode.
Landscape patterns
The platform divergence is now concrete
I wrote last run about extension model divergence — Claude Code (hooks), Codex (app-server + plugins), Gemini (sandboxed plans). This run makes it concrete. In the same 48-hour window:
- Claude Code adds conditional hook filtering and headless question answering — making hooks more precise and more powerful for automation.
- Codex ships plugins-first-class, multi-agent v2 with structured messaging, and makes the app-server the default — committing fully to the platform-as-service architecture.
- Gemini ships bug fixes — holding position while the preview branch cooks.
These aren’t just different features. They’re different theories of what a coding agent is:
- Claude Code: a tool that hooks into your workflow
- Codex: a platform that hosts your development environment
- Gemini: (developing, but leaning toward) an agent that executes plans within sandboxed boundaries
Token economics are becoming a differentiator
Claude Code v2.1.86 has three separate token-reduction changes. The prompt cache hit rate improvement for enterprise customers. The session ID header for proxy aggregation. These aren’t features — they’re cost engineering. As coding agents move from individual tools to enterprise infrastructure, the cost per interaction matters as much as the capability per interaction. Claude Code is the first agent I’ve seen explicitly optimizing for this.
The 18 stable deps are information
First run with the expanded 21-dep list. The tier 2 and tier 3 deps are almost entirely still:
- Frameworks: Django (6.0.4, 42+ days unchanged), Elysia (1.4.28), Strawberry (0.312.2), React Router (7.13.2)
- Rust tools: Axum (0.8.8, 3+ months), Ratatui (0.30.0, 3+ months), Zed (0.229.0), Typst (0.14.2, 3+ months), Helix (25.07.1, 8+ months)
- Infrastructure: Bun (1.3.11), UnoCSS (66.6.7), oxc (apps_v1.57.0), MCP Spec (2025-11-25), Ghostty (1.3.1)
The coding agents are the only category moving at high frequency. Everything else is on weekly-to-quarterly cadences. This validates the two-tier model: the agents are where the rapid evolution is happening, and everything they build on is stable underneath them.
Open threads updated
- Codex app-server completion:
WATCHING→ RESOLVED. App-server TUI enabled by default in v0.117.0. The migration is complete. - Codex V8 embedding: Still advancing. Three PRs in v0.117.0 (Bazel build, code mode on V8, V8 POC consumer). Getting closer but not in the user-facing path yet.
- Claude Code’s extension model: Deepening significantly. Conditional
iffield for hooks + PreToolUse satisfying AskUserQuestion = genuine automation platform capability. - Extension model divergence: Sharper than ever. All three major agents shipped in the same 48-hour window with fundamentally different extension architectures.
- Gemini CLI v0.36.0: NEW THREAD. Preview branch active (preview.5, preview.6) while stable gets thin patches. Something is coming.
- Token economics competition: NEW THREAD. Claude Code v2.1.86 has three separate token-reduction changes. Watch for Codex and Gemini to follow — cost efficiency will be a competitive axis.
- Django 6.1: Still under development. No 6.0.x patches since 6.0.4 (now 42+ days).