{"version":"2.1.295","summary":"Setting `CLAUDE_CODE_RESTRICT_PERSONAL_CONFIG` now stops your own skills, agents and hooks from widening permissions. In that mode, errors in your user settings file block every prompt and tool call until you fix them. You can set `transcriptCacheTtl` to 5m to ask for 5-minute prompt caching instead of the default 1 hour. `claude mcp serve` has a new `--session-tunnel` mode that connects through a relay. Idle conversations are now compacted shortly before their prompt cache runs out. Plugins can now send notifications through your terminal.\n\nSeveral features are in this build but not switched on yet. Print mode can show each turn's text result as soon as that turn ends. MCP servers that failed with a retryable error can be retried at the start of the next turn. Images can be re-encoded as smaller WebP files when that saves space. Work on cloud sessions continues, with remote tool requests now pausing while the host computer sleeps. The fleet view can group and pin cloud sessions.\n\nTool search no longer freezes Claude Code when you have very many tools. A queued message that gets dropped is now handed back to you instead of being discarded. Prompts typed during a left-arrow hand-off to background agents are no longer lost. If a model rejects the 1M-token context option, Claude Code now leaves it out instead of failing every request. Plugin sync from claude.ai no longer removes plugin files that another running session is using. The end-of-turn message no longer includes token budget figures.","filter":{"section":null,"tier":null,"area":null},"offset":0,"limit":50,"count":50,"total":429,"next_offset":50,"next_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/entries.json?offset=50","entries":[{"anchor":"claude-mcp-serve-gains-an-http-transport-port-and-ses","heading":"claude mcp serve gains an HTTP mode and --session-tunnel, limited to cloud-remote sessions","glance":"In cloud-remote sessions only, claude mcp serve can run over HTTP, dial a session tunnel, read tokens from a descriptor and return tool output objects","teaser":null,"tier":"use","area":"MCP","section":"What probably matters to you","position":0,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-mcp-serve-gains-an-http-transport-port-and-ses","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-mcp-serve-gains-an-http-transport-port-and-ses.json"},{"anchor":"new-claude-code-restrict-personal-config-mode-limits-what-a","heading":"A new setting limits what your own skills, agents and hooks can do","glance":"Setting CLAUDE_CODE_RESTRICT_PERSONAL_CONFIG stops your own skills, agents and hooks from widening permissions, and makes key hooks required","teaser":null,"tier":"use","area":"Settings","section":"What probably matters to you","position":2,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-claude-code-restrict-personal-config-mode-limits-what-a","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-claude-code-restrict-personal-config-mode-limits-what-a.json"},{"anchor":"hooks-get-an-onfailure-field-block-makes-a-failing-hook","heading":"Hooks can be set to block when they fail","glance":"Command and http hooks accept a new onFailure field, and setting it to \"block\" makes a failing hook block the action","teaser":null,"tier":"use","area":"Hooks","section":"What probably matters to you","position":3,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/hooks-get-an-onfailure-field-block-makes-a-failing-hook","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/hooks-get-an-onfailure-field-block-makes-a-failing-hook.json"},{"anchor":"hooks-can-now-fail-closed-via-an-on-failure-setting","heading":"Hooks can now block the action when they fail","glance":"A new hook option set to `block` makes a hook that fails, times out or returns bad output stop the action it guards","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.295\/e\/hooks-can-now-fail-closed-via-an-on-failure-setting","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/hooks-can-now-fail-closed-via-an-on-failure-setting.json"},{"anchor":"new-env-var-claude-code-autoupdater-disabled-by-host-changes","heading":"New CLAUDE_CODE_AUTOUPDATER_DISABLED_BY_HOST lets a host stop plugin auto-updates","glance":"A host program can set CLAUDE_CODE_AUTOUPDATER_DISABLED_BY_HOST so plugin auto-updates stay off under the host's version pin","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":5,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-env-var-claude-code-autoupdater-disabled-by-host-changes","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-env-var-claude-code-autoupdater-disabled-by-host-changes.json"},{"anchor":"new-claude-code-restrict-personal-config-env-var-recognized","heading":"New <code>CLAUDE_CODE_RESTRICT_PERSONAL_CONFIG<\/code> mode restricts your own Claude Code files","glance":"Setting `CLAUDE_CODE_RESTRICT_PERSONAL_CONFIG` starts a session that restricts your own Claude Code files, alongside the other restricted modes","teaser":null,"tier":"use","area":"Settings","section":"What probably matters to you","position":6,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-claude-code-restrict-personal-config-env-var-recognized","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-claude-code-restrict-personal-config-env-var-recognized.json"},{"anchor":"retry-watchdog-skip-can-be-overridden-by-claude-code-retry-w","heading":"New <code>CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS<\/code> setting stops a retry check from being skipped","glance":"Setting `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` now stops Claude Code from skipping a check it otherwise skips because of the retry watchdog","teaser":null,"tier":"use","area":"API Retries","section":"What probably matters to you","position":7,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/retry-watchdog-skip-can-be-overridden-by-claude-code-retry-w","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/retry-watchdog-skip-can-be-overridden-by-claude-code-retry-w.json"},{"anchor":"git-fetch-gets-a-server-progress-stall-cap-env-var","heading":"New setting caps how long a runner&#039;s git fetch waits on server progress","glance":"`CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` sets a time cap on server-side progress when a runner fetches a repository","teaser":null,"tier":"use","area":"Self-Hosted Runners","section":"What probably matters to you","position":8,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/git-fetch-gets-a-server-progress-stall-cap-env-var","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/git-fetch-gets-a-server-progress-stall-cap-env-var.json"},{"anchor":"plugin-uinotify-channel-and-tool-search-aware-description","heading":"Plugins can send terminal notifications, and their tool descriptions can run longer","glance":"Plugins can now send notifications through the terminal, and tool descriptions get a longer limit once a tool is loaded through tool search","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":10,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/plugin-uinotify-channel-and-tool-search-aware-description","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/plugin-uinotify-channel-and-tool-search-aware-description.json"},{"anchor":"self-hosted-runner-new-self-hosted-runner-server-auto-mode","heading":"Self-hosted runners can choose which server auto mode lists apply","glance":"A new `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` setting lets self-hosted runner operators limit which server-supplied auto mode lists sessions follow","teaser":null,"tier":"use","area":"Self-Hosted Runners","section":"What probably matters to you","position":11,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/self-hosted-runner-new-self-hosted-runner-server-auto-mode","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/self-hosted-runner-new-self-hosted-runner-server-auto-mode.json"},{"anchor":"cache-ttl-override-and-prompt-classifier-tweaks","heading":"Shorter prompt caching with <code>transcriptCacheTtl<\/code>","glance":"Setting `transcriptCacheTtl` to 5m makes Claude Code ask for 5-minute caching when the default would be 1 hour","teaser":null,"tier":"use","area":"Prompt Cache","section":"What probably matters to you","position":12,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/cache-ttl-override-and-prompt-classifier-tweaks","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/cache-ttl-override-and-prompt-classifier-tweaks.json"},{"anchor":"claude-code-polished-dewdrop-env-override-parsed","heading":"<code>CLAUDE_CODE_POLISHED_DEWDROP<\/code> now accepts drop, block or off","glance":"The `CLAUDE_CODE_POLISHED_DEWDROP` environment variable now overrides a setting with one of three values: drop, block or off","teaser":null,"tier":"use","area":"Settings","section":"What probably matters to you","position":15,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-polished-dewdrop-env-override-parsed","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-polished-dewdrop-env-override-parsed.json"},{"anchor":"feedback-survey-keybindings-added","heading":"Feedback survey can be answered with ctrl+x keyboard chords","glance":"The feedback survey gains rebindable ctrl+x 1\/2\/3 chords for bad, fine and good, with on-screen hints that follow your bindings","teaser":null,"tier":"use","area":"Feedback Survey","section":"What probably matters to you","position":16,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/feedback-survey-keybindings-added","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/feedback-survey-keybindings-added.json"},{"anchor":"gateway-upstream-ttfb-timeout-now-only-applies-when-operator","heading":"Gateway first-byte timeout now applies to every upstream type when set; upstreams accept a models list","glance":"The gateway's `timeouts.upstream_ttfb_ms` now covers non-Anthropic upstreams when you set it, upstreams take a models list, and Bedrock can count tokens","teaser":null,"tier":"use","area":"LLM Gateway","section":"What probably matters to you","position":17,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/gateway-upstream-ttfb-timeout-now-only-applies-when-operator","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/gateway-upstream-ttfb-timeout-now-only-applies-when-operator.json"},{"anchor":"user-email-fallback-from-claude-code-user-email","heading":"CLAUDE_CODE_USER_EMAIL can supply your email when you are not logged in","glance":"If there is no logged-in email, Claude Code can now use the CLAUDE_CODE_USER_EMAIL environment variable as the email it gives the model","teaser":null,"tier":"use","area":"Settings","section":"What probably matters to you","position":18,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/user-email-fallback-from-claude-code-user-email","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/user-email-fallback-from-claude-code-user-email.json"},{"anchor":"hook-http-config-gains-onfailure-extra-mime-to-extension-ma","heading":"HTTP hooks accept an onFailure setting, and more web files get proper extensions","glance":"HTTP hooks gain an onFailure setting, and icons, stylesheets, scripts, fonts and similar files now get their own file extensions","teaser":null,"tier":"use","area":"Hooks","section":"What probably matters to you","position":20,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/hook-http-config-gains-onfailure-extra-mime-to-extension-ma","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/hook-http-config-gains-onfailure-extra-mime-to-extension-ma.json"},{"anchor":"claude-code-restrict-personal-config-blocks-all-prompts-and","heading":"New option to block a session when your personal settings file is broken","glance":"With `CLAUDE_CODE_RESTRICT_PERSONAL_CONFIG` set, errors in your user settings file block every prompt and tool call until they are fixed","teaser":null,"tier":"use","area":"Settings","section":"What probably matters to you","position":21,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-restrict-personal-config-blocks-all-prompts-and","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-restrict-personal-config-blocks-all-prompts-and.json"},{"anchor":"claude-code-disable-bg-stable-path-opts-out-of-the-stable-ex","heading":"New setting to stop background sessions on macOS using the stable program path","glance":"On macOS, setting CLAUDE_CODE_DISABLE_BG_STABLE_PATH makes background sessions relaunch from the running program instead of the stable path","teaser":null,"tier":"use","area":"Sessions","section":"What probably matters to you","position":22,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-disable-bg-stable-path-opts-out-of-the-stable-ex","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-disable-bg-stable-path-opts-out-of-the-stable-ex.json"},{"anchor":"toast-notification-bar-ledger-for-plugins-uitoast-uinot","heading":"Plugins can post notifications to the notification bar","glance":"Plugins gain a `ui.notify` operation for posting notifications, and each notification's screen time is now budgeted and saved","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":23,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/toast-notification-bar-ledger-for-plugins-uitoast-uinot","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/toast-notification-bar-ledger-for-plugins-uitoast-uinot.json"},{"anchor":"ui-extension-bits-uinotify-button-text-ripgrep-searchoth","heading":"Plugin UI gains ui.notify and Button text from children; search passes searchOtherAppsData","glance":"Plugin UI adds a `ui.notify` operation and Button text from children, and the Grep search now passes a `searchOtherAppsData` flag","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":24,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/ui-extension-bits-uinotify-button-text-ripgrep-searchoth","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/ui-extension-bits-uinotify-button-text-ripgrep-searchoth.json"},{"anchor":"fast-mode-toggle-gets-a-row-commit-hook-new-saved-as-your","heading":"Turning fast mode on or off can be saved as your default","glance":"Toggling fast mode in one settings screen now also saves the choice as your default for new sessions","teaser":null,"tier":"use","area":"Models","section":"What probably matters to you","position":25,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/fast-mode-toggle-gets-a-row-commit-hook-new-saved-as-your","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/fast-mode-toggle-gets-a-row-commit-hook-new-saved-as-your.json"},{"anchor":"new-feedbacksurvey-keybinding-context","heading":"You can set keyboard shortcuts for the session feedback survey","glance":"A new FeedbackSurvey keybinding context applies when the session feedback survey has been typed over","teaser":null,"tier":"use","area":"Terminal UI","section":"What probably matters to you","position":26,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-feedbacksurvey-keybinding-context","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/new-feedbacksurvey-keybinding-context.json"},{"anchor":"claude-haiku-5-5-added-to-a-model-list-with-medium-default-e","heading":"Haiku 5.5 gets a medium-effort thinking default in a model list","glance":"A model list now includes `claude-haiku-5-5` with thinking set to medium effort, and the model appears in more places than before","teaser":null,"tier":"notice","area":"Models","section":"What probably matters to you","position":27,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-haiku-5-5-added-to-a-model-list-with-medium-default-e","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-haiku-5-5-added-to-a-model-list-with-medium-default-e.json"},{"anchor":"idle-sleep-compact-timer-compacts-context-just-before-pro","heading":"Idle compaction is now timed to run just before the prompt cache expires","glance":"A timer now compacts an idle conversation shortly before its prompt cache runs out, if it is large enough and rate limits allow","teaser":null,"tier":"notice","area":"Compaction","section":"What probably matters to you","position":28,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/idle-sleep-compact-timer-compacts-context-just-before-pro","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/idle-sleep-compact-timer-compacts-context-just-before-pro.json"},{"anchor":"self-wake-when-an-attached-machine-returns","heading":"Sessions can wake themselves when an attached computer comes back","glance":"Claude Code can start a turn on its own when an attached computer is reachable again or a stopped command's late result arrives","teaser":null,"tier":"notice","area":"Computer Use","section":"What probably matters to you","position":29,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/self-wake-when-an-attached-machine-returns","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/self-wake-when-an-attached-machine-returns.json"},{"anchor":"fleet-view-remote-session-list-failures-keep-rows-cloud-ro","heading":"Fleet view: session tabs, cloud list notices, and pinned or grouped cloud rows","glance":"The fleet view gains a way to move to the next session, keeps cloud sessions listed when loading fails, and lets cloud rows be grouped or pinned","teaser":null,"tier":"soon","area":"Background Tasks","section":"What probably matters to you","position":30,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/fleet-view-remote-session-list-failures-keep-rows-cloud-ro","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/fleet-view-remote-session-list-failures-keep-rows-cloud-ro.json"},{"anchor":"plugin-addressed-mcp-requestresponse-metadata-gated-behind","heading":"Plugins can receive metadata from MCP servers, off by default","glance":"A new way to pass MCP server metadata to plugins was added; it stays off unless switched on remotely","teaser":null,"tier":"soon","area":"Plugins","section":"What probably matters to you","position":32,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/plugin-addressed-mcp-requestresponse-metadata-gated-behind","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/plugin-addressed-mcp-requestresponse-metadata-gated-behind.json"},{"anchor":"print-mode-text-results-printed-at-each-turn-end","heading":"Print mode prints each turn&#039;s result as it ends and explains long waits","glance":"In `claude -p` print mode, text results can print as each turn ends, a notice explains waits for background work, and stream events gain fields","teaser":null,"tier":"notice","area":"Print Mode","section":"What probably matters to you","position":33,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/print-mode-text-results-printed-at-each-turn-end","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/print-mode-text-results-printed-at-each-turn-end.json"},{"anchor":"cloud-now-accepts-a-prompt-piped-on-stdin-or-a-positional","heading":"Cloud sessions: --environment parses names and ids, and --cloud accepts more ways of passing the task","glance":"--environment now parses env_ ids and names (only ccpool_ ids work yet), cloud runs resolve an environment query, and --cloud takes piped or positional prompts","teaser":null,"tier":"use","area":"Cloud Sessions","section":"What probably matters to you","position":34,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/cloud-now-accepts-a-prompt-piped-on-stdin-or-a-positional","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/cloud-now-accepts-a-prompt-piped-on-stdin-or-a-positional.json"},{"anchor":"copy-picker-now-lists-blockquotes-as-well-as-code-blocks","heading":"<code>\/copy<\/code> can now copy quoted passages as well as code blocks","glance":"The `\/copy` picker now lists quoted passages from a reply alongside code blocks, so you can copy a quote on its own","teaser":null,"tier":"use","area":"Slash Commands","section":"What probably matters to you","position":36,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/copy-picker-now-lists-blockquotes-as-well-as-code-blocks","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/copy-picker-now-lists-blockquotes-as-well-as-code-blocks.json"},{"anchor":"permission-hook-recheck-decision-maps-to-accept","heading":"A <code>recheck<\/code> permission decision is treated as allowed by configuration","glance":"A permission decision of `recheck` is now treated as allowing the action, recorded as coming from your configuration","teaser":null,"tier":"use","area":"Hooks","section":"What probably matters to you","position":37,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/permission-hook-recheck-decision-maps-to-accept","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/permission-hook-recheck-decision-maps-to-accept.json"},{"anchor":"resume-diagnostics-reporter-active-only-with-claude-code-di","heading":"Diagnostics file can now record how a resumed conversation was loaded","glance":"With CLAUDE_CODE_DIAGNOSTICS_FILE set, Claude Code writes a report on how each resumed conversation was loaded from its saved transcript","teaser":null,"tier":"use","area":"Diagnostics","section":"What probably matters to you","position":38,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/resume-diagnostics-reporter-active-only-with-claude-code-di","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/resume-diagnostics-reporter-active-only-with-claude-code-di.json"},{"anchor":"sdk-stream-events-gain-api-message-id","heading":"Every SDK stream event now says which reply it belongs to","glance":"Each SDK stream event between a reply's start and stop now carries an `api_message_id`, so programs can match events to replies","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":39,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/sdk-stream-events-gain-api-message-id","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/sdk-stream-events-gain-api-message-id.json"},{"anchor":"gatewayurl-setting-now-honoured-from-user-settings-on-unmana","heading":"Gateway URL setting can now come from your own user settings","glance":"The gatewayUrl setting is now honoured from your user settings on a machine with no managed settings, not only from admin-managed ones","teaser":null,"tier":"use","area":"LLM Gateway","section":"What probably matters to you","position":40,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/gatewayurl-setting-now-honoured-from-user-settings-on-unmana","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/gatewayurl-setting-now-honoured-from-user-settings-on-unmana.json"},{"anchor":"mod-ui-button-now-accepts-text-children","heading":"Plugin UI buttons can now hold styled text","glance":"Buttons in plugin-built screens can now contain plain strings and Text elements, drawn in place of the button's label","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":42,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/mod-ui-button-now-accepts-text-children","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/mod-ui-button-now-accepts-text-children.json"},{"anchor":"claude-code-restrict-personal-config-blocks-agent-defined-mc","heading":"Restricted sessions block your own agents&#039; MCP servers and cloud launches","glance":"With CLAUDE_CODE_RESTRICT_PERSONAL_CONFIG set, your own agents' MCP servers are skipped and launching an agent in the cloud is refused","teaser":null,"tier":"use","area":"Subagents","section":"What probably matters to you","position":43,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-restrict-personal-config-blocks-agent-defined-mc","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-code-restrict-personal-config-blocks-agent-defined-mc.json"},{"anchor":"settings-dialog-gains-an-auto-update-channel-row-and-shared","heading":"Settings screen can switch the auto-update channel between latest and stable","glance":"The settings screen can set the auto-update channel to latest or stable, and choosing stable can also set a minimum version","teaser":null,"tier":"use","area":"Updates","section":"What probably matters to you","position":44,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/settings-dialog-gains-an-auto-update-channel-row-and-shared","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/settings-dialog-gains-an-auto-update-channel-row-and-shared.json"},{"anchor":"prompt-draft-persisted-to-claude-job-dir","heading":"Unsent prompt text is saved to a file when CLAUDE_JOB_DIR is set","glance":"When CLAUDE_JOB_DIR is set, Claude Code keeps what you have typed but not sent in a .prompt-draft file in that folder","teaser":null,"tier":"use","area":"Prompt Input","section":"What probably matters to you","position":45,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/prompt-draft-persisted-to-claude-job-dir","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/prompt-draft-persisted-to-claude-job-dir.json"},{"anchor":"diskless-sessions-skip-skills-settings-hook-env-reads-and","heading":"Sessions with no disk skip skills, settings files and shell detection","glance":"In a diskless session, Claude Code no longer reads skills, settings files or shell details from the disk","teaser":null,"tier":"notice","area":"Diskless Sessions","section":"What probably matters to you","position":46,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/diskless-sessions-skip-skills-settings-hook-env-reads-and","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/diskless-sessions-skip-skills-settings-hook-env-reads-and.json"},{"anchor":"managed-settings-summary-now-reports-a-separate-seat-layer","heading":"Plugin settings summary now includes a separate seat layer","glance":"The summary of plugin and marketplace settings now includes a seat section with its own plugin and marketplace values","teaser":null,"tier":"internal","area":"Managed Settings","section":"What probably matters to you","position":47,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/managed-settings-summary-now-reports-a-separate-seat-layer","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/managed-settings-summary-now-reports-a-separate-seat-layer.json"},{"anchor":"http-idle-timeout-can-be-set-by-a-new-bodyidletimeout-option","heading":"Stream idle and API timeouts can now come from a config, with API_FORCE_IDLE_TIMEOUT taking precedence","glance":"Idle and request timeouts can now be set from a config (bodyIdleTimeout, stream_idle_timeout_ms, api_timeout_ms) when the env vars are unset","teaser":null,"tier":"use","area":"Streaming","section":"What probably matters to you","position":48,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/http-idle-timeout-can-be-set-by-a-new-bodyidletimeout-option","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/http-idle-timeout-can-be-set-by-a-new-bodyidletimeout-option.json"},{"anchor":"gateway-docs-501-not-supported-should-send-x-should-retry","heading":"Gateway guide: send <code>x-should-retry: false<\/code> with a 501 not supported response","glance":"The bundled gateway guide now says a 501 not supported response should send `x-should-retry: false`, or Claude Code retries once first","teaser":null,"tier":"use","area":"LLM Gateway","section":"What probably matters to you","position":49,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/gateway-docs-501-not-supported-should-send-x-should-retry","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/gateway-docs-501-not-supported-should-send-x-should-retry.json"},{"anchor":"claude-device-note-added-to-a-tool-name-display","heading":"Note explains how claude-device browser tools are shown","glance":"For claude-device, a note now says its `chrome_*` tool calls are shown as `mcp__claude-in-chrome__*`","teaser":null,"tier":"notice","area":"Chrome","section":"What probably matters to you","position":50,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-device-note-added-to-a-tool-name-display","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-device-note-added-to-a-tool-name-display.json"},{"anchor":"claude-in-chrome-permission-checks-now-match-host80-and-add","heading":"Claude in Chrome checks blocked sites more strictly","glance":"Claude in Chrome now matches blocked sites with or without a port, and refuses actions when it cannot tell which site they target","teaser":null,"tier":"notice","area":"Chrome","section":"Improvements","position":0,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-in-chrome-permission-checks-now-match-host80-and-add","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/claude-in-chrome-permission-checks-now-match-host80-and-add.json"},{"anchor":"plugin-hook-runstool-failure-message-and-fields-changed","heading":"Plugin hooks cannot rewrite a tool call whose location is unknown","glance":"If the plugin hook runner cannot tell where a tool call runs, Claude Code now refuses a hook's rewritten input for that call","teaser":null,"tier":"notice","area":"Hooks","section":"Improvements","position":1,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/plugin-hook-runstool-failure-message-and-fields-changed","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/plugin-hook-runstool-failure-message-and-fields-changed.json"},{"anchor":"release-notes-bundle-for-21292","heading":"Built-in release notes now start at version 2.1.292","glance":"The release notes bundled inside Claude Code now open with a 2.1.292 section, listing an Agent tool effort setting and more","teaser":null,"tier":"notice","area":"Elsewhere","section":"Improvements","position":2,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/release-notes-bundle-for-21292","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/release-notes-bundle-for-21292.json"},{"anchor":"restart-failure-messages","heading":"New messages when Claude Code cannot restart","glance":"Claude Code now shows a message when it cannot restart, and one version tells you to use \/resume to continue your conversation","teaser":null,"tier":"notice","area":"Updates","section":"Improvements","position":3,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/restart-failure-messages","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/restart-failure-messages.json"},{"anchor":"long-context-beta-400-detection-helper","heading":"Claude Code recognises when the long-context beta is rejected","glance":"Claude Code now identifies a request error that mentions the long context beta as that beta being rejected","teaser":null,"tier":"notice","area":"Long Context","section":"Improvements","position":4,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/long-context-beta-400-detection-helper","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/long-context-beta-400-detection-helper.json"},{"anchor":"tool-hosts-notice-now-carries-an-away-list","heading":"Claude is told when an offline remote tool host is reachable again","glance":"The remote tool-host notice now tells Claude when a host that went offline is back, and warns it not to blindly resend commands","teaser":null,"tier":"notice","area":"Remote Tools","section":"Improvements","position":6,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/tool-hosts-notice-now-carries-an-away-list","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/tool-hosts-notice-now-carries-an-away-list.json"},{"anchor":"settings-panel-auto-update-channel-and-notification-changes","heading":"Update channel and notification settings in \/config are checked before saving","glance":"Changes to the update channel and notification settings in `\/config` now go through one shared check, which rejects unknown values","teaser":null,"tier":"notice","area":"Settings","section":"Improvements","position":7,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/settings-panel-auto-update-channel-and-notification-changes","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/settings-panel-auto-update-channel-and-notification-changes.json"}],"facets":{"sections":[{"value":"What probably matters to you","entries":43},{"value":"Improvements","entries":200},{"value":"Bug Fixes","entries":38},{"value":"In Development","entries":13},{"value":"Internal Changes","entries":134},{"value":"Removed","entries":1}],"tiers":[{"value":"notice","entries":244},{"value":"internal","entries":135},{"value":"use","entries":34},{"value":"soon","entries":16}],"areas":[{"value":"Sessions","entries":38},{"value":"Elsewhere","entries":36},{"value":"Plugins","entries":29},{"value":"MCP","entries":24},{"value":"Telemetry","entries":24},{"value":"Permissions","entries":21},{"value":"Hooks","entries":19},{"value":"Terminal UI","entries":17},{"value":"LLM Gateway","entries":16},{"value":"Cloud Sessions","entries":15},{"value":"Artifacts","entries":9},{"value":"Diskless Sessions","entries":8},{"value":"Settings","entries":8},{"value":"Subagents","entries":8},{"value":"Auto Mode","entries":7},{"value":"Models","entries":7},{"value":"Remote Tools","entries":7},{"value":"SDK","entries":7},{"value":"Self-Hosted Runners","entries":7},{"value":"Chrome","entries":6},{"value":"Prompt Input","entries":6},{"value":"Skills","entries":6},{"value":"Tools","entries":6},{"value":"Attachments","entries":5},{"value":"Background Agents","entries":5},{"value":"Compaction","entries":5},{"value":"Errors","entries":5},{"value":"Memory","entries":5},{"value":"Miscellaneous","entries":5},{"value":"Background Tasks","entries":4},{"value":"Git","entries":4},{"value":"Headless Mode","entries":4},{"value":"Long Context","entries":4},{"value":"Prompt Cache","entries":4},{"value":"Usage & Limits","entries":4},{"value":"Web Search","entries":4},{"value":"API Retries","entries":3},{"value":"Feedback Survey","entries":3},{"value":"Managed Settings","entries":3},{"value":"Sandbox","entries":3},{"value":"Updates","entries":3},{"value":"Bedrock","entries":2},{"value":"Mods","entries":2},{"value":"Print Mode","entries":2},{"value":"Session Tabs","entries":2},{"value":"AskUserQuestion","entries":1},{"value":"Chat Relay","entries":1},{"value":"Computer Use","entries":1},{"value":"Design Tools","entries":1},{"value":"Diagnostics","entries":1},{"value":"Images","entries":1},{"value":"Loop","entries":1},{"value":"Messaging","entries":1},{"value":"Output Limits","entries":1},{"value":"Read Tool","entries":1},{"value":"Remote Control","entries":1},{"value":"Session Cleanup","entries":1},{"value":"Slash Commands","entries":1},{"value":"Streaming","entries":1},{"value":"System Prompt","entries":1},{"value":"Tool Search","entries":1},{"value":"Windows","entries":1}]}}