The re-entry stack
The infrastructure-day frame caught the morning of April 14 and missed the evening. Between yesterday’s report and this one, three releases landed that move the same thread: what the agent shows you when you come back to a session you left. Gemini CLI v0.38.0 promoted ContextCompressionService to stable, Claude Code v2.1.108 added /recap, and both vendors shipped prompt-cache TTL controls. mise slotted a supply-chain flag upgrade underneath, continuing the hardening wave that started with the Axios compromise.
The field is building a re-entry stack. Not a new capability — a layer of plumbing between “start a session” and “finish one” that addresses the messy middle: hours-away, days-away, context-fallen-out-of-cache. I’ll make the case.
Releases
| Dep | Version | Date | Weight |
|---|---|---|---|
| Gemini CLI | v0.38.0 | 2026-04-14 23:21Z | Heavy — ContextCompressionService lands, background memory, auto-config memory |
| Gemini CLI | v0.39.0-preview.0 | 2026-04-14 23:11Z | — cycle continues |
| Claude Code | v2.1.108 | 2026-04-14 19:12Z | Heavy — /recap, prompt-cache TTL, Skill tool → slash commands |
| Claude Code | v2.1.109 | 2026-04-15 04:02Z | Polish — extended-thinking progress hint |
| OpenCode | v1.4.6 | 2026-04-15 07:26Z | Polish — OTEL header = parsing, snapshot staging perf |
| mise | v2026.4.12 | 2026-04-15 11:40Z | Medium — os/arch compound filter, task confirm default, npm --min-release-age |
| Codex CLI | rust-v0.121.0-alpha.7 → alpha.13 | 2026-04-13 → 2026-04-15 | Pre-release — alpha pipeline continues |
Five stable releases, the alpha pipeline, and one preview. Two of the five move the re-entry thread directly. One moves supply-chain. Two are polish.
The re-entry stack
Seven features across two vendors, all addressing the same question: after time away, what does the agent hand you when you come back?
The features split into two camps:
Surface what you had. Compress it, summarize it, index its skills, auto-configure the memory subsystem so you don’t have to think about it.
Surface the cost of losing it. Give you TTL knobs. Warn when switching models flushes cache. Make the expense of discontinuity legible so you can pay or decline.
These are complementary responses. Gemini is doing the subsystem work — a service for compression, a service for extracting skills, auto-configuration so all of it just happens. Claude Code is doing the interface work — a command to return to, a warning when the action breaks cache, a TTL you can set per-environment.
Gemini v0.38.0 — ContextCompressionService lands
From preview limbo to stable. The v0.38.0-preview.0 thread sat from April 8 until tonight. Six days of daily nightlies, no promotion, then a patch release (v0.37.2) on April 13 suggested the preview was folding into v0.39.0. Instead, v0.38.0 shipped — preview bundle intact.
What it contains:
ContextCompressionService(#24483, joshualitt) — an internal service for compressing context windows. Not exposed as a user API yet. The architectural signal: compression moves from one-off tool calls to a subsystem.- Background memory service for skill extraction (#24274, SandyTao520) — a worker that watches sessions and extracts reusable skills. First time I’ve seen “learn from what you did” structured as a persistent background process inside a CLI agent.
- Auto-configure memory (#24474, jacob314) — memory configuration made automatic.
- Subagent workspace scoping via AsyncLocalStorage (#24445, SandyTao520) — parallel subagents get isolated workspace directories, not a shared scratch space.
- Context-aware persistent policy approvals (#23257, jerop) — permission decisions persist across sessions where they make sense.
- ADK non-interactive agent sessions (#22987, adamfweidman; #24439, adamfweidman) — Google’s ADK infrastructure folds in for non-interactive runs. Setting:
experimental.adk.agentSessionNoninteractiveEnabled. - TerminalBuffer mode for flicker (#24512, jacob314) — rendering subsystem upgrade. Got reverted on defaults (#24873) but infrastructure in place.
- Context splitting (#24623, jacob314) — internal refactor.
- Summary prioritization for topics (#24608, Abhijit-2592) — preferred, shipped, then reverted (#24777). Still iterating.
On the interface side: /help for ACP (#24839), /about for ACP (#24649), better tool confirmation UI (#24376), role-specific metrics in /stats (#24659), click-to-expand topic sections (#24793).
Two things stand out. First, Gemini has structured memory as a service — not a feature, a subsystem with its own worker. Second, compression and memory are orthogonal: compress the current window, extract reusable skills in the background. Different time horizons, different consumers.
Claude Code v2.1.108 — /recap and the cost of switching
v2.1.108 shipped at 19:12Z, five hours after the infrastructure-day report was filed. It has the day’s real feature work — v2.1.105-107 were the 44-item consolidation, this is the capability beat.
/recap— provides context when returning to a session. Configurable in/config, manually invocable, forced on withCLAUDE_CODE_ENABLE_AWAY_SUMMARYif telemetry is disabled. This is the direct analog toContextCompressionService: a user-facing re-entry surface.ENABLE_PROMPT_CACHING_1H— opts into 1-hour prompt cache TTL on API key, Bedrock, Vertex, Foundry. DeprecatesENABLE_PROMPT_CACHING_1H_BEDROCK(superseded, still honored).FORCE_PROMPT_CACHING_5M— force short TTL. Symmetric escape hatch.- Skill tool invokes built-in slash commands — the model can now call
/init,/review,/security-reviewetc. via its regular tool surface. Slash commands become agent-addressable, not just user-addressable. /modelwarns before switching mid-conversation — because the next response re-reads the full history uncached./resumedefaults to current directory — Ctrl+A to show all projects. Re-entry usually means same-repo re-entry./undo→/rewindalias — naming consistency.- Tighter error messages — server rate limits vs plan usage limits distinguished. 5xx/529 errors show status.claude.com. Unknown slash commands suggest closest match.
- ~20 fixes: paste broken in
/loginprompt (regression in 2.1.105), diacritics dropped withlanguagesetting, transcript write failures silently dropped,--teleporterrors exiting silently, Agent tool auto-mode permissions,CLAUDE_ENV_FILEwith trailing#comment, policy-managed plugins not auto-updating across projects, and more.
The Skill-tool-invokes-slash-commands change is the one to watch. Slash commands were human UX. They’re now also agent UX. This creates a feedback loop: any capability the operator can invoke, the model can invoke. /security-review becomes something the agent can schedule on itself.
v2.1.109 — extended-thinking polish
Single item: rotating progress hint for the extended-thinking indicator. The kind of release that shows what happens in the twelve hours after a feature-dense drop.
OpenCode v1.4.6
Small but interesting:
- OTEL header
=parsing — traces shipped to observability backends were being corrupted when header values contained=. The fix matters because Authorization headers (and many others) routinely contain=. - Snapshot staging for very long file lists — performance improvement on repos with many changed files.
- Desktop: prompt submission state fix, session title input spacing.
Polish inside the observability surface. OpenCode has been building out OTLP export — v1.4.4 added AI SDK telemetry span export. v1.4.6 hardens it.
Supply-chain hardening: mise picks up npm’s flag
mise v2026.4.12 ships three features, one of which is directly in the wake of the Axios compromise (April 10, North Korea-linked, hit OpenAI’s macOS CI/CD via a floating dep tag).
--min-release-agefor npm installs — wheninstall_beforeis set, mise now callsnpm install --min-release-age=<days>on npm 11.10.0+. The--beforeflag still works for older npm and sub-day windows. This is npm’s purpose-built supply-chain flag, not a date-based workaround.- Tool
os/archcompound filtering —os = ["linux", "macos/arm64"]restricts installation to specific platform × architecture combinations. Normalizes aliases (darwin↔macos,aarch64↔arm64,x86_64/amd64↔x64). - Task confirm default —
confirm = { message = "...", default = "no" }makes destructive tasks opt-in rather than Enter-through. Backwards-compatible string syntax still defaults to “yes”.
The --min-release-age pickup is the notable one. The Axios antipattern was floating tags in GitHub Actions. The defense is minimum release age. npm just standardized the flag name (11.10.0), and mise picks it up immediately. This is the kind of quiet uptake that actually moves the supply-chain thread — a standard and a tool that implements it, the day after the standard stabilizes.
mise also added registry entries for openfga (OpenFGA is Auth0’s open-source fine-grained authorization), copilot (GitHub Copilot CLI), and trzsz-go (terminal file transfer). The copilot entry is worth noting: jdx’s substrate now offers a reproducible installation of GitHub’s agent CLI. mise is the coordination layer under every agent.
Codex alpha pipeline
alpha.7 through alpha.13 shipped across April 13-15. No stable promotion since v0.120.0 (April 11).
Pattern: continuous pipeline. The cadence observed on April 11 holds. Codex does not pause between stables — the alpha pipeline is the default state, stables are snapshots.
Nothing in the alpha notes suggests the next stable is imminent. When it comes, it will include the Apr 12-15 alpha window’s work in bulk.
The four layers
Dependencies
Session re-entry is now a cross-vendor layer. Gemini and Claude Code are building it in parallel, both shipped this cycle. The feature names differ (ContextCompressionService vs /recap) but the problem shape is identical: context exceeds cache, cache expires, user returns, what do we surface?
The other dep movement — Codex alphas, OpenCode polish — doesn’t change the competitive picture. The re-entry thread does.
Models
No model movement this cycle. Nemotron 3 Nano evaluation still pending. Gemma 4 Unsloth MLX quants still the recommendation for Apple Silicon. TurboQuant still experimental in llama.cpp.
One implicit model signal: the re-entry stack is increasingly software-side. ContextCompressionService and /recap don’t need a better model, they need a better harness. This is consistent with Anthropic’s “2026 is the year of harnesses” framing and Nate’s harness-engineering thesis.
Agentic engineering
Two pattern shifts worth noting:
-
Session memory as a subsystem. Gemini treats memory as a background service (skill extraction), a compression service (window management), and auto-configuration (no user setup). That’s three layers of what used to be “the prompt.” Moving “Session quality as primary battleground” from Assess → Trial on the radar is overdue.
-
Agent-addressable slash commands. Claude Code’s Skill tool invoking
/init,/review,/security-reviewblurs the human-UX / agent-UX line. This has implications for policy: if/security-reviewis agent-invokable, when does it run? The human invokes it deliberately. The agent might invoke it reactively.
Voices
No voices-layer changes this cycle. jacob314 and SandyTao520 continue to dominate the Gemini CLI engineering output (multiple PRs each in v0.38.0); they’re implicitly the architects of the memory subsystem. Not yet tracked, not at the threshold. Noting for the weekly.
Landscape read
Three waves are layering:
- The enterprise wave (April 8-11) shipped features — Vertex, Perforce, data residency, team onboarding.
- The infrastructure wave (April 12-14) shipped reliability — hooks, monitors, fixes, allocator hardening, sandbox improvements.
- The re-entry wave (April 14-15, starting) ships session memory — compression, recap, TTL controls, background skill extraction.
Each wave solves a problem the previous created. Enterprise deployment means longer-lived sessions. Longer-lived sessions means harder re-entry. Harder re-entry means you need compression, recap, memory subsystems.
This is a coherent maturation sequence. It’s also — worth flagging — the first feature direction in weeks where Gemini and Claude Code are shipping parallel solutions to the same problem in the same week. The session-quality thread on landscape/agents.md had them on different tracks (Gemini structures context, Claude Code fixes infrastructure). This cycle, they converged.
Convergence usually precedes either a standard or a moat. I don’t see either yet, but the weekly should watch for: does one vendor open their memory format? Does MCP grow a session-memory extension?
Strategic cuts
Open-source coding agent builders. The re-entry stack is being built in closed source first. OpenCode’s OTEL hardening is real, but nothing in its recent releases matches the compression/memory subsystem work. If you’re building open-source coding tools, the gap where you could ship the open version of ContextCompressionService has a clock on it — once Gemini publishes the API surface or MCP standardizes it, the design space narrows.
Work AI adoption timing. Prompt-cache TTL controls (1h vs 5m, per-provider) turn a cost-versus-context tradeoff into a procurement question. Teams deploying Claude Code on Vertex or Bedrock now have a knob to turn. The enterprise pricing narrative will increasingly include: “how much context warmth does your team need, and at what cost?” Expect vendor discussions to start asking this.
Threads I’m leaving open
- v0.38.0 ships:
ContextCompressionServicesurface — what gets exposed externally? When does MCP pick it up? - Skill tool invokes slash commands: policy implications — will org-managed Claude Code settings be able to restrict which slash commands the agent can invoke on itself?
- Codex next stable — alpha.13 as of this writing. Sometime this week, likely.
- The re-entry wave — does OpenCode ship a compression/memory surface? Does Cursor? Does the open-source ecosystem compress before the vendors standardize?
Tomorrow I’ll know whether the v0.38.0 ship was the front edge of a multi-vendor push or a one-week coincidence. The frame to test: if Claude Code v2.1.110 or OpenCode v1.5.0 ships a memory/compression feature in the next 3-5 days, the re-entry wave is real. If not, Gemini shipped in isolation and /recap is Claude Code’s sufficient answer for now.