Claude Code 2.1.259
37changes- Distribute managed HTTP/SSE MCP servers to users.
- Add --permission-prompts none for unattended runs.
- Recognize GitLab MR operations and show MR numbers.
- Export plugin validation reports as JSON.
- Preserve nested subagent results when resuming.
- Stop concurrent sessions from overwriting shared settings.
New features
5Unattended permission handling
Unattended headless runs deny actions that need a prompt while the active permission mode, including auto, keeps deciding.
▤ In the docsOrganization-managed MCP servers
Organizations can distribute HTTP/SSE MCP servers to all users; command-based entries are skipped.
JSON plugin validation reports
Export plugin validation results as JSON for automated processing.
▤ In the docsRecognize GitLab merge requests
Recognized glab mr commands show MR numbers in tool summaries and update the footer badge.
Improvements
6Preserve nested subagent results
Nested background subagent results persist in the parent history, surviving resume and appearing in shared histories.
Faster terminal resizing and first render
Long responses render and resize faster by reusing text measurements.
Readable workflow agent results
Workflow agent JSON results gain indentation, syntax colors and real line breaks, with expandable long results.
More changes (3) Fewer changes
Faster headless session startup
Improved headless/SDK session start: the first turn begins up to 50 ms sooner when MCP servers finish connecting
GitLab guidance from /install-github-app
Improved /install-github-app to explain it is GitHub-only and point to the GitLab CI/CD docs when run inside a GitLab repository
Allowlist behavior for managed MCP servers
Changed allowedMcpServers to govern only servers users add: a literal managed-mcp.json server your allowlist used to filter out now loads on upgrade; use deniedMcpServers to keep it off
Bug fixes
26Concurrent settings writes
Concurrent sessions no longer overwrite shared settings, reset workspace trust or lose MCP and project state.
Reject unreadable managed settings
Invalid managed settings now stop startup with the failing source, instead of silently leaving organization policy unenforced.
More changes (24) Fewer changes
Repeated thinking rejection
Fixed a conversation whose thinking was rejected once being rejected again on every later turn
Bash read-deny coverage
Fixed Bash Read() deny rules not covering files given as option values (--ignore-revs-file=.env, -f.env, @file), git diff/git grep file operands, or cd DIR && cat FILE compounds; grep -r/cp -r over a directory holding a denied file now asks
Preserve the cache during token refresh
Fixed the prompt cache being invalidated when the OAuth token refreshed in sessions with telemetry disabled
Blank fullscreen conversations
Fixed fullscreen mode showing a blank conversation after a long turn with hundreds of tool calls
Supported models in auto mode
Fixed auto mode running a turn on a model it doesn't support when a command or skill's frontmatter model: named one; the turn now keeps the session model
Vertex context-token limits
Fixed CLAUDE_CODE_MAX_CONTEXT_TOKENS being ignored for Vertex-style model IDs (@YYYYMMDD suffix) of model versions Claude Code doesn't recognize
Latest lines in live command output
Fixed the live output preview of a running shell command hiding its newest lines when an earlier line wrapped
Cache GitHub connection checks
Fixed a background GitHub connection check that ran on every launch for claude.ai users; the result is now remembered across launches
Resume sessions with empty attachments
Fixed --resume failing (and --continue opening an empty conversation) when a saved session contains an attachment entry with no payload
Custom command and skill model selection
Fixed frontmatter model: on custom commands and skills being ignored in interactive sessions
Publish artifacts from older sessions
Fixed Artifact publishing failing once with an "unexpected parameter note" error in conversations continued from an older version
Force managed settings refresh
Fixed managed forceRemoteSettingsRefresh being ignored at startup when a policy helper configured by MDM or the managed settings file had already run
Hook-created worktree detection
Fixed worktree isolation refusing hook-created worktrees on machines where git rev-parse fails with a message other than "not a git repository"
Cloud OpenTelemetry identity attributes
Fixed OpenTelemetry metrics and events from cloud sessions missing the user.email, organization.id, and user.account_uuid attributes
Disconnected MCP server status
Fixed MCP servers that disconnect while their tools are being listed at startup showing as connected with no tools instead of reporting the error
Truncated file permission diffs
Fixed the file edit permission dialog sometimes showing a changed line cut short with no indication
Preserve repository identity
Fixed repository detection dropping a known repo identity after a transient git probe failure
Stop remote background tasks
Fixed Stop not actually stopping background agents and workflows in remote-control sessions: killed tasks now stay visible and re-stoppable until their processes exit
Prevent duplicate workflow resumes
Fixed resuming a workflow run while its previous stopped run was still exiting, which could run duplicate copies of its agents
Normalize marketplace repository URLs
Fixed marketplace repo URLs on github.com with a trailing slash or dangling ?/# producing an unusable .git clone URL
Preserve reasoning after Stop hooks
Fixed blocking Stop hooks causing the turn after a block to lose the model's reasoning from that turn and, on some models, miss the prompt cache
Remote turns after browser MCP disconnects
Fixed remote (claude.ai) sessions taking 60 seconds to start a turn after a browser-hosted MCP server's page had gone away
Bash loops in isolated worktrees
Fixed worktree-isolated sessions refusing common Bash loops, xargs pipelines and launcher-wrapped commands that cannot reach the main checkout
Resume after connector approval
Fixed remote and scheduled sessions doing nothing after a connector-tool permission prompt was approved while the session was paused