claude-code 2.1.229 Repairs Remote Sessions

By Rogier Muller08.16.26
claude-code 2.1.229 Repairs Remote Sessions

This research library uses AI-assisted source research and drafting. Linked sources support product claims; analysis and proposed exercises are our interpretation. Unless an article documents a test and its results, do not read it as a hands-on review or an independently verified benchmark.

claude-code 2.1.229 is a GitHub release of Claude Code that runs in the terminal, IDE, and GitHub. Long-running agent sessions can fail in boring ways, especially when they cross remote runners, gateways, terminals, plugins, and tool calls. This release is less about a flashy new command and more about making an existing Claude Code workflow survive real infrastructure. For readers tracking Claude Code mcp, the relevant part is not a new protocol feature, but the way plugin command sources and runner hooks make integrated sessions feel more consistent.

Read v2.1.229 as a durability release

The headline change is documented support for claude remote-control --continue, which resumes the most recent Remote Control session. That matters because Remote Control only feels useful when you can leave a session, come back, and keep the thread without spelunking through old IDs.

Claude Code is a terminal-first coding agent that can inspect a repository, run tools, edit files, and help with git work from natural language prompts. MCP is the protocol Claude Code uses to connect an agent session to external systems through servers, such as issue trackers, document stores, databases, and internal tools.

The release also adds server-supplied Claude Code hook support for self-hosted runner sessions, matching the behavior already available in managed environments. That is a small line in the release notes, but it closes an awkward gap: a runner that behaves one way in a hosted path and another way in a self-hosted path creates hard-to-debug automation drift.

Don't read this as only a Remote Control patch. The release notes also mention gateway streaming keepalive pings during long thinking pauses, offline labels for disconnected Remote Control sessions, cloud labels for cloud sessions, plugin marketplace command sources, and several crash fixes. Those are all session-survival changes.

Notice the clever parts hiding in the plumbing

The SSE keepalive change is the kind of fix nobody notices when it works. During long thinking pauses, gateway streaming responses now send keepalive pings to help prevent idle-timeout disconnects on Google Cloud's Vertex AI and Amazon's Bedrock upstreams.

That matters because the user-facing symptom is not usually phrased as an upstream timeout. It looks like Claude stopped, the terminal hung, or the response vanished while the agent was still doing useful work somewhere else.

The plugin marketplace command-source change is also interesting. A local command, such as one provided by an IDE, can print the plugin directory; Claude Code re-resolves that directory each session and applies it without requiring a restart. In link mode, the session uses that directory in place.

Don't assume dynamic plugin resolution means every repo should depend on moving local state. It is better for development loops and local IDE integration than for reproducible project behavior. If a command source points to a plugin directory that changes under your feet, record that in the session note or the review will be murky.

Treat the fixes as test cases, not trivia

v2.1.229 fixes several failure modes that are easy to wave away until they hit your own terminal. Long streaming responses could partly disappear while streaming and then print twice. A tool call with a non-string glob, file_path, or command value could crash to an error screen, including when resuming the affected session.

There is also a narrow-terminal fix. A progress bar or markdown table could trigger a RangeError crash in a very narrow window, and that could also affect claude --continue or claude --resume at startup. Windows users get a related path-handling fix for messages or tool calls that reference extended-length file paths.

These are not glamorous bugs. They are exactly the bugs that make engineers distrust resumability, because a session fails at the point where the agent has the most context.

The practical move is to test the ugly edges on purpose. Open a tiny repo, make the terminal comically narrow, ask Claude Code to produce a markdown table from test results, pause and resume the session, then try Remote Control continuation. If nothing dramatic happens, that is the point.

Try it on one small repo first

Use a small repository with a normal command path: install dependencies, run tests, ask Claude Code to explain a failure, then resume the session. A toy service with package.json, pytest, or a Makefile is enough. You are not benchmarking intelligence here; you are checking whether session boundaries behave.

A simple command path looks like this:

claude
claude remote-control --continue
claude --continue

If your setup uses Claude Code mcp integrations, keep the first pass boring. Connect one read-only MCP server or one local plugin command source, then ask Claude Code to summarize what it can access before asking it to edit files. The goal is to isolate whether Remote Control, streaming, hooks, or plugin resolution is the thing that changed your experience.

For self-hosted runner sessions, pay special attention to hooks. A useful hook boundary is: hooks may format, lint, annotate, or block risky actions, but they should not silently rewrite unrelated files or reach outside the workspace without a clear reason. That boundary belongs in the review note, not only in someone's memory.

If you keep lightweight repo conventions, link this test back to your Claude Code team conventions and keep the note short. A concise CLAUDE.md can say which commands are safe, but v2.1.229 is really about whether the session survives the trip through runners, streams, and resumes. For a nearby release-focused read, see Claude Code 2.1.229 Stabilizes Remote Control.

Copy this v2.1.229 test note

Use this as a small upgrade receipt after trying the release. It is intentionally boring. Boring receipts are the ones you can trust later.

Area What changed in v2.1.229 What to test
Remote Control claude remote-control --continue is documented for resuming the most recent Remote Control session. Start a Remote Control session, disconnect, run the continue command, and confirm the latest session resumes.
Self-hosted runners Server-supplied Claude Code hooks now work for self-hosted runner sessions like managed environments. Run one harmless hook, such as lint or format check, and confirm it fires only at the intended boundary.
Streaming Gateway responses now include SSE keepalive pings during long thinking pauses. Ask for a long analysis over a cloud upstream and watch for idle disconnects or duplicated terminal output.
Plugin commands Marketplace command sources can be resolved from a local command each session without restart. Point a local command at a plugin directory, restart the session, and confirm the directory is re-resolved.
Session list ListAgents marks disconnected Remote Control sessions as offline and labels cloud sessions as cloud. List sessions after disconnecting one and check whether the label matches reality.
Crash fixes Several crashes around tool-call value types, narrow terminals, streaming output, and Windows paths are fixed. Reproduce your old failure if you had one; otherwise test narrow terminal resume and a long markdown response.

A good hook review receipt can be even shorter:

Release tested: claude-code 2.1.229
Repo: api-starter
Runner: self-hosted
Hook checked: lint-on-write
Boundary: may read workspace and run lint; may not edit files
Remote resume checked: yes
Streaming checked with long response: yes
Unexpected output duplication: no

Further reading