{"version":"2.1.319","summary":"You can now load claude.ai connectors while signed in with an API key by setting CLAUDE_CODE_I_ACCEPT_CROSS_ORG_DATA_RISK. Claude Code shows a warning when you do this. On macOS, setting CLAUDE_CODE_NATIVE_APP_BUNDLE lets the native updater install Claude Code as a signed claude.app bundle. A new takesMcpToolHooksOnConnectors setting lets MCP tool hooks run on connector servers. In-process SDK MCP servers marked as modern now connect by skipping the setup handshake. This release has 480 entries, and 330 of them are usable today.\n\nThere are 13 entries in the build that are not switched on yet. Giving claude.ai connector tools a local file path, so Claude Code uploads the file itself, is off by default. A rewind for pending turns sits next to the Esc take-back handling, but its actions do nothing yet. Claude Code can tell the model which Claude app your message came from, such as iOS, Android, desktop or web. Reusing earlier messages to keep the prompt cache intact is controlled by CLAUDE_CODE_NORMALIZE_PREFIX_CACHE. Several new server-controlled switches arrive, including ones for Projects write warnings and Chrome tool recognition.\n\n\/autofix-pr now always starts a cloud session. Plugins that call ui.backdrop will break, because that method is gone. Many SDK session-control methods are removed, including the sign-in, MCP server and plugin reload ones. Claude in Chrome no longer offers shortcuts_list or shortcuts_execute for running browser shortcuts. Auto-compact now counts some failures separately, so it gives up less quickly. Refusals caused by an old credential no longer trigger retries.","filter":{"section":null,"tier":null,"area":null},"offset":0,"limit":50,"count":50,"total":480,"next_offset":50,"next_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/entries.json?offset=50","entries":[{"anchor":"new-deny-instead-of-prompting-permission-mode","heading":"A permission mode that refuses instead of asking you","glance":"Claude Code has a new permission setting where any action that would ask for your approval is refused instead","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":0,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-deny-instead-of-prompting-permission-mode","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-deny-instead-of-prompting-permission-mode.json"},{"anchor":"new-managed-setting-disablewindowsbashcommandsplit-is-carrie","heading":"Long Bash commands on Windows can be split into pieces, with a managed opt-out","glance":"Behind tengu_mossy_melody, Windows splits Bash commands too long for one argument into pieces, and disableWindowsBashCommandSplit lets admins turn it off","teaser":null,"tier":"use","area":"Managed Settings","section":"What probably matters to you","position":1,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-managed-setting-disablewindowsbashcommandsplit-is-carrie","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-managed-setting-disablewindowsbashcommandsplit-is-carrie.json"},{"anchor":"claude-code-disable-feature-flags-added-as-a-switch-alongsid","heading":"CLAUDE_CODE_DISABLE_FEATURE_FLAGS turns off downloaded feature flags alongside DISABLE_GROWTHBOOK","glance":"A new CLAUDE_CODE_DISABLE_FEATURE_FLAGS variable joins DISABLE_GROWTHBOOK, messages name whichever is set, and self-hosted runners pass it on","teaser":null,"tier":"use","area":"Internals","section":"What probably matters to you","position":2,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/claude-code-disable-feature-flags-added-as-a-switch-alongsid","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/claude-code-disable-feature-flags-added-as-a-switch-alongsid.json"},{"anchor":"ide-content-link-policy-telemetry-and-ccrgateway-additions","heading":"Gateway messages can be logged as JSON with CLAUDE_GATEWAY_LOG_FORMAT","glance":"Setting CLAUDE_GATEWAY_LOG_FORMAT to json turns Claude Code gateway messages into structured error logs","teaser":null,"tier":"use","area":"LLM Gateway","section":"What probably matters to you","position":3,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/ide-content-link-policy-telemetry-and-ccrgateway-additions","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/ide-content-link-policy-telemetry-and-ccrgateway-additions.json"},{"anchor":"hooks-mcp-tool-hooks-on-connectors-guardedjudged-hook-ent","heading":"MCP tool hooks can now run on connector servers","glance":"A new takesMcpToolHooksOnConnectors setting lets mcp_tool hooks target connector servers, and hook listings show more detail","teaser":null,"tier":"use","area":"Hooks","section":"What probably matters to you","position":4,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/hooks-mcp-tool-hooks-on-connectors-guardedjudged-hook-ent","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/hooks-mcp-tool-hooks-on-connectors-guardedjudged-hook-ent.json"},{"anchor":"new-claude-code-cryptic-horizon-env-var-overrides-a-gate","heading":"Earlier-subagents list now defaults on, and a new CLAUDE_CODE_CRYPTIC_HORIZON variable appears","glance":"The earlier-subagents list now falls back to on without a server value, and a new CLAUDE_CODE_CRYPTIC_HORIZON variable takes over one of its checks","teaser":null,"tier":"use","area":"Subagents","section":"What probably matters to you","position":5,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-claude-code-cryptic-horizon-env-var-overrides-a-gate","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-claude-code-cryptic-horizon-env-var-overrides-a-gate.json"},{"anchor":"new-managed-permission-setting-denyinsteadofprompting","heading":"New permission setting <code>denyInsteadOfPrompting<\/code> is carried through settings","glance":"Claude Code now passes along a `permissions.denyInsteadOfPrompting` setting when it is set to true, next to the read and write block settings","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":6,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-managed-permission-setting-denyinsteadofprompting","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-managed-permission-setting-denyinsteadofprompting.json"},{"anchor":"early-resume-can-skip-hydrating-the-transcript-when-local-st","heading":"Cloud sessions get a faster resume option and new stream timing switches","glance":"Cloud sessions can skip rereading the transcript on resume via CLAUDE_CODE_CCR_SKIP_HYDRATE_ON_CURRENT_TIP, plus four new stream timing switches","teaser":null,"tier":"use","area":"Cloud Sessions","section":"What probably matters to you","position":7,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/early-resume-can-skip-hydrating-the-transcript-when-local-st","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/early-resume-can-skip-hydrating-the-transcript-when-local-st.json"},{"anchor":"model-picker-can-show-a-server-defined-mix-row","heading":"The model picker can show a mix row defined by Anthropic&#039;s server","glance":"A server-sent recipe can add a model picker row that sets which model subagents use, unless you already set that yourself","teaser":null,"tier":"use","area":"Models","section":"What probably matters to you","position":8,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/model-picker-can-show-a-server-defined-mix-row","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/model-picker-can-show-a-server-defined-mix-row.json"},{"anchor":"claudeai-connector-list-cross-org-override-env-var-and-pag","heading":"claude.ai connectors can load with API-key sign-in if you accept a data risk","glance":"Setting CLAUDE_CODE_I_ACCEPT_CROSS_ORG_DATA_RISK now loads claude.ai connectors when Claude Code uses an API key, with a warning","teaser":null,"tier":"use","area":"Connectors","section":"What probably matters to you","position":9,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/claudeai-connector-list-cross-org-override-env-var-and-pag","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/claudeai-connector-list-cross-org-override-env-var-and-pag.json"},{"anchor":"connector-file-downloads-new-consent-prompt-and-download-pi","heading":"Claude Code can download files from claude.ai connectors after asking you","glance":"Connector tool results can offer files, which Claude Code saves to a git-ignored folder only after you choose Download","teaser":null,"tier":"notice","area":"Connectors","section":"What probably matters to you","position":10,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/connector-file-downloads-new-consent-prompt-and-download-pi","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/connector-file-downloads-new-consent-prompt-and-download-pi.json"},{"anchor":"mcp-connector-file-uploads-approval-prompt-upload-protocol","heading":"Claude can send local files to claude.ai connectors after you approve","glance":"Claude Code can now upload files from your computer to claude.ai connectors, with an approval prompt, a policy switch and many refusal rules","teaser":null,"tier":"notice","area":"Connectors","section":"What probably matters to you","position":11,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-connector-file-uploads-approval-prompt-upload-protocol","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-connector-file-uploads-approval-prompt-upload-protocol.json"},{"anchor":"macos-app-bundle-install-path-for-native-updates-gated-by-e","heading":"macOS native installs can be set up as a signed claude.app bundle","glance":"On macOS, the native updater can install Claude Code as a verified claude.app bundle when `CLAUDE_CODE_NATIVE_APP_BUNDLE` is set, else as before","teaser":null,"tier":"notice","area":"Installer","section":"What probably matters to you","position":12,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/macos-app-bundle-install-path-for-native-updates-gated-by-e","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/macos-app-bundle-install-path-for-native-updates-gated-by-e.json"},{"anchor":"permissionsdenyinsteadofprompting-is-now-a-restrictive-only","heading":"<code>permissions.denyInsteadOfPrompting<\/code> can only make Claude Code stricter","glance":"`permissions.denyInsteadOfPrompting` is now restrictive-only: project and local settings are ignored, and true in any allowed source wins","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":13,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/permissionsdenyinsteadofprompting-is-now-a-restrictive-only","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/permissionsdenyinsteadofprompting-is-now-a-restrictive-only.json"},{"anchor":"new-latency-optimize-entry-in-a-skill-list","heading":"A &quot;latency-optimize&quot; entry joins a built-in skill list","glance":"Claude Code adds \"latency-optimize\" to a list that also holds cost-optimize, migrate, managed-agents-onboard and prompt-audit","teaser":null,"tier":"use","area":"Skills","section":"What probably matters to you","position":14,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-latency-optimize-entry-in-a-skill-list","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-latency-optimize-entry-in-a-skill-list.json"},{"anchor":"eval-confined-helper-and-todo-reminder-mode-helper","heading":"A new setting picks how to-do list reminders behave","glance":"Claude Code now reads `CLAUDE_CODE_TODO_REMINDER_MODE` for to-do reminders, defaulting to `baseline`, and checks `CLAUDE_CODE_EVAL_CONFINED` differently","teaser":null,"tier":"use","area":"Todo List","section":"What probably matters to you","position":15,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/eval-confined-helper-and-todo-reminder-mode-helper","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/eval-confined-helper-and-todo-reminder-mode-helper.json"},{"anchor":"proxy-can-resolve-hostnames-that-do-not-resolve-locally","heading":"CLAUDE_CODE_PROXY_RESOLVES_HOSTS lets a proxy look up names your machine cannot","glance":"With CLAUDE_CODE_PROXY_RESOLVES_HOSTS set, websocket connections to names that fail to look up locally are left to the proxy instead of failing","teaser":null,"tier":"use","area":"Internals","section":"What probably matters to you","position":16,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/proxy-can-resolve-hostnames-that-do-not-resolve-locally","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/proxy-can-resolve-hostnames-that-do-not-resolve-locally.json"},{"anchor":"compact-not-needed-check-and-admin-config-validation","heading":"Pooled usage conflicts can follow an admin priority list","glance":"Admins can set pooled_conflict_rule to priority_list with groups in pooled_priority_order, and a list without any group is now rejected","teaser":null,"tier":"use","area":"Usage Pools","section":"What probably matters to you","position":17,"scope":"org","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/compact-not-needed-check-and-admin-config-validation","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/compact-not-needed-check-and-admin-config-validation.json"},{"anchor":"sdk-mcp-call-new-check-permissions-option","heading":"mcp_call can now run through Claude Code&#039;s permission checks","glance":"Programs controlling Claude Code can set check_permissions on mcp_call so a direct MCP tool call is checked like Claude's own, with clear refusals","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":18,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-mcp-call-new-check-permissions-option","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-mcp-call-new-check-permissions-option.json"},{"anchor":"gateway-sign-in-screen-login-notice-extension","heading":"Gateway sign-in screen can show a login notice and host name","glance":"Enterprise gateways can send a login_notice of up to 500 characters, shown with the host name on Claude Code's device sign-in screen","teaser":null,"tier":"use","area":"LLM Gateway","section":"What probably matters to you","position":19,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/gateway-sign-in-screen-login-notice-extension","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/gateway-sign-in-screen-login-notice-extension.json"},{"anchor":"hipaazdr-policy-now-denies-claudeai-connector-file-downloa","heading":"HIPAA and ZDR organisations cannot download files from claude.ai connectors","glance":"Under HIPAA and ZDR policies, Claude Code now denies downloading files from claude.ai connectors, and denies it when the policy cannot be checked","teaser":null,"tier":"use","area":"Connectors","section":"What probably matters to you","position":20,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/hipaazdr-policy-now-denies-claudeai-connector-file-downloa","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/hipaazdr-policy-now-denies-claudeai-connector-file-downloa.json"},{"anchor":"mcp-server-config-schema-gains-nodirectoryentry","heading":"MCP server settings now accept a noDirectoryEntry option","glance":"MCP server configurations can now include an optional true\/false field called noDirectoryEntry","teaser":null,"tier":"use","area":"MCP","section":"What probably matters to you","position":21,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-server-config-schema-gains-nodirectoryentry","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-server-config-schema-gains-nodirectoryentry.json"},{"anchor":"new-voice-call-message-origin","heading":"Messages can now be marked as coming from a voice call","glance":"Claude Code now recognises messages marked as notes of what was said aloud on a voice call alongside the session","teaser":null,"tier":"use","area":"Voice","section":"What probably matters to you","position":22,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-voice-call-message-origin","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-voice-call-message-origin.json"},{"anchor":"desktop-workflow-limit-wait-env-var-passed-through","heading":"New CLAUDE_CODE_DESKTOP_WORKFLOW_LIMIT_WAIT variable for the Desktop app","glance":"Claude Code now reads CLAUDE_CODE_DESKTOP_WORKFLOW_LIMIT_WAIT, passes it to its Desktop settings when a check passes, then clears it","teaser":null,"tier":"use","area":"Desktop","section":"What probably matters to you","position":23,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/desktop-workflow-limit-wait-env-var-passed-through","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/desktop-workflow-limit-wait-env-var-passed-through.json"},{"anchor":"two-new-env-knobs-for-stream-event-hold-and-resume-goodbye-s","heading":"Streaming output can be held longer when nobody is watching","glance":"New CLAUDE_CODE_STREAM_EVENT_NO_SUBSCRIBER_HOLD_MS and set_has_subscribers tune stream holds; resume goodbye skipping gets an off switch","teaser":null,"tier":"use","area":"Resume","section":"What probably matters to you","position":24,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/two-new-env-knobs-for-stream-event-hold-and-resume-goodbye-s","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/two-new-env-knobs-for-stream-event-hold-and-resume-goodbye-s.json"},{"anchor":"plugin-attribution-can-carry-giveswaytoofficialinstall","heading":"CLAUDE_CODE_PLUGIN_ATTRIBUTION gains givesWayToOfficialInstall","glance":"The CLAUDE_CODE_PLUGIN_ATTRIBUTION environment variable joins the allowlist and its entries can set givesWayToOfficialInstall","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":25,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugin-attribution-can-carry-giveswaytoofficialinstall","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugin-attribution-can-carry-giveswaytoofficialinstall.json"},{"anchor":"plugin-function-hooks-theme-api-replaces-backdrop-clear","heading":"Plugin theme API: theme.set and theme.clear replace ui.backdrop","glance":"Plugins now set and clear a backdrop through theme.set and theme.clear, and the old ui.backdrop method is removed","teaser":null,"tier":"use","area":"Hooks","section":"What probably matters to you","position":26,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugin-function-hooks-theme-api-replaces-backdrop-clear","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugin-function-hooks-theme-api-replaces-backdrop-clear.json"},{"anchor":"plugins-can-supply-a-subagentstatusline-command","heading":"Plugins can supply a subagentStatusLine command","glance":"A plugin's settings can now provide a subagentStatusLine command, which gets CLAUDE_PLUGIN_ROOT and CLAUDE_PLUGIN_DATA","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":27,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugins-can-supply-a-subagentstatusline-command","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugins-can-supply-a-subagentstatusline-command.json"},{"anchor":"rewindsummarize-menu-gets-resume-from-summary-option","heading":"Rewind menu can offer to resume from a summary","glance":"The rewind and summarize menu can now show a Resume from summary option, where Claude writes a summary and you continue from it","teaser":null,"tier":"use","area":"Sessions","section":"What probably matters to you","position":29,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/rewindsummarize-menu-gets-resume-from-summary-option","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/rewindsummarize-menu-gets-resume-from-summary-option.json"},{"anchor":"sdk-mcp-servers-can-run-in-a-modern-protocol-mode","heading":"SDK MCP servers can connect without the usual setup handshake","glance":"In-process SDK MCP servers marked as modern now connect with saved capabilities and a response cache, skipping the setup handshake","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":30,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-mcp-servers-can-run-in-a-modern-protocol-mode","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-mcp-servers-can-run-in-a-modern-protocol-mode.json"},{"anchor":"sandbox-network-config-gains-denyuninspectedtunnel","heading":"Sandbox can refuse SOCKS and other non-HTTPS tunnels it cannot inspect","glance":"The sandbox can now block SOCKS, plain TCP and non-TLS tunnels to hosts that need inspection, telling Claude to use HTTPS through its proxy instead","teaser":null,"tier":"use","area":"Sandbox","section":"What probably matters to you","position":31,"scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sandbox-network-config-gains-denyuninspectedtunnel","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sandbox-network-config-gains-denyuninspectedtunnel.json"},{"anchor":"env-var-claude-code-drop-unavailable-deferred-tool-added-for","heading":"Setting to drop a paused tool call whose tool is gone on resume","glance":"Resumed headless sessions now keep a paused tool call whose tool has vanished; CLAUDE_CODE_DROP_UNAVAILABLE_DEFERRED_TOOL=1 drops it instead","teaser":null,"tier":"use","area":"Headless","section":"What probably matters to you","position":32,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/env-var-claude-code-drop-unavailable-deferred-tool-added-for","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/env-var-claude-code-drop-unavailable-deferred-tool-added-for.json"},{"anchor":"auto-mode-no-server-check-end-offer-dialog","heading":"Auto mode asks what to do when it cannot check actions","glance":"When auto mode cannot check actions in a session, Claude Code now asks whether to stay, switch to accept edits, or interrupt","teaser":null,"tier":"notice","area":"Auto Mode","section":"What probably matters to you","position":34,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/auto-mode-no-server-check-end-offer-dialog","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/auto-mode-no-server-check-end-offer-dialog.json"},{"anchor":"mcp-skill-resources-recognised-by-a-uri-ending-in-skillmd","heading":"Claude Code can recognise skills served by MCP servers","glance":"Claude Code can now pick out an MCP server entry whose address ends in \/SKILL.md and read off the server name and address","teaser":null,"tier":"notice","area":"MCP","section":"What probably matters to you","position":35,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-skill-resources-recognised-by-a-uri-ending-in-skillmd","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-skill-resources-recognised-by-a-uri-ending-in-skillmd.json"},{"anchor":"mcp-tool-calls-download-offers-and-tool-schema-handling","heading":"MCP tool results can pass input requests back and carry download offers","glance":"MCP tool results can now return input_required results unchanged when allowed, and carry download offers through the permission path","teaser":null,"tier":"notice","area":"MCP","section":"What probably matters to you","position":36,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-tool-calls-download-offers-and-tool-schema-handling","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-tool-calls-download-offers-and-tool-schema-handling.json"},{"anchor":"sdk-control-surface-trimmed-auth-mcp-plugin-and-session-t","heading":"Many SDK session-control methods are removed","glance":"SDK session control drops many methods, including sign-in, MCP server, plugin reload and session title ones","teaser":null,"tier":"notice","area":"SDK","section":"What probably matters to you","position":37,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-control-surface-trimmed-auth-mcp-plugin-and-session-t","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-control-surface-trimmed-auth-mcp-plugin-and-session-t.json"},{"anchor":"session-rules-persisted-across-sparesrestarts-ccr-kept-ses","heading":"Session permission rules are saved and restored in remote sessions","glance":"Allow, deny and ask rules made during a session are now saved to session metadata and restored on resume, with the update step moved into a helper","teaser":null,"tier":"notice","area":"Permissions","section":"What probably matters to you","position":38,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/session-rules-persisted-across-sparesrestarts-ccr-kept-ses","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/session-rules-persisted-across-sparesrestarts-ccr-kept-ses.json"},{"anchor":"gateway-protocol-doc-gains-billing-group-request-tags","heading":"The gateway can tag requests with a billing group","glance":"Gateway operators can now set a billing group tag so requests are logged by group, with the tags stripped before sending on","teaser":null,"tier":"notice","area":"LLM Gateway","section":"What probably matters to you","position":39,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/gateway-protocol-doc-gains-billing-group-request-tags","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/gateway-protocol-doc-gains-billing-group-request-tags.json"},{"anchor":"vs-code-card-message-approval-helper-gated-by-tengu-vscode-c","heading":"VS Code sessions can approve actions through a host dialog","glance":"In VS Code, approvals can now go through a dialog shown by the editor, behind a switch that is on unless turned off remotely","teaser":null,"tier":"notice","area":"VS Code","section":"What probably matters to you","position":40,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/vs-code-card-message-approval-helper-gated-by-tengu-vscode-c","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/vs-code-card-message-approval-helper-gated-by-tengu-vscode-c.json"},{"anchor":"mcp-connector-file-upload-model-passes-a-local-file-path-c","heading":"claude.ai connectors can receive files from your computer, off by default","glance":"claude.ai connector tools that take a file can now be given a local file path, and Claude Code uploads the file itself, but this is off by default","teaser":null,"tier":"soon","area":"Connectors","section":"What probably matters to you","position":41,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-connector-file-upload-model-passes-a-local-file-path-c","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-connector-file-upload-model-passes-a-local-file-path-c.json"},{"anchor":"sdk-context-usage-adds-coldresumequota","heading":"Apps built on Claude Code can warn about the cost of resuming an old session","glance":"The SDK's context usage reply can now include `coldResumeQuota`, so an app can warn how much of the 5-hour limit a cold resume costs","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":42,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-context-usage-adds-coldresumequota","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/sdk-context-usage-adds-coldresumequota.json"},{"anchor":"daemoncoldstart-default-now-fixed-to-transient","heading":"Background service startup defaults to transient when unset","glance":"With no `daemonColdStart` setting, Claude Code now falls back to the fixed value \"transient\"","teaser":null,"tier":"use","area":"Sessions","section":"What probably matters to you","position":43,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/daemoncoldstart-default-now-fixed-to-transient","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/daemoncoldstart-default-now-fixed-to-transient.json"},{"anchor":"free-text-option-in-select-prompts-can-open-an-external-edit","heading":"Free-text answers in choice prompts can be written in your own editor","glance":"Choice prompts with a type-your-own-answer option can now open your external editor through the `chat:externalEditor` key binding","teaser":null,"tier":"use","area":"Prompt Input","section":"What probably matters to you","position":44,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/free-text-option-in-select-prompts-can-open-an-external-edit","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/free-text-option-in-select-prompts-can-open-an-external-edit.json"},{"anchor":"loop-keepalive-now-defaults-off","heading":"Loop keepalive now falls back to off","glance":"Loop keepalive is now off unless the server or CLAUDE_CODE_LOOP_KEEPALIVE turns it on; it used to fall back to on","teaser":null,"tier":"use","area":"Loops","section":"What probably matters to you","position":45,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/loop-keepalive-now-defaults-off","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/loop-keepalive-now-defaults-off.json"},{"anchor":"mcp-connector-denyask-rules-new-name-keys-and-warnings","heading":"Permission rules for claude.ai connectors can use the connector&#039;s name","glance":"Claude Code now gives claude.ai connectors a name for deny and ask rules, and warns when a rule written that way cannot apply","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":47,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-connector-denyask-rules-new-name-keys-and-warnings","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/mcp-connector-denyask-rules-new-name-keys-and-warnings.json"},{"anchor":"plugin-validate-prints-and-emits-a-content-digest","heading":"Plugin validation now prints a digest of the plugin folder","glance":"`claude plugin validate` now prints a Digest line for the plugin folder, adds it to --json output, or says why there is none","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":48,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugin-validate-prints-and-emits-a-content-digest","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/plugin-validate-prints-and-emits-a-content-digest.json"},{"anchor":"rename-session-can-name-the-chrome-tab-group","heading":"Session titles can name the Chrome tab group","glance":"rename_session gains a names_chrome_tab_group option that sets or clears the Chrome tab group title, and only the service may set it","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":49,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/rename-session-can-name-the-chrome-tab-group","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/rename-session-can-name-the-chrome-tab-group.json"},{"anchor":"new-sdk-control-request-set-has-subscribers","heading":"SDK hosts can tell Claude Code whether anything is listening","glance":"Claude Code accepts a new `set_has_subscribers` control request that takes true, false or null","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":50,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-sdk-control-request-set-has-subscribers","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/new-sdk-control-request-set-has-subscribers.json"},{"anchor":"session-title-and-chrome-tab-group-naming-generate-session","heading":"Sessions can be named after their Chrome tab group","glance":"When a setting allows it, Claude Code can use a Chrome tab group's title as the session's display name","teaser":null,"tier":"use","area":"Claude in Chrome","section":"What probably matters to you","position":51,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/session-title-and-chrome-tab-group-naming-generate-session","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/session-title-and-chrome-tab-group-naming-generate-session.json"},{"anchor":"permissionsdenyinsteadofprompting-stops-a-run-of-refusals","heading":"permissions.denyInsteadOfPrompting can end a turn after repeated refusals","glance":"With permissions.denyInsteadOfPrompting, a run of refused actions now ends the turn with a denial instead of asking you","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":53,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/permissionsdenyinsteadofprompting-stops-a-run-of-refusals","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/permissionsdenyinsteadofprompting-stops-a-run-of-refusals.json"}],"facets":{"sections":[{"value":"What probably matters to you","entries":57},{"value":"Improvements","entries":261},{"value":"Bug Fixes","entries":17},{"value":"In Development","entries":10},{"value":"Internal Changes","entries":129},{"value":"Removed","entries":6}],"tiers":[{"value":"notice","entries":291},{"value":"internal","entries":137},{"value":"use","entries":39},{"value":"soon","entries":13}],"areas":[{"value":"Sessions","entries":40},{"value":"MCP","entries":31},{"value":"Elsewhere","entries":29},{"value":"Connectors","entries":25},{"value":"Telemetry","entries":21},{"value":"Auto Mode","entries":19},{"value":"Cloud Sessions","entries":19},{"value":"Permissions","entries":19},{"value":"SDK","entries":16},{"value":"Claude in Chrome","entries":15},{"value":"Internals","entries":15},{"value":"Plugins","entries":15},{"value":"Skills","entries":15},{"value":"Artifacts","entries":12},{"value":"Bash Safety","entries":11},{"value":"LLM Gateway","entries":8},{"value":"Auth","entries":7},{"value":"Background Tasks","entries":7},{"value":"Models","entries":7},{"value":"Resume","entries":7},{"value":"Worktrees","entries":7},{"value":"Settings","entries":6},{"value":"Subagents","entries":6},{"value":"System Prompt","entries":6},{"value":"Usage & Limits","entries":6},{"value":"Compaction","entries":5},{"value":"Hooks","entries":5},{"value":"Self-Hosted Runner","entries":5},{"value":"Terminal UI","entries":5},{"value":"Voice","entries":5},{"value":"Bash","entries":4},{"value":"Cowork","entries":4},{"value":"Environment Variables","entries":4},{"value":"Plan Mode","entries":4},{"value":"Slash Commands","entries":4},{"value":"Web Fetch","entries":4},{"value":"Agents","entries":3},{"value":"Context","entries":3},{"value":"Extension Pairing","entries":3},{"value":"Feedback","entries":3},{"value":"File Editing","entries":3},{"value":"Git","entries":3},{"value":"Headless","entries":3},{"value":"Memory","entries":3},{"value":"Project Docs","entries":3},{"value":"Projects","entries":3},{"value":"Prompt Cache","entries":3},{"value":"Remote Control","entries":3},{"value":"Tools","entries":3},{"value":"Workflows","entries":3},{"value":"Sandbox","entries":2},{"value":"Agent View","entries":1},{"value":"Claude Apps","entries":1},{"value":"Computer Use","entries":1},{"value":"Desktop","entries":1},{"value":"End Conversation","entries":1},{"value":"Installer","entries":1},{"value":"Linux","entries":1},{"value":"Loops","entries":1},{"value":"Managed Settings","entries":1},{"value":"Prompt Input","entries":1},{"value":"Recap","entries":1},{"value":"Runtime","entries":1},{"value":"Scripting API","entries":1},{"value":"Sharing","entries":1},{"value":"Teammates","entries":1},{"value":"Todo List","entries":1},{"value":"Usage Pools","entries":1},{"value":"VS Code","entries":1}]}}