Claude Code v2.1.259: Managed MCP Servers, --permission-prompts none, and GitLab MR Recognition
Claude Code v2.1.259 adds the managedMcpServers managed setting, --permission-prompts none for headless hosts, GitLab merge request recognition, and --json for claude plugin validate.
Claude Code v2.1.259 is a mid-sized release with 37 changelog entries. It lets organizations provide HTTP/SSE MCP servers to every user, adds a no-prompt mode for unattended headless hosts, and recognizes GitLab merge request commands. It also narrows what allowedMcpServers governs and fixes issues with concurrent sessions, Bash deny rules, managed settings, and remote-control sessions.
What’s New
Managed MCP Servers for Organizations
The new managedMcpServers managed setting lets organizations provide HTTP/SSE MCP servers to every user, using the same entry shape as .mcp.json. Entries that name a command to run are skipped.
allowedMcpServers Now Governs Only User-Added Servers
allowedMcpServers now applies only to servers that users add. A literal managed-mcp.json server that your allowlist used to filter out now loads on upgrade; use deniedMcpServers to keep it off.
No Permission Prompts on Headless Hosts
--permission-prompts none is intended for unattended headless hosts: anything that would prompt is denied automatically, while the active permission mode (including auto mode) keeps making its decisions.
GitLab Merge Request Recognition
Claude Code now recognizes glab mr create/merge/close/reopen/note/update, so GitLab merge requests show as MR !N in the collapsed tool summary and refresh the footer MR badge.
Machine-Readable Plugin Validation
claude plugin validate now accepts --json and produces a machine-readable validation report.
VS Code Session Filters
The session list sidebar adds an Active quick filter and a status filter menu (Needs input, Working, Completed).
Fixes and Improvements
Sessions and state
- Concurrent sessions no longer silently revert each other’s
~/.claude.jsonchanges, so workspace trust no longer resets and MCP/project state is no longer lost when running many sessions at once. - A conversation whose thinking was rejected once is no longer rejected again on every later turn.
--resumeno longer fails, and--continueno longer opens an empty conversation, when a saved session contains an attachment entry with no payload.- Fullscreen mode no longer shows a blank conversation after a long turn with hundreds of tool calls.
Permissions and managed settings
- Bash
Read()deny rules now cover files given as option values (--ignore-revs-file=.env,-f.env,@file),git diff/git grepfile operands, andcd DIR && cat FILEcompounds;grep -r/cp -rover a directory holding a denied file now asks. - Managed settings no longer go silently unenforced when the managed-settings file, a drop-in, the MDM plist, or the HKLM value cannot be parsed: Claude Code now refuses to start and names the source.
- Managed
forceRemoteSettingsRefreshis no longer ignored at startup when a policy helper configured by MDM or the managed settings file has already run.
Models
- Frontmatter
model:on custom commands and skills is no longer ignored in interactive sessions. - Auto mode no longer runs a turn on a model it doesn’t support when a command or skill’s frontmatter
model:names one; the turn now keeps the session model. CLAUDE_CODE_MAX_CONTEXT_TOKENSis no longer ignored for Vertex-style model IDs (@YYYYMMDDsuffix) of model versions Claude Code doesn’t recognize.
Prompt cache
- The prompt cache is no longer invalidated when the OAuth token refreshes in sessions with telemetry disabled.
- Blocking Stop hooks no longer cause the turn after a block to lose the model’s reasoning from that turn and, on some models, miss the prompt cache.
Remote sessions, workflows, and worktrees
- Stop now actually stops background agents and workflows in remote-control sessions; killed tasks stay visible and re-stoppable until their processes exit.
- Resuming a workflow run while its previous stopped run is still exiting no longer risks running duplicate copies of its agents.
- Remote and scheduled sessions no longer do nothing after a connector-tool permission prompt is approved while the session is paused.
- Worktree-isolated sessions no longer refuse common Bash loops, xargs pipelines, and launcher-wrapped commands that cannot reach the main checkout.
MCP and performance
- MCP servers that disconnect while their tools are being listed at startup now report the error instead of showing as connected with no tools.
- Remote (claude.ai) sessions no longer take 60 seconds to start a turn after a browser-hosted MCP server’s page has gone away.
- Terminal resize and first-render performance for long responses improved by reusing text measurements, and in headless/SDK sessions the first turn begins up to 50 ms sooner when MCP servers finish connecting.
v2.1.259 contains 37 changes in total; see the full changelog for the complete list.
How to Update
- Check your installed version:
claude --version - Update in place:
claude update - If your
allowedMcpServersallowlist was filtering out a server defined inmanaged-mcp.json, that server now loads on upgrade becauseallowedMcpServersgoverns only servers users add; list it indeniedMcpServersto keep it off.