What changed
Claude Code 2.1.234 shipped on August 17, 2026. Sessions stopped by a claude.ai usage limit now pick themselves back up when the limit resets, and GitLab support extends into the footer and statusline. The rest is convenience work on opening dialogs mid-turn, a large cut to the built-in claude-api skill’s context cost, and more than 30 fixes clustered around permissions, Remote Control sync, and terminal rendering.
New features
-
Sessions continue automatically when a usage limit resets
Hitting a claude.ai usage limit stopped the session where it stood, and someone had to come back and restart it after the limit cleared. Claude Code now continues your session automatically when the limit resets; turn it off in
/config(“Continue automatically at usage limit”). -
GitLab merge request badge in the footer and statusline
2.1.233 taught the
--worktreeflag and theclaude agentsview to take GitLab merge request URLs, but the state of the MR you were working on was never visible. Repos with a GitLab remote and an authenticated glab CLI now showMR !Nin the footer and statusline, with draft/pending/green states. -
selection:clearkeybinding actionClearing a mouse text selection meant pressing Esc, which also interrupted or dismissed whatever was in progress. A key can now be bound to the
selection:clearaction, which clears an in-app text selection and nothing else; it also works in the agents view. -
CLAUDE_CODE_PROJECT_DIR_NAMEenvironment variableHosts that give each session its own config directory ended up with long, unreadable per-project transcript directory names. The new optional environment variable lets them choose a short name. It applies only when set.
Key improvements
-
Built-in
claude-apiskill costs far less contextLoading the built-in
claude-apiskill pulled in its reference docs wholesale, taking ~200k+ tokens. Reference docs are now loaded on demand, bringing it down to ~25k. -
/permissionsand/add-dirwork while Claude is workingChanging a permission rule or adding a working directory meant waiting for the current turn to finish.
/permissionscan now be opened while Claude is working, and rule changes apply to the rest of the current turn./add-dir <path>can be used mid-turn too, and in the fullscreen TUI the/add-dir,/autocompact,/theme,/help,/configand/advisordialogs open mid-turn. -
Your own prompts render markdown in the transcript
Only replies were rendered as markdown; the prompts you typed stayed unformatted. Your own prompts now render highlighted code blocks, inline code and lists the same way replies do.
-
/goalno longer stays armed or waits foreverA
/goalstayed armed after a turn died on an unrecoverable error (revoked auth, an exhausted credit balance, a context overflow). It now clears itself with a notice. And when background tasks keep a goal waiting for 30+ minutes, Claude checks in on them instead of waiting indefinitely — setCLAUDE_CODE_GOAL_CHECKIN_MINUTES=0to opt out. -
Better “API returned an empty or malformed response” error
The error said nothing about what actually came back, leaving nothing to debug from. It now reports the content type, body kind, size and request ID, plus why the original streaming request failed.
-
Sharper auto-generated session titles
Auto-generated titles restated the request as a sentence (“Fix the login button on mobile”), which made session lists hard to scan. They now read as short, specific names (“Login button bug”).
-
Esc in fullscreen no longer clears a mouse text selection
In fullscreen mode, Esc dropped your mouse text selection along with interrupting or dismissing. Esc now interrupts or dismisses as usual and the selection stays highlighted.
-
Account email is for identifying you only
Claude is now told to use your account email only to identify you, and not to send it to unrelated services unless you ask.
-
NT-namespace path rejection extended to the remaining pre-approval file accesses
2.1.233 closed off
\??\Windows paths slipping past UNC path validation, but some file accesses that happen before approval were still open. Remote file reads, session restore, CLAUDE.md includes, workflow scripts and file uploads now reject Windows NT-namespace (\??\) paths too, hardening the rest of that NTLM credential-leak vector. -
“Default teammate model” removed from
/configThe separate default-model setting for agent-team teammates diverged from actual behavior. It has been removed; teammates now use the leader’s model unless the spawn names one.
-
claude setup-tokenrejects unexpected argumentsExtra arguments were silently ignored, so a mistyped invocation looked like it had run as intended.
claude setup-tokennow rejects unexpected extra arguments. -
Less noise under running tools
Auto mode printed a redundant “Allowed by auto mode classifier” line under every Agent tool call; that line is gone. The elapsed-time counter on the running tool header is also dimmed so it no longer competes with the bold counts.
Bug fixes
Permissions & security
- Auto mode in very long sessions repeatedly re-checking and denying sandboxed commands’ network access after the conversation had been compacted — fixed.
- Session-scoped permission answers (including denies) being dropped when answering background subagent tool permission prompts — fixed.
- Permission previews relaying to channel servers not admitted by the inbound trust gate — fixed; a server’s explicit permission-capability opt-out is now honored too.
- Credential masking on relayed permission previews hiding commands, paths or destinations from the approver — fixed; oversized private-key blocks now redact under full-strength redaction.
- Provider API tokens that mask on permission previews not masking when directly followed by shell delimiters — fixed.
- MCP diagnostics printing resolved secrets — fixed; scope-conflict warnings now show the configured
${VAR}form, and connection-failure details show only the server origin. strictKnownMarketplacesallowlists accepting SCP-style git marketplace sources whose host differs from the one git would actually connect to — fixed.- Trust prompts omitting the repository-wide scope warning when the directory was first seen before the repository existed there — fixed.
Rendering & input
- Markdown rendering becoming extremely slow for some messages containing unusual Unicode sequences — fixed.
- A
---horizontal rule in rendered markdown running into the line after it — fixed. - Modal text such as the
/loginOAuth URL losing characters when copied in fullscreen — fixed. - Accepting the “Try the new fullscreen renderer?” prompt restarting the session without its permission mode (e.g.
--dangerously-skip-permissions), tool allow/deny rules, model or effort flags — fixed. /tuidropping launch--allowed-tools/--disallowed-toolsrules when it restarts — fixed; it now declines to switch, with the reason, when the session has restrictions a restart can’t carry over.- A cluster of queued
!shell command issues — fixed: a queued!command being sent to the model as plain text after pressing up-arrow to edit the queued input, queued messages reappearing in the prompt history while still queued, Esc while selecting a queued message interrupting the turn, and!mode sticking after a mid-turn submit. - Dialogs like
/permissionsopened while a!shell command was running being dismissed when the command finished — fixed. - Consecutive shell commands splitting into multiple “Ran 1 shell command” rows when todo/task updates were interleaved between them — fixed.
- An IDE diff tab closing during a permission re-prompt answering the new prompt with the previous input — fixed.
Remote Control & session connectivity
- Files sent to the user during Remote Control sessions hosted by Claude Code Desktop or VS Code not uploading — fixed; they now open on phone and web instead of showing an empty card.
- Signing this computer in to a different claude.ai account or organization surfacing as a misleading HTTP 404 hours later — fixed; the running session now stops within seconds and says why.
- Remote Control sessions drifting out of sync on permission mode, model and effort — fixed; sessions started from Claude Code Desktop or VS Code keep phones and claude.ai/code updated on permission mode (and claude.ai/code on the model) as they change, and effort picks made on a phone or on claude.ai/code now apply to terminal- and Desktop/VS Code-hosted sessions.
- The stale-token reminder leaking into Claude’s automatically resumed turn after
/loginwhileCLAUDE_CODE_OAUTH_TOKENis set — fixed; it now appears only to you. - Claude Desktop inter-session messages being silently dropped by the recipient session when cross-session messaging read as disabled — fixed; this left the sender’s query “thinking” for many minutes.
SendMessageandListAgentstreating unseen sessions as absent — fixed; they now say when your account’s session list was too long to check completely.SendMessagerejecting a recipient copied fromListAgentswhen the session name is at the 200-character cap or emoji-heavy — fixed.
Other fixes
- A crash when an API response on the non-streaming fallback path (typically via third-party gateways) contained a thinking block missing its thinking field or a text block missing its text field — fixed.
- Repository detection mis-reading the host of git remotes with unusual userinfo, producing links and repo-specific behavior for the wrong host — fixed.
- Expired Anthropic profile credential — now points you at
/loginwhen a claude.ai login would take precedence. - [Windows] Startup stalling on repeated rename retries when
~/.claude.jsonis read-only — fixed.
Notes
- Automatic continuation is on by default — sessions resume when a claude.ai usage limit resets. If you want a session to stay parked where it stopped, turn off “Continue automatically at usage limit” in
/config. - Esc behaves differently in fullscreen — it no longer clears a mouse text selection. Bind a key to the
selection:clearaction if you want a one-key way to clear it. - The “Default teammate model” setting is gone — if a setup depended on it, agent-team teammates now use the leader’s model unless the spawn names one.
- The
/goal30-minute check-in can be opted out — setCLAUDE_CODE_GOAL_CHECKIN_MINUTES=0when long-running background tasks are expected. - The GitLab MR badge needs an authenticated glab CLI — a GitLab remote alone is not enough; the badge only appears when glab is authenticated.
CLAUDE_CODE_PROJECT_DIR_NAMEis opt-in — leave it unset and per-project transcript directory names stay as they were.