New managed settings for self-hosted sessions, including a repository allowlist#
Admin config gains a selfHosted block and a codeAllowedRepositories list for self-hosted sessions; the repo list isn't applied on-device yet
Sessions can now start in a sandbox VM by default when an option is set. The new --unsandboxed flag opts out of that and of cloud-by-default too. Setting CLAUDE_CODE_ATTACHMENTS_BY_PATH turns on the send-file tool and stops Claude Code uploading the files it sends you. On self-hosted runners, all session traffic can now go through a proxy you run. Admins get a beta selfHosted section in managed settings for self-hosted session hosts. A new codeAllowedRepositories setting lists the git repositories Claude Code may work in on those hosts.
Claude Code is now listed as a reader of organization-managed settings, but those settings are not served to it yet. Organization config also gains an Allow Quick Write setting that is not switched on. Claude Desktop accepts codeAllowedRepositories but does not apply it to on-device sessions yet. The memory dialog has a new cloud memory option that does nothing yet. A new check for one tool in a permission mode called arbiter stays off unless the server turns it on.
An MCP tool whose parameter description the API rejects no longer breaks the conversation. Claude Code now blanks that description, warns you and retries, so the tool stays callable. Starting with --worktree now loads plugin WorktreeCreate hooks first, so a plugin can handle worktree creation. Command hooks now stop when their configured timeout runs out. The CLAUDE_CODE_FORCE_SANDBOX environment variable is removed. Passing --sandbox or --no-sandbox to claude remote-control is now an error instead of being silently accepted.
Written by our agent from the shipped bundle, not by Anthropic.
Setting CLAUDE_CODE_ATTACHMENTS_BY_PATH enables the send-file tool without its usual checks, skips uploads and counts the session as remote
ElsewhereAdmin config gains a selfHosted block and a codeAllowedRepositories list for self-hosted sessions; the repo list isn't applied on-device yet
Settings & configSession start can now place a session in a sandbox VM by default, and a new --unsandboxed flag opts out of that and of cloud-by-default
Permissions & safetyThe prompt draft can now tag edits with their origin and report changes, and extensions reach it through composer.attribute and attributeDraft
ExtensionsNew ui.view plugin capability switches the main view to an agent's transcript, and plugin calls judged under an outdated policy are refused
ExtensionsCLAUDE_CODE_FORCE_SANDBOX no longer existsPermissions & safetyWant the reasoning? Read walks the 47 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →Anything you can use today, anything that visibly changes, and anything worth poking at. One line each, open for detail.
Admin config gains a selfHosted block and a codeAllowedRepositories list for self-hosted sessions; the repo list isn't applied on-device yet
The organization config schema now lists Claude Code as a third reader, marked not served, and adds a quickWriteEnabled setting
New CCR_AGENT_PROXY_RELAY_MODE value agent_proxy_standalone routes all self-hosted session traffic through your own proxy and refuses to start otherwise
Unclear Whether operators set CCR_AGENT_PROXY_RELAY_MODE themselves or it is set for them by the service is not shown.
Signed managed-settings checks gain an unanchoredClaims option and return org and account IDs, alongside more restricted-mode handling changes
A separate cloudSessionsOauth sign-in lets Console users reach cloud sessions; logout revokes it, and cloud mode skips local signed caches
Unclear What starts this sign-in, and whether it is switched on for everyone, is not known.
Two new admin settings let organizations supply a signed security vendor package that the Cowork workspace installs as root when it starts, on macOS
In a multi-tenant mode, the sandbox uses per-tenant folders and blocks writes to .claude and resume files inside them
Unclear What turns on the multi-tenant mode is not known, so readers cannot tell whether it applies to them.
Gateway, Bedrock, Vertex, OTLP telemetry, attribution and tool policy settings in the shared managed config now list Claude Code as a reader
Unclear It is not confirmed that Claude Code acts on these settings yet, only that they now list it as a reader.
A new Claude Desktop admin setting, disableConnectorSignInInApp, keeps sign-in for claude.ai connectors in the system browser
The managed configuration format gains two fields: configuredHostPath, an absolute macOS or Linux path, and vendorId, a short lower-case name
Third-party model setups can set a minimum Desktop version, and the 1M setting now uses 1M context wherever it's available
Managed settings add microsoftAuthDefaultAccount for silent Microsoft 365 sign-in, and inferenceCredentialKind is now also read by Claude Code
Unclear It is not clear whether Claude Code reads microsoftAuthDefaultAccount or only the Windows desktop app does.
A new managed setting, deniedPluginMcpServers, blocks plugin MCP servers by address, and six more managed settings now list Claude Code as a reader
Unclear It is not confirmed that the Claude Code command-line tool itself enforces these settings, as opposed to them only being listed for it in the desktop settings schema.
Desktop admins can limit Claude.ai import to listed organizations and cap banner dismissals, and automatic3pImport no longer defaults to off
A Console sign-in can now be used to start cloud sessions, with clear errors when it can't be used
Starting a cloud session can now open a browser sign-in for your Console organization instead of requiring a claude.ai login
Unclear It is not clear which accounts or conditions make Claude Code take the Console sign-in route.
claudeCodeProcessWrapperEnabled now covers the 1p scope from desktop version 2.16120.0, not only the 3p scope
What would fix it?
Smaller changes and internals, grouped as the pipeline found them. Nothing is dropped, it is only further down.
12 more of these are in What probably matters to you, above.
PreToolUse and PermissionRequest hooks now have input rewrites validated, fail toward refusing or asking, and can't switch mode in some cloud sessions
Unclear Whether a malformed hook change is refused in an interactive session when the remote setting is off, or only recorded, is not settled.
Whether session hooks and plugin hooks may run now depends on a second mode, with its own allow-list for plugins
Unclear It is not clear what switches on the second mode or whether it is on by default.
Command plugins, marketplaces, hooks modules and /goal are held until organization settings are read; an unreadable policy now ends with a clear message
Unclear Which kinds of sessions wait for organization settings in this way is not clear.
Hook selection for organisation-managed setups now includes policy hooks delivered by plugins, and hooks that continue on failure can be marked contested
Unclear What being marked contested changes about whether a hook that continues on failure actually lets the action go ahead is not shown.
When creating a cloud session on a self-hosted runner, a mode or effort from your settings is no longer sent, with a notice to use --permission-mode
Cloud-session requests now handle Console-profile sign-ins separately and stop sending the trusted-device header for them
Unclear What decides whether the new Console-profile path for teleport is used is not stated.
A signed configuration document is now matched to your logged-in organisation and refused if the signing organisation differs
Unclear Whether a refused document because of an organisation mismatch makes Claude Code exit is not settled.
In a hosted session, only an organization's settings can place a mod above the user tier, and Claude Code now says so
Plugin helper entries are now held until your organization answers, and the plugin list hides entries whose plugin fails a check
Unclear It is not clear what check decides which plugin entries are hidden.
Hooks that run on another machine now report timing out separately from failing, and organization hooks no longer start with a plugin's environment
Plugin command sources and marketplace headersHelper commands no longer run in a tool server and wait until organization settings have loaded
A hooks module that was approved under a different policy text than the one now in force is skipped instead of run
allowedPluginMcpServers is now marked as read by Claude Code, and network endpoint lists now drop entries meant for other platforms
Interaction and tool spans in OpenTelemetry traces now include standard gen_ai attributes, and the recorded prompt can be redacted afterwards
Claude Code now skips your AWS auth refresh command in certain situations, reports it as failed and logs a reason
Unclear It is not clear which situations stop the AWS refresh command from running.
When attaching to a remote session on a self-hosted runner, Claude Code now skips checking whether the project is synced
deviceToolsEnabled and the selfHosted credential keys are retired, and gateways now reject settings that run Desktop sessions off the device
Startup hooks and plugin hooks now wait for organisation managed settings, and are skipped with a warning if those never arrive
Unclear Whether this waiting applies to every setup or only to some is not stated.
Signing in now checks the new account against the pinned organisation and rolls the sign-in back if it is refused
The strict sandbox text now says every command the model runs must be sandboxed, and the prefetch memory message no longer names a 64 MiB limit
Unclear It is not clear whether the sandbox now actually covers more commands or only the wording changed.
In Cowork cloud, once certain managed policy settings are tightened, a later settings update can no longer loosen them
An organisation setting for plugins is now marked as read by both the desktop app and Claude Code, with a stand-in for when it cannot be read
The allowed outbound hosts setting now says it covers Chat, including web fetch, alongside Cowork tasks and Code sessions
Unclear It is not clear whether Chat traffic is newly restricted by this list or was already restricted and only now described.
Output from the self-hosted runner now goes through one writer that stamps each line with the time, including stderr from the git --version check
Claude Desktop managed settings now refuse a config URL whose host, user name or password looks like an API key or token, and list crash dumps as data sent
Gateway login now limits how long it waits to look up the gateway host and the HTTP proxy, and says which one could not be resolved in time
Environment-management requests now use a Console-profile session's credential when one is active, instead of requiring OAuth
disableBundledSkills and coworkEgressAllowedHosts are now marked in the settings schema as read by both Claude Desktop and Claude Code
Unclear Whether Claude Code now enforces these two settings differently, or only the schema labels changed, is not stated.
Signing in now checks the new token against the organisation required by managed settings before saving it, and fails if it does not match
Traces of tool use now include standard GenAI fields such as the tool name, and the MCP server name for MCP tools
The read-only folders setting's description no longer says SSH ignores it, and now lists where read-only is enforced and where it is not
Unclear Only the description text changed here, so it is not shown whether the SSH enforcement itself works in this version.
Setting inferenceGatewayAuthScheme to "sso" will keep working with no end date, instead of a warning that inference would stop
If your organization's managed settings haven't been read yet, Claude Code now says it can't yet tell whether hooks are allowed
If invalid managed settings include PreToolUse or PermissionRequest hooks, the startup message now says those hooks are not loaded
The check that you signed in to your required organization now reuses an organization ID already fetched instead of fetching your profile again
When a marketplace was not updated because organization settings have not arrived yet, the notice now says so instead of telling you to ask your admin
9 more of these are in What probably matters to you, above.
The check that decides when a failed gateway request is retried on the default model now lives in a shared helper
Unclear Whether the new check retries on the same error statuses as before is not settled.
When Claude Code first starts, its plugin policy check now waits if an answer is still pending before it checks remote managed settings
When plugin auto-update holds back a refresh, its log now says if it is waiting for organization settings rather than blocked by them
When a session is launched by a host, Claude Code can fetch managed settings using a token or API key that host provides
Unclear It is not clear what switches a session into this host-launched mode.
The managed-settings gateway check now fails with a reason when no voucher comes back, and passes the voucher on when one does
The check on signed cached settings now returns whether they are trusted and a reason, such as an unknown organization pin
Unclear What this changes for someone whose settings are managed by an organization is not shown.
Claude Code's list of results for checking signatures on managed settings and policy limits has changed
Unclear Whether these signature checks run, and in which mode by default, is not stated.
The bootstrap settings schema now records what Claude Desktop does when a key's value is invalid, and lists only the programs that read the bootstrap
The organization policy that controls MCP servers is now marked for special handling when managed settings cannot be read
Unclear What Claude Code does with MCP servers when the managed settings cannot be read is not stated.
Tracing data now marks a tool call that failed without being interrupted with error.type set to tool_error
The self-hosted runner's orchestrator now sends its logs through one shared writer, described in a [runner:log] debug line at startup
Unclear Where the shared log writer sends logs is not shown.
Self-hosted runners still skip context repositories whose branch is gone or whose access is denied, with no change in behaviour
Published verbatim by Anthropic for v2.1.300. Text is unmodified from the upstream changelog. Everything else on this page came out of the bundle instead, which is why the two lists don't match.
Of these 88 bullets, 18 name something an entry on this page also names, 28 name something no entry here does, and 42 name nothing specific enough to line up either way. The pairings are made on names both sides wrote down, a flag or a setting or a slash command, so read one as probably the same thing rather than as a fact, and read the middle number as candidates rather than as a miss count.
virtualText to a mod's prompt decorations: text drawn in the prompt box that never enters the draft or the submitted prompt
No entry names this cache_creation_5m_tokens and cache_creation_1h_tokens to the OpenTelemetry api_request event, splitting cache writes by lifetime
Probably cache-creation-5m1h-token-split-in-api-telemetry $.ui.view({ agentId }) for mods: shows an agent's transcript in the main view when you ask, and $.ui.view({}) goes back
No entry names this dir prop on a mod's Text for right-to-left text: on Windows and in VS Code's terminal its rows read in that direction and sit flush right
No entry names this /advisor on Claude Platform on AWS; no advisor runs until you pick one with /advisor, advisorModel or --advisor, and CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 turns it off
No entry names this gen_ai.provider.name, gen_ai.conversation.id, gen_ai.tool.name and error.type
Probably tool-error-span-attribute-for-failed-non-interrupted-tool-c, otel-spans-get-gen-ai-attributes-prompt-redaction-handle, tool-and-llm-telemetry-spans-gain-gen-ai-attributes prompt and model in the agent.spawn mod hook, which could only refuse workflow agents before
No entry names this prompt.change mod hook, raised when the prompt box's text changes without a typed edit: a recalled history entry, a clear, an undo, or a plugin's fill
Probably new-telemetry-and-event-names, mod-event-table-gains-promptchange-policy-decision-gets-se, prompt-change-hook-dispatcher-with-loop-stall-guard /autocompact warning about high token usage when you choose a smaller auto-compact window
Probably autocompact-telemetry-expanded-and-the-high-token-warning-m claude --help naming a removed tool in its description of --restricted
Probably restricted-help-text-no-longer-names-repl claude agents not refreshing any pull request's status when the data for one of them came back incomplete
No entry names this /tasks shortly after finishing, leaving no way back to the conversation
No entry names this ENABLE_TOOL_SEARCH=auto) turning off part-way through a conversation, for example while MCP servers reconnect after a resume
No entry names this forceLoginOrgUUID leaving the refused organization's token stored, or live after /login
Probably remote-control-credential-renewal-explains-sign-in-failures, cloud-agents-not-logged-in-error-can-carry-a-custom-message, oauth-login-paths-gain-an-org-pin-verification-step-before-c, forceloginorguuid-check-refactored-with-a-reusable-verifier, cloud-session-creation-has-a-separate-console-profile-path Artifact("(unprintable path)") while a call's input arrives; its row now shows "Waiting…" and "Running…" as Bash's does
No entry names this /branch dropping messages, and claude purge skipping subfolder projects, when they contain a Unicode line or paragraph separator (U+2028, U+2029)
No entry names this WorktreeCreate and WorktreeRemove hooks not running when Claude Code starts with --worktree (not yet with --tmux)
Probably worktree-pr-creation-supports-a-forge-and-uses-head-commit, worktree-creation-plugin-worktreecreate-hooks-registered-fi, pr-worktree-fetch-verifies-the-fetched-ref-tengu-melodic-oc, plugin-worktreecreate-hooks-are-now-registered-before-work #100905[BUG] Plugin `WorktreeCreate` hook still ignored for `claude --worktree` on 2.1.296 (#46664 closed as stale, never fixed) Open
tool_result events missing git_commit_id after git commit -q in repositories using reftable ref storage
No entry names this prompt.submit hook rewrote or dropped still being recorded as typed in the OpenTelemetry user_prompt event and interaction span, and in session title requests
Probably user-prompt-telemetry-helper-and-orphan-answer-skip-flag-att, userpromptsubmit-hook-detection-restricted-by-a-new-module-c, mod-event-table-gains-promptchange-policy-decision-gets-se model: aliases like haiku now resolve, a subagent's model no longer overrides it, and an unavailable model falls back to the caller's instead of allowing the action
Nothing to match on --worktree sessions sometimes starting from the wrong commit when a tag or branch was named like a commit ID, and their starting git status naming a branch other than the new worktree's
Probably worktree-pr-creation-supports-a-forge-and-uses-head-commit, worktree-creation-plugin-worktreecreate-hooks-registered-fi, pr-worktree-fetch-verifies-the-fetched-ref-tengu-melodic-oc, plugin-worktreecreate-hooks-are-now-registered-before-work --worktree failing to reopen a worktree in repositories using git's reftable ref storage
Probably worktree-pr-creation-supports-a-forge-and-uses-head-commit, worktree-creation-plugin-worktreecreate-hooks-registered-fi, pr-worktree-fetch-verifies-the-fetched-ref-tengu-melodic-oc, plugin-worktreecreate-hooks-are-now-registered-before-work #96060[BUG] Reftable repos: CLI reads .git/HEAD directly, branch resolves to ".invalid" and PR status is dropped from the statusLine payload Open
claude remote-control servers giving up on renewing their connection after a brief sign-in error, such as a locked keychain; they now retry, and warn when you need to run claude /login
Probably remote-control-credential-renewal-explains-sign-in-failures, cloud-agents-not-logged-in-error-can-carry-a-custom-message, remote-control-asks-about-unattended-tool-calls-up-front-in, remote-control-rejects-sandbox-no-sandbox-instead-of-acc, cloud-session-creation-has-a-separate-console-profile-path #95262remote-control session permanently 401s after token refresh fails; /login cannot reach the process Open
--worktree failing in a worktree of a bare repository when origin's default branch can't be fetched; the fallback base is now the current checkout's HEAD, not the main repository's
Probably worktree-pr-creation-supports-a-forge-and-uses-head-commit, worktree-creation-plugin-worktreecreate-hooks-registered-fi, pr-worktree-fetch-verifies-the-fetched-ref-tengu-melodic-oc, plugin-worktreecreate-hooks-are-now-registered-before-work prompt.edit hook not being raised for a newline entered with the chat:newline keybinding (Ctrl+J, or a rebound Enter)
No entry names this claude daemon stop --any printing "stopped" while a stuck background service kept running: it now waits, force-kills the service, and says so with exit 1 if it is still there
No entry names this claude daemon stop exiting with no output, and leaving sessions listed as running, when telemetry is turned off
Probably daemon-stop-now-escalates-sigterm-to-sigkill-and-explains-st /healthz or SIGTERM shutdown) while nobody reads their output; logs keep the latest 256 KiB and count drops (not on Windows)
No entry names this plugin-authoring skill: Claude scans a mod's files for keys before opening them, and asks before scanning a folder outside the project
Probably secret-scan-tool-for-the-plugin-authoring-mods-built-in-pl CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST sessions to ignore CA-bundle, tool-proxy, git TLS and git config variables like SSL_CERT_FILE in settings; under Claude Desktop, only in project settings
No entry names this forceLoginGatewayUrl names an Anthropic-operated gateway that serves the session's hostname; that gateway must be reachable at start
No entry names this claude gateway to stop at start, naming the key, on a desktop: policy key that Claude Desktop cannot use from a gateway, where it earlier started with a warning
No entry names this CLAUDE_CODE_GZIP_REQUEST_BODIES=0 to turn it off
No entry names this claude-api skill to leave Managed Agents sessions in place unless you ask to archive or delete them
No entry names this /sandbox mode options to read "Sandbox commands" instead of "Sandbox BashTool"
Probably sandbox-option-label-renamed, sandbox-menu-labels-renamed PermissionRequest hooks in Cowork cloud sessions: a setMode update in a hook's allow is now ignored; the rest of the approval still applies
Probably hook-updatedinput-rewrites-are-now-validated-against-the-too, managed-settings-startup-message-distinguishes-unloaded-hook, permissionrequest-hook-setmode-dropped-in-cowork-cloud-cod, hook-load-failures-a-managed-settings-hook-that-cant-be-lo updatedInput from PreToolUse and PermissionRequest hooks is now validated like Claude's own input: unknown keys are dropped, and input the tool rejects denies the call
Probably hook-updatedinput-rewrites-are-now-validated-against-the-too, updatedinput-refusal-message-varies-by-settings-source --sandbox and --no-sandbox flags from claude remote-control, which had no effect; passing either now exits with an error. Set sandbox.enabled in settings to sandbox sessions
Probably remote-control-asks-about-unattended-tool-calls-up-front-in, remote-control-rejects-sandbox-no-sandbox-instead-of-acc, gateway-inference-settings-are-now-read-by-claude-code-cod claudeCode.attachSelection setting to stop text selected in the editor from being added to your messages
No entry names this /c:/… path instead of a mention relative to the working directory
No entry names this /bin/ps directly instead of searching PATH for ps on every check
No entry names this @claude review comments from people with write access whose GitHub organization membership is private; their comments now start a review
No entry names this A model matched these bullets to the GitHub issues they fix, so a link can be wrong.
1 of 27 tool descriptions changed.
Claude Code, interactive mode
One prompt change in this release could not be quoted from the build, so no entry on this page describes it.
647 documentation changes were recorded within 24 hours either side of this release, nearest first. The closest 12 are below. They're here because they happened near this release in time. That's not a claim that this release caused the edit, or that the page documents anything in it.
The 57 literal strings found in the bundle, with the number of entries that name each one. Picking one searches for it. A name is here because this build's code mentions it, which is not the same as it working or being finished.
What's wrong with this entry?