Claude Code v2.1.238: Readline Keybindings, headersHelper for Plugin Marketplaces, and New Self-Hosted Runner Flags
Claude Code v2.1.238 adds a readline keybinding flavor, headersHelper for plugin marketplaces, self-hosted runner shutdown and proxy flags, stricter MCP headersHelper trust rules, and many Remote Control fixes.
Claude Code v2.1.238 is a large release with 39 changelog entries. It adds a keybindingFlavor setting for readline-style editing, header-minting headersHelper commands for plugin marketplaces, and new shutdown and proxy-authorization options for claude self-hosted-runner, while tightening when MCP headersHelper commands may run. Many of the remaining entries fix Remote Control and cross-session messaging, alongside a fix for unbounded memory growth in long interactive sessions.
What’s New
keybindingFlavor Setting
A new keybindingFlavor setting controls prompt editing behavior. Set it to "readline" to make Ctrl+W in the prompt delete back to the previous whitespace, as in Bash; the default ("classic") is unchanged.
headersHelper for Plugin Marketplaces
A headersHelper on a url marketplace or a catalog entry runs a command that mints HTTP headers, such as a short-lived token, for catalog and same-origin archive fetches. A catalog entry’s headersHelper runs only when you install or update that plugin, after its command is shown, and claude plugin install/update ask for confirmation with [y/N] (or you can pass -y).
New claude self-hosted-runner Options
With --defer-shutdown-max-min <minutes>, the runner keeps serving attached sessions on SIGTERM, parks what is left after that many minutes, and then exits. The new --proxy-authorization-command and --proxy-authorization-file options support egress proxies that require a freshly issued Proxy-Authorization header on every connection.
Stricter Trust Rules for MCP headersHelper
An MCP headersHelper in a project .mcp.json, and inline MCP servers in project or --add-dir agent files, now require that folder’s trust dialog to have been accepted, including under claude -p. Helpers from a project .mcp.json, plugin, or agent file now run without inherited credential environment variables, while user, managed, and claude.ai-scope helpers now run from the Claude config directory.
Ctrl+L and Cmd+K Only Repaint in Fullscreen
In fullscreen, Ctrl+L and Cmd+K now always just repaint the screen. The double-press /clear shortcut was removed, and 1-row nvim terminals no longer trigger automatic /clear loops.
Disabled Servers in claude mcp list and claude mcp get
claude mcp list and claude mcp get now show disabled servers as ⊘ Disabled instead of connecting to them for a health check.
Fixes and Improvements
- Memory: Unbounded memory growth in long interactive sessions is fixed; subagent tool results are now released once they leave the recent display window.
- Output styles: Custom, project, and plugin output styles no longer drift back to the default voice mid-session.
- Remote Control connectivity: Brief HTTP 403 refusals from a network edge, VPN, or proxy are now tolerated for up to 3 minutes, with the refusing party named when a block persists. A brief network hiccup that delays renewing your sign-in no longer disconnects the session with “login expired”; it now retries and stays connected. A session whose process crashed no longer stays unavailable until
claude remote-controlis restarted and can be reused when you next message it. - Remote Control sessions: Sessions started by
claude remote-controlno longer inherit session-scoped environment variables from the launching shell. Messages sent from the web or Desktop while Claude is mid-turn no longer disappear from the transcript after the turn finishes. - Agents and cross-session messaging:
ListAgents/SendMessageno longer report “Remote Control is not connected” in sessions run byclaude remote-control(server mode) or Desktop/IDE hosts, and now list and reach Remote Control peers. Sending to a session that refuses inbound messages (e.g.crossSessionInbound: "refuse") now reports “refused” instead of a silent success, and a session whose inbox drops your messages (rate limit or full queue) now tells your session instead of the messages vanishing silently. - Self-hosted runner: Self-hosted runners are no longer occasionally removed by the server after a single slow or lost poll request, which had handed their healthy session to another runner.
- MCP: stdio MCP servers no longer receive a
server/discoverrequest beforeinitialize, which had forced lazy servers to start their backend on every session open. MCP elicitation dialogs no longer show nothing for URLs longer than 4,096 characters. - Permission prompts: Permission prompts no longer drop the “don’t ask again” option when the project path doesn’t fit the terminal width, and lines in permission prompt diffs that contain wide multi-code-point characters (such as emoji) or tabs are no longer clipped. Bash tool permission checking is improved for zsh-specific syntax in shell conditionals.
- Prompt suggestions:
CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=truenow keeps prompt suggestions on when your account is near, but not over, its usage limit. - Terminal input: Held Backspace is no longer ignored on terminals that send Ctrl+H for Backspace when keystrokes arrive in large bursts, such as over slow SSH/mosh links.
- Errors: A proxy’s refusal of a connection is now reported as such, naming the proxy, instead of as a generic network error.
- Startup: Bare
claudestarts sooner on macOS, and the automatic update check now runs about 10 seconds after launch instead of competing with startup for CPU. claude-apiskill: The bundledclaude-apiskill is updated for the Managed Agents Aug 19 release, covering web search/fetch domain settings and memory stores on self-hosted sandboxes.
This release contains 39 changes in total; see the official changelog linked below for the complete list.
How to Update
- Check your installed version:
claude --version - Update in place:
claude update - Note two behavior changes: in fullscreen, Ctrl+L and Cmd+K now only repaint (the double-press
/clearshortcut is gone), and an MCPheadersHelperin a project.mcp.jsonnow runs only after that folder’s trust dialog has been accepted.