{"version":"2.1.309","summary":"You can now run `claude ultrareview --trust-workspace` to trust the current folder for one run, so reviews work in scripts and CI. Setting `CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK` skips the folder trust step when Claude Code cannot ask you. A new `save_task_files` tool saves files from a managed-agent task into your session folder. It asks for your approval every time. Uploading local files to MCP tools now defaults to on when Anthropic's servers send no setting. The hook settings disableAllHooks, allowedHttpHookUrls and httpHookAllowedEnvVars now sit on the managed-settings list next to allowManagedHooksOnly.\n\nThis release counts 14 entries that are in the build but not switched on yet. A Claude Test pane is taking shape that reads test runs from a `.claude-test` folder. Web search citations tied to parts of Claude's replies need `CLAUDE_CODE_WEBSEARCH_CITATIONS` and a remote switch. A `CLAUDE_CODE_RESUME_SHOWS_CUT_OFF_CALLS` setting is being added to show interrupted tool calls in a resumed session. Groundwork has also landed for listing connectors your organization provides.\n\nPublishing an Artifact no longer checks pages against the PR review template. The `pr_review` and `prReviewOn` options are gone from the Artifact tool. Publishing a PR review page with extra files no longer stops with a single-file error. A tool that a setting used to switch on is now always off. Claude Code can also repair gaps in stored remote session history on load, when switched on remotely.","filter":{"section":null,"tier":null,"area":null},"offset":0,"limit":50,"count":50,"total":281,"next_offset":50,"next_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/entries.json?offset=50","entries":[{"anchor":"claude-ultrareview-gains-a-trust-workspace-flag","heading":"<code>claude ultrareview<\/code> can trust the current folder for one run","glance":"`claude ultrareview --trust-workspace` trusts the current folder for that run only, without a prompt, so reviews can run in scripts and CI","teaser":null,"tier":"use","area":"Ultrareview","section":"What probably matters to you","position":0,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/claude-ultrareview-gains-a-trust-workspace-flag","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/claude-ultrareview-gains-a-trust-workspace-flag.json"},{"anchor":"new-env-var-claude-code-disable-ultrareview-trust-check-skip","heading":"New setting to skip the folder trust check in non-interactive <code>claude ultrareview<\/code>","glance":"Setting `CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK` stops `claude ultrareview` running its folder trust step when it cannot ask you","teaser":null,"tier":"use","area":"Ultrareview","section":"What probably matters to you","position":1,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/new-env-var-claude-code-disable-ultrareview-trust-check-skip","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/new-env-var-claude-code-disable-ultrareview-trust-check-skip.json"},{"anchor":"artifact-create-notice-from-org-config","heading":"New organisation setting: artifact_create_notice","glance":"Organisations can set an artifact_create_notice, defaulting to a message that a person must approve each new artifact","teaser":null,"tier":"use","area":"Managed Settings","section":"What probably matters to you","position":2,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifact-create-notice-from-org-config","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifact-create-notice-from-org-config.json"},{"anchor":"save-task-files-tool-save-a-managed-agent-tasks-files-to-t","heading":"Claude can save a task&#039;s files to your computer, with approval each time","glance":"A new `save_task_files` tool can download files a managed-agent task produced into the session folder, asking your approval every time","teaser":null,"tier":"notice","area":"Managed Agents","section":"What probably matters to you","position":3,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/save-task-files-tool-save-a-managed-agent-tasks-files-to-t","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/save-task-files-tool-save-a-managed-agent-tasks-files-to-t.json"},{"anchor":"claude-test-pane-gains-a-large-helper-layer-progressrun-fo","heading":"Claude Test plugin grows new tools, a richer pane and safer explorer instructions","glance":"The bundled Claude Test plugin adds tools to start apps and confirm runs, reads more run files for its pane, and keeps its explorer out of credential files","teaser":null,"tier":"notice","area":"Claude Test","section":"What probably matters to you","position":4,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/claude-test-pane-gains-a-large-helper-layer-progressrun-fo","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/claude-test-pane-gains-a-large-helper-layer-progressrun-fo.json"},{"anchor":"mcp-serve-sessionend-hooks-supplied-by-the-caller","heading":"<code>mcp serve<\/code> can run SessionEnd hooks sent by the program calling it","glance":"When Claude Code runs as an MCP server, the caller can now hand it SessionEnd hooks to run, up to 8 KiB, unless machine policy forbids it","teaser":null,"tier":"use","area":"MCP Serve","section":"What probably matters to you","position":5,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-serve-sessionend-hooks-supplied-by-the-caller","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-serve-sessionend-hooks-supplied-by-the-caller.json"},{"anchor":"headless-mcp-can-accept-a-handed-over-tool-listing-for-one-d","heading":"MCP config files are tracked, and a host can hand over a ready-made tool listing","glance":"--mcp-config file paths are now recorded and registered, and an MCP config can carry a pre-supplied tool listing so discovery can be skipped","teaser":null,"tier":"use","area":"MCP","section":"What probably matters to you","position":6,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/headless-mcp-can-accept-a-handed-over-tool-listing-for-one-d","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/headless-mcp-can-accept-a-handed-over-tool-listing-for-one-d.json"},{"anchor":"headless-onturnbeganbeforeinit-callback","heading":"Headless sessions can report a turn that starts before setup finishes","glance":"In headless mode, a turn that starts before the startup message was sent now triggers an optional onTurnBeganBeforeInit callback","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":7,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/headless-onturnbeganbeforeinit-callback","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/headless-onturnbeganbeforeinit-callback.json"},{"anchor":"host-card-denial-option-added-to-a-permission-timeout-config","heading":"Permission timeout settings gain a deny option, on by default","glance":"A permission timeout setting group gains a `denyOnHostCard` option that defaults to on; what it denies is not traced","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":9,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/host-card-denial-option-added-to-a-permission-timeout-config","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/host-card-denial-option-added-to-a-permission-timeout-config.json"},{"anchor":"result-messages-can-carry-model-usage-since-last-result","heading":"Result messages can report usage and cost since the previous result","glance":"In stream-json and --sdk-url runs, result messages can carry model_usage_since_last_result, per-model usage and cost since the last result","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":10,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/result-messages-can-carry-model-usage-since-last-result","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/result-messages-can-carry-model-usage-since-last-result.json"},{"anchor":"runner-env-var-and-session-token-handling","heading":"Runners pass CLAUDE_RUNNER_ALIVE_EVERY_MS and can apply session tokens while running","glance":"CLAUDE_RUNNER_ALIVE_EVERY_MS is now passed through, and session and OAuth tokens can be applied while running in a certain mode","teaser":null,"tier":"use","area":"Self-Hosted Runners","section":"What probably matters to you","position":12,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/runner-env-var-and-session-token-handling","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/runner-env-var-and-session-token-handling.json"},{"anchor":"feedback-api-schemas-submit-survey-feedback-and-bundle-mode","heading":"Feedback submission gains survey follow-ups, a bundle mode and clearer refusal reasons","glance":"Feedback can now include survey follow-ups and a local bundle, and failed submissions say whether the org, the sign-in or the network was the cause","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":13,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/feedback-api-schemas-submit-survey-feedback-and-bundle-mode","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/feedback-api-schemas-submit-survey-feedback-and-bundle-mode.json"},{"anchor":"managed-only-settings-list-adds-hook-settings","heading":"Three hook settings join Claude Code&#039;s managed-settings list","glance":"disableAllHooks, allowedHttpHookUrls and httpHookAllowedEnvVars now sit on the same settings list as allowManagedHooksOnly","teaser":null,"tier":"use","area":"Managed Settings","section":"What probably matters to you","position":14,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/managed-only-settings-list-adds-hook-settings","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/managed-only-settings-list-adds-hook-settings.json"},{"anchor":"artifacts-mcp-server-can-replace-the-built-in-artifact-tools","heading":"Artifact tools can be provided by an MCP server, with clearer errors when it is missing","glance":"When an MCP server takes over the built-in Artifact tools, unknown-tool errors point to it or suggest \/mcp, and artifact links can be read through it","teaser":null,"tier":"notice","area":"Artifacts","section":"What probably matters to you","position":15,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifacts-mcp-server-can-replace-the-built-in-artifact-tools","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifacts-mcp-server-can-replace-the-built-in-artifact-tools.json"},{"anchor":"artifacts-mcp-server-auto-registered-on-the-laptop-cli","heading":"Artifacts can run through a built-in MCP server in the terminal","glance":"Claude Code can set up an Artifacts MCP server itself and use its tools in place of the built-in artifact tool, with preset permissions","teaser":null,"tier":"notice","area":"Artifacts","section":"What probably matters to you","position":16,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifacts-mcp-server-auto-registered-on-the-laptop-cli","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifacts-mcp-server-auto-registered-on-the-laptop-cli.json"},{"anchor":"cloud-session-create-checklist-gets-a-typeable-prompt-line","heading":"Type your first message while a cloud session is being set up","glance":"While a cloud session is created, the checklist now has a box to type your first message, held until the session opens","teaser":null,"tier":"notice","area":"Cloud Sessions","section":"What probably matters to you","position":17,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/cloud-session-create-checklist-gets-a-typeable-prompt-line","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/cloud-session-create-checklist-gets-a-typeable-prompt-line.json"},{"anchor":"new-self-hosted-runner-subcommand-name-self-hosted-review-se","heading":"A self-hosted review session mode appears in the code","glance":"Claude Code now has a self-hosted mode named `self_hosted_review_session`, with its own startup safety checks","teaser":null,"tier":"soon","area":"Code Review","section":"What probably matters to you","position":18,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/new-self-hosted-runner-subcommand-name-self-hosted-review-se","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/new-self-hosted-runner-subcommand-name-self-hosted-review-se.json"},{"anchor":"org-connector-mcp-listrelay-handlers-listorgconnectormcpse","heading":"Organization connectors appear as their own kind of MCP server","glance":"Claude Code adds organization-provided MCP connectors with reserved org-connector names, new list and relay handlers and an orgConnectors scope","teaser":null,"tier":"notice","area":"Connectors","section":"What probably matters to you","position":19,"scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/org-connector-mcp-listrelay-handlers-listorgconnectormcpse","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/org-connector-mcp-listrelay-handlers-listorgconnectormcpse.json"},{"anchor":"resume-can-show-tool-calls-that-were-cut-off-claude-code-re","heading":"Resumed sessions can keep tool calls that were cut off","glance":"A new CLAUDE_CODE_RESUME_SHOWS_CUT_OFF_CALLS setting lets a resumed session show tool calls that were interrupted mid-turn","teaser":null,"tier":"soon","area":"Sessions","section":"What probably matters to you","position":21,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/resume-can-show-tool-calls-that-were-cut-off-claude-code-re","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/resume-can-show-tool-calls-that-were-cut-off-claude-code-re.json"},{"anchor":"web-search-citations-rewritten-into-cited-text-blocks-gated","heading":"Web search citations can now be attached to parts of Claude&#039;s replies","glance":"With `CLAUDE_CODE_WEBSEARCH_CITATIONS` set and a remote switch on, Claude Code splits replies into pieces tied to web search sources","teaser":null,"tier":"soon","area":"Web Search","section":"What probably matters to you","position":22,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/web-search-citations-rewritten-into-cited-text-blocks-gated","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/web-search-citations-rewritten-into-cited-text-blocks-gated.json"},{"anchor":"promptfill-accepts-a-cursor-position","heading":"Filling the prompt box can now set the cursor position","glance":"prompt.fill and the plugin text-injection hook now take an optional cursor value that sets where the caret lands after text is placed","teaser":null,"tier":"use","area":"Prompt Input","section":"What probably matters to you","position":23,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/promptfill-accepts-a-cursor-position","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/promptfill-accepts-a-cursor-position.json"},{"anchor":"mcp-authenticate-gains-livereply","heading":"MCP status and sign-in requests can ask for a live-only reply","glance":"The mcp_status and mcp_authenticate requests gain a liveReply option that sends the answer only to clients attached right now, without saving it","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":24,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-authenticate-gains-livereply","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-authenticate-gains-livereply.json"},{"anchor":"hooks-in-ccr-sessions-may-get-claude-code-session-access-tok","heading":"Hooks in some remote sessions can receive the session access token","glance":"In some remote sessions, command hooks can now be given `CLAUDE_CODE_SESSION_ACCESS_TOKEN` in their environment","teaser":null,"tier":"notice","area":"Hooks","section":"What probably matters to you","position":28,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/hooks-in-ccr-sessions-may-get-claude-code-session-access-tok","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/hooks-in-ccr-sessions-may-get-claude-code-session-access-tok.json"},{"anchor":"mcp-file-input-upload-gate-tengu-walnut-tiller-now-defaults","heading":"MCP file uploads now go ahead when no server setting arrives","glance":"Uploading local files to MCP tools now defaults to on when Anthropic's servers send no setting, instead of off","teaser":null,"tier":"notice","area":"MCP","section":"What probably matters to you","position":29,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-file-input-upload-gate-tengu-walnut-tiller-now-defaults","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-file-input-upload-gate-tengu-walnut-tiller-now-defaults.json"},{"anchor":"slash-commands-from-relay-participants-are-refused-with-a-di","heading":"Relay participants get their own message when a command is refused","glance":"Slash commands from relay participants are now refused with a message saying they aren't available to a relay participant","teaser":null,"tier":"notice","area":"Relay","section":"What probably matters to you","position":30,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/slash-commands-from-relay-participants-are-refused-with-a-di","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/slash-commands-from-relay-participants-are-refused-with-a-di.json"},{"anchor":"tengu-soft-spindle-attaches-turn-start-metadata-to-messages","heading":"Messages can now record who started each turn","glance":"Behind a server-controlled switch, messages can carry a note of the summary they belong to and whether a person started the turn","teaser":null,"tier":"soon","area":"Sessions","section":"What probably matters to you","position":31,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/tengu-soft-spindle-attaches-turn-start-metadata-to-messages","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/tengu-soft-spindle-attaches-turn-start-metadata-to-messages.json"},{"anchor":"project-write-gains-a-larger-doc-replace-path-behind-tengu-t","heading":"Replacing large project documents gets a new refusal and a staged change","glance":"project_write can now refuse a replace because the document is too large, and can send the server an extra value when a remote switch is on","teaser":null,"tier":"soon","area":"Projects","section":"What probably matters to you","position":34,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/project-write-gains-a-larger-doc-replace-path-behind-tengu-t","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/project-write-gains-a-larger-doc-replace-path-behind-tengu-t.json"},{"anchor":"credential-placeholder-stripping-when-anthropic-unix-socket","heading":"Credentials handled differently for child processes when ANTHROPIC_UNIX_SOCKET is set","glance":"With ANTHROPIC_UNIX_SOCKET set, placeholder credentials are recognized and auth tokens are no longer passed to child processes","teaser":null,"tier":"notice","area":"Auth","section":"What probably matters to you","position":35,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/credential-placeholder-stripping-when-anthropic-unix-socket","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/credential-placeholder-stripping-when-anthropic-unix-socket.json"},{"anchor":"post-turn-instruction-field-accepted-in-a-server-config-sche","heading":"Server settings can now carry an after-turn instruction","glance":"A settings object Claude Code reads now accepts an optional post_turn_instruction text, and ignores it if malformed","teaser":null,"tier":"internal","area":"Remote Settings","section":"What probably matters to you","position":36,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/post-turn-instruction-field-accepted-in-a-server-config-sche","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/post-turn-instruction-field-accepted-in-a-server-config-sche.json"},{"anchor":"two-new-ccr-env-vars-registered-own-connection-pool-and-plu","heading":"Two new settings for remote sessions: own connection pool and plugin download count","glance":"`CLAUDE_CODE_CCR_OWN_CONNECTION_POOL` and `CLAUDE_CODE_SYNC_PLUGINS_DOWNLOAD_CONCURRENCY` are new environment variables used by remote sessions","teaser":null,"tier":"internal","area":"Cloud Sessions","section":"What probably matters to you","position":37,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/two-new-ccr-env-vars-registered-own-connection-pool-and-plu","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/two-new-ccr-env-vars-registered-own-connection-pool-and-plu.json"},{"anchor":"disk-full-quota-diagnostics-for-claudes-temp-directory","heading":"Clearer messages when the disk holding Claude&#039;s temporary folder is full","glance":"A full disk or used-up quota now gives a clear error naming `CLAUDE_CODE_TMPDIR`, and shell output is checked for low disk space","teaser":null,"tier":"use","area":"Startup","section":"What probably matters to you","position":38,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/disk-full-quota-diagnostics-for-claudes-temp-directory","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/disk-full-quota-diagnostics-for-claudes-temp-directory.json"},{"anchor":"mod-making-skill-description","heading":"Updated description for the skill that makes mods","glance":"The skill for making a \"mod\" has a new description listing panels, bands, status lines, toasts, slash commands and tool-call hooks","teaser":null,"tier":"notice","area":"Mods","section":"What probably matters to you","position":39,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mod-making-skill-description","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mod-making-skill-description.json"},{"anchor":"auto-mode-fast-path-for-allowlisted-mcp-tools-stale-connect","heading":"Auto mode can skip its safety check for some allowlisted MCP tools","glance":"In auto mode, some MCP server tools on the safe allowlist can now skip the safety check when extra conditions are met","teaser":null,"tier":"soon","area":"Auto Mode","section":"What probably matters to you","position":40,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/auto-mode-fast-path-for-allowlisted-mcp-tools-stale-connect","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/auto-mode-fast-path-for-allowlisted-mcp-tools-stale-connect.json"},{"anchor":"chrome-bridge-phone-answer-branch-behind-tengu-glowing-panc","heading":"Different reply when Chrome is unreachable from a session on a phone","glance":"When the Chrome extension is not connected, Claude Code can give a different reply to remote sessions on a phone, behind a switch that is off by default","teaser":null,"tier":"soon","area":"Browser","section":"What probably matters to you","position":41,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/chrome-bridge-phone-answer-branch-behind-tengu-glowing-panc","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/chrome-bridge-phone-answer-branch-behind-tengu-glowing-panc.json"},{"anchor":"new-mcptelemetry-names-added","heading":"New internal names, and some MCP servers now filtered out","glance":"Claude Code adds several new internal names, and a filter now leaves out some MCP servers it used to keep","teaser":null,"tier":"internal","area":"Internals","section":"What probably matters to you","position":42,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/new-mcptelemetry-names-added","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/new-mcptelemetry-names-added.json"},{"anchor":"artifact-publish-root-can-stand-alone-with-clearer-path-mi","heading":"Artifact publishing reworks how root and served paths work, and drops PR review pages","glance":"Artifact publishing now expects root with every typed publish, reports served paths and unchanged files, and no longer builds PR review pages","teaser":null,"tier":"notice","area":"Artifacts","section":"Improvements","position":0,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifact-publish-root-can-stand-alone-with-clearer-path-mi","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/artifact-publish-root-can-stand-alone-with-clearer-path-mi.json"},{"anchor":"oidc-ca-cert-error-messages-now-say-which-certs-to-supply","heading":"OIDC certificate errors now say exactly which certificates to provide","glance":"Errors about blocked certificates in `oidc.ca_cert_pem` now ask for the provider's intermediates and self-signed root, with no cross-signed ones","teaser":null,"tier":"notice","area":"Gateway Auth","section":"Improvements","position":1,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/oidc-ca-cert-error-messages-now-say-which-certs-to-supply","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/oidc-ca-cert-error-messages-now-say-which-certs-to-supply.json"},{"anchor":"bash-parser-glued-to-next-word-is-flagged-handlin","heading":"Bash commands with <code>[<\/code> glued to the next word are now flagged","glance":"Claude Code now flags a shell test written as `[` with no space after it, since that names a different command","teaser":null,"tier":"notice","area":"Bash Safety","section":"Improvements","position":2,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/bash-parser-glued-to-next-word-is-flagged-handlin","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/bash-parser-glued-to-next-word-is-flagged-handlin.json"},{"anchor":"claudeai-plugin-sync-refuses-the-root-when-its-marker-canno","heading":"claude.ai plugin sync stops if it cannot verify its folder, and limits installs","glance":"Plugin sync from claude.ai now refuses its plugins folder when the folder's marker can't be read, and installs only a set number at once","teaser":null,"tier":"notice","area":"Plugins","section":"Improvements","position":3,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/claudeai-plugin-sync-refuses-the-root-when-its-marker-canno","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/claudeai-plugin-sync-refuses-the-root-when-its-marker-canno.json"},{"anchor":"acceptedits-mode-stops-auto-approving-some-touch-commands","heading":"Accept-edits mode no longer auto-approves some unusual <code>touch<\/code> commands","glance":"In `acceptEdits` mode, `touch` commands with odd or option-like arguments now go through the normal permission check instead of running unasked","teaser":null,"tier":"notice","area":"Permissions","section":"Improvements","position":4,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/acceptedits-mode-stops-auto-approving-some-touch-commands","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/acceptedits-mode-stops-auto-approving-some-touch-commands.json"},{"anchor":"windows-sandbox-detects-a-readable-nuget-packages-folder","heading":"Windows sandbox can find your NuGet packages folder for dotnet builds","glance":"On Windows, Claude Code now checks whether sandboxed commands can reach `~\/.nuget\/packages` so dotnet builds can find restored packages","teaser":null,"tier":"notice","area":"Sandbox","section":"Improvements","position":5,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/windows-sandbox-detects-a-readable-nuget-packages-folder","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/windows-sandbox-detects-a-readable-nuget-packages-folder.json"},{"anchor":"mcp-tool-allow-suggestion-may-target-the-session-instead-o","heading":"An &#039;always allow&#039; for one MCP server may last only for the session","glance":"For one particular MCP server, the suggested 'always allow' rule can now apply to the current session instead of being saved to local settings","teaser":null,"tier":"notice","area":"Permissions","section":"Improvements","position":6,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-tool-allow-suggestion-may-target-the-session-instead-o","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-tool-allow-suggestion-may-target-the-session-instead-o.json"},{"anchor":"worktree-git-guard-handling-of-variable-assignments-before","heading":"Worktree isolation checks variables set before git commands differently","glance":"The worktree guard now treats variable assignments placed before a git command differently, which appears to tighten what it allows","teaser":null,"tier":"notice","area":"Worktrees","section":"Improvements","position":7,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/worktree-git-guard-handling-of-variable-assignments-before","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/worktree-git-guard-handling-of-variable-assignments-before.json"},{"anchor":"zsh-inside-flagged-too-complex","heading":"Commands with <code>!(<\/code> inside <code>[[ ]]<\/code> now ask for permission","glance":"Claude Code now treats `!(` inside a `[[ ]]` test as too complex to judge, so such commands are no longer approved automatically","teaser":null,"tier":"notice","area":"Bash Safety","section":"Improvements","position":8,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/zsh-inside-flagged-too-complex","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/zsh-inside-flagged-too-complex.json"},{"anchor":"git-commands-for-user-facing-status-run-with-the-users-loca","heading":"Some git commands now keep your own language settings","glance":"A new userLocale option lets git status, worktree lookups and a few other git calls run in your own locale instead of a forced one","teaser":null,"tier":"notice","area":"Git","section":"Improvements","position":9,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/git-commands-for-user-facing-status-run-with-the-users-loca","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/git-commands-for-user-facing-status-run-with-the-users-loca.json"},{"anchor":"pane-desktop-file-upload-gets-its-own-path-check-and-per-f","heading":"Desktop file uploads are now checked before the request is sent","glance":"In Claude Desktop, `file_upload` calls now get their own path check first, and Claude in Chrome uploads can weigh extra tool details for approval","teaser":null,"tier":"notice","area":"Elsewhere","section":"Improvements","position":10,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/pane-desktop-file-upload-gets-its-own-path-check-and-per-f","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/pane-desktop-file-upload-gets-its-own-path-check-and-per-f.json"},{"anchor":"lapsed-connector-sign-in-gets-a-re-check-stub-tool-in-ccr-se","heading":"Expired connector sign-ins now offer a way to sign in again","glance":"When a claude.ai connector's sign-in has expired in a remote session, Claude now gets a tool that retries and asks you to sign in again","teaser":null,"tier":"notice","area":"Connectors","section":"Improvements","position":11,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/lapsed-connector-sign-in-gets-a-re-check-stub-tool-in-ccr-se","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/lapsed-connector-sign-in-gets-a-re-check-stub-tool-in-ccr-se.json"},{"anchor":"mcp-client-stops-sending-the-listen-stream-get-when-the-serv","heading":"MCP connections can skip the listening request when a server says it does not accept it","glance":"If an MCP server's last reply says it does not accept GET requests, Claude Code stops sending the GET that opens a listening stream and answers it itself","teaser":null,"tier":"notice","area":"MCP","section":"Improvements","position":12,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-client-stops-sending-the-listen-stream-get-when-the-serv","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/mcp-client-stops-sending-the-listen-stream-get-when-the-serv.json"},{"anchor":"browser-mcp-tools-auto-classifier-allow-path-and-remote-car","heading":"Some browser tool calls can be auto-approved, and remote sessions remember permission answers","glance":"Screenshot, page snapshot and wait calls on the built-in browser server can be judged by auto mode, and remote sessions track permission card answers","teaser":null,"tier":"notice","area":"Browser","section":"Improvements","position":13,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/browser-mcp-tools-auto-classifier-allow-path-and-remote-car","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/browser-mcp-tools-auto-classifier-allow-path-and-remote-car.json"},{"anchor":"self-hosted-runner-rejects-remote-responses-that-disagree-o","heading":"Self-hosted runners stop when the server disagrees on whether a session is a code review","glance":"A self-hosted runner now stops with an error if two \/remote replies disagree about whether the session is a code review","teaser":null,"tier":"notice","area":"Self-Hosted Runners","section":"Improvements","position":14,"scope":"org","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/self-hosted-runner-rejects-remote-responses-that-disagree-o","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/self-hosted-runner-rejects-remote-responses-that-disagree-o.json"}],"facets":{"sections":[{"value":"What probably matters to you","entries":35},{"value":"Improvements","entries":134},{"value":"Bug Fixes","entries":24},{"value":"In Development","entries":7},{"value":"Internal Changes","entries":76},{"value":"Removed","entries":5}],"tiers":[{"value":"notice","entries":170},{"value":"internal","entries":83},{"value":"soon","entries":14},{"value":"use","entries":14}],"areas":[{"value":"Elsewhere","entries":23},{"value":"Cloud Sessions","entries":21},{"value":"Bash Safety","entries":20},{"value":"MCP","entries":20},{"value":"Sandbox","entries":15},{"value":"Artifacts","entries":14},{"value":"Permissions","entries":14},{"value":"Hooks","entries":10},{"value":"Sessions","entries":8},{"value":"Internals","entries":7},{"value":"Self-Hosted Runners","entries":7},{"value":"Skills","entries":7},{"value":"Connectors","entries":6},{"value":"Terminal UI","entries":6},{"value":"Auth","entries":5},{"value":"Browser","entries":5},{"value":"Git","entries":5},{"value":"Remote Control","entries":5},{"value":"SDK","entries":5},{"value":"Telemetry","entries":5},{"value":"Code Review","entries":4},{"value":"Gateway Auth","entries":4},{"value":"Managed Settings","entries":4},{"value":"Plugins","entries":4},{"value":"Slash Commands","entries":4},{"value":"Startup","entries":4},{"value":"Ultrareview","entries":4},{"value":"Windows","entries":4},{"value":"Background Tasks","entries":3},{"value":"Certificates","entries":3},{"value":"Memory","entries":3},{"value":"Prompt Input","entries":3},{"value":"Worktrees","entries":3},{"value":"API Requests","entries":2},{"value":"Agent Teams","entries":2},{"value":"Claude Test","entries":2},{"value":"Feedback","entries":2},{"value":"Managed Agents","entries":2},{"value":"Mods","entries":2},{"value":"Projects","entries":2},{"value":"Attached Machines","entries":1},{"value":"Attachments","entries":1},{"value":"Auto Mode","entries":1},{"value":"Daemon","entries":1},{"value":"Dev Server","entries":1},{"value":"MCP Serve","entries":1},{"value":"Relay","entries":1},{"value":"Remote Settings","entries":1},{"value":"Session Stats","entries":1},{"value":"Settings","entries":1},{"value":"Tool Calls","entries":1},{"value":"Web Search","entries":1}]}}