Skip to main content

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.json changes, 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.
  • --resume no longer fails, and --continue no 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 grep file operands, and cd DIR && cat FILE compounds; grep -r/cp -r over 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 forceRemoteSettingsRefresh is 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_TOKENS is no longer ignored for Vertex-style model IDs (@YYYYMMDD suffix) 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

  1. Check your installed version: claude --version
  2. Update in place: claude update
  3. If your allowedMcpServers allowlist was filtering out a server defined in managed-mcp.json, that server now loads on upgrade because allowedMcpServers governs only servers users add; list it in deniedMcpServers to keep it off.