Claude Code 2.1.229 Stabilizes Remote Control

Claude Code 2.1.229 is an August 12, 2026 official changelog release from @anthropic for Claude Code. Remote Control resumes, gateway streaming, self-hosted runner hooks, plugin command sources, and strict MCP OAuth redirects. This release stabilizes the session edges more than it adds a big new surface. For people tracking Claude Code mcp behavior, the important fix is OAuth redirect compatibility with strict authorization servers.
Resume the last Remote Control session without guessing
The headline change is documentation for claude remote-control --continue, which resumes the most recent Remote Control session. Remote Control is Claude Code’s way to keep working with a session across a local terminal and remote clients, without treating every handoff as a fresh conversation.
That matters when a session moves from a laptop terminal to a cloud or remote client and back again. Before this, the human habit was often “find the right session, hope it is the one I meant, and reopen it.” The new documented command gives that habit a name.
Don't assume --continue fixes every stale session problem. The same changelog also says ListAgents now marks disconnected Remote Control sessions as offline and labels cloud sessions as cloud. In other words, resuming is cleaner, but you still need to notice when the thing you are resuming is no longer alive.
A small example: you start a Claude Code session on payments-api, step away, then reopen your laptop after a remote client has been driving the work. claude remote-control --continue should be the first thing you try before rebuilding context by hand.
Keep long streams alive through quiet pauses
Claude Code 2.1.229 adds SSE keepalive pings to gateway streaming responses during long thinking pauses. The changelog calls out Vertex and Bedrock upstreams, where an idle timeout can disconnect a stream while Claude is still thinking.
This is one of those changes that feels invisible when it works. A long tool-heavy answer no longer has to look like a dead connection just because no tokens are arriving for a while.
It also pairs with two terminal-output fixes: long responses that partly disappeared while streaming, and long responses that were printed twice. If you review work from terminal logs, those bugs were not cosmetic. Missing output can change what you think the agent did.
The limit is that keepalive pings do not make slow work fast. They only reduce false disconnects during quiet windows. If a gateway, proxy, or corporate network has its own aggressive rules, you still need to test the real path your repo uses.
Match hooks and plugin sources across environments
The release adds server-supplied Claude Code hook support for self-hosted runner sessions, matching managed-environment behavior. A hook is a configured command that runs at a defined point in the Claude Code lifecycle, such as before a tool call or after a file edit.
That closes an awkward gap. A repo can have a hook boundary that works in a managed environment, then silently behave differently when the same workflow runs on self-hosted infrastructure. Version 2.1.229 makes that less surprising.
The changelog also adds plugin marketplace command sources. A local command, such as one exposed by an IDE, can print the plugin directory; Claude Code re-resolves that directory each session and applies it without a restart. With mode: "link", the directory is used in place.
That is handy for local plugin development. It is also a trust boundary. If an IDE command chooses the plugin directory, treat that command as part of the environment you are trusting, not as a neutral file picker.
Read the smaller fixes as boundary hardening
Several fixes in 2.1.229 are about bad-shaped data crossing a boundary. Claude Code fixed a crash to the error screen when a tool call had a non-string glob, file_path, or command value. It also fixed a Windows crash when a message or tool call referenced a file by an extended-length or UNC path.
There is a narrow-terminal fix too. A progress bar or markdown table could trigger a RangeError in a very small terminal window, including at startup when running claude --continue or claude --resume.
The MCP OAuth fix is in the same family. MCP is the Model Context Protocol, a standard way for Claude Code to connect to external tools and context servers. In 2.1.229, Claude Code uses 127.0.0.1 instead of localhost in the redirect URI, which helps with strict authorization servers.
The release also fixes auto mode failures for users who disable the attribution header through CLAUDE_CODE_ATTRIBUTION_HEADER on direct Anthropic API connections, and fixes /model rejecting Sonnet or Opus 1M for claude.ai subscribers behind a custom ANTHROPIC_BASE_URL gateway. These are not glamorous changes. They are the kind that keep edge-case setups from turning into all-day debugging.
If you keep lightweight repo conventions, link these notes beside the relevant Claude Code workflow rather than burying them in chat history. The related Claude Code team conventions page is a good place to keep the durable pattern, while incident-specific details can stay in the issue or PR. For a different kind of boundary problem, see the Claude Code User-Agent Email Leak Report.
Try 2.1.229 safely in one repo
Use one active repo and test the paths this release actually touches. Do not make this a giant environment exercise. Pick the repo where Remote Control, a gateway, hooks, or an MCP OAuth flow already exists.
Copy this as a small receipt for payments-api or your equivalent repo:
# Claude Code 2.1.229 smoke receipt
Repo: payments-api
Date:
Claude Code version: 2.1.229
Tester:
## Remote Control
- [ ] Start a Remote Control session.
- [ ] Disconnect one client.
- [ ] Run: claude remote-control --continue
- [ ] Confirm the resumed session is the expected one.
- [ ] Confirm disconnected sessions show as offline, not active.
## Streaming through gateway
- [ ] Run one long task through the normal gateway path.
- [ ] Watch for idle-timeout disconnects during long thinking pauses.
- [ ] Confirm long output is not missing and not duplicated.
## Hooks and plugins
- [ ] Run the repo’s normal hook path in the self-hosted runner.
- [ ] Compare behavior with the managed environment, if one exists.
- [ ] If using marketplace command sources, confirm the local command prints only the intended plugin directory.
- [ ] If using mode: "link", confirm edits are intentionally live.
## MCP OAuth
- [ ] Reconnect one strict MCP authorization server.
- [ ] Confirm the redirect URI uses 127.0.0.1 behavior successfully.
- [ ] Record any server that still rejects the flow.
## Terminal and platform checks
- [ ] Try claude --continue in a very narrow terminal window.
- [ ] On Windows, open a file path that uses UNC or extended-length form, if your repo has one.
- [ ] Record crashes, duplicated output, or missing output with exact command and terminal size.
The practical Claude Code mcp check is the OAuth line. If your repo connects Claude Code to GitHub, Jira, a document store, or an internal knowledge base through MCP, test the strictest authorization server first. That is where the localhost versus 127.0.0.1 change should matter.