{"version":"2.1.315","summary":"Admins running the bundled gateway can now set one shared monthly spending limit for a whole access group. The new `blockReadsExemptPaths` setting lists folders Claude Code may still read when reads outside your working directories are blocked. Claude Code can now publish an artifact as a Claude doc. It also reports whether a lasting subscription to that doc's updates was set up. In Cowork, the loops Claude Code starts no longer receive your memory. A hidden `--gateway-json` option on `claude auth login` lets the VS Code extension handle Cloud gateway sign-in.\n\nSeveral features are in the build but not switched on yet. Remote sessions can track and resend conversation lines they still owe after a restart, but only when this is switched on remotely. Files uploaded to a project can be attached as text context, behind a flag that defaults to off. Claude Code can list MCP server requests that are waiting for your input, also behind an off-by-default flag. Long Bash output previews can keep both the start and the end, with the full text saved to a file. Numbered menus can be set to wait for Enter instead of picking after a short pause.\n\nFile searches no longer hang when ripgrep fails to exit after a timeout. Stray connections can no longer knock you off a background session. Sending a message immediately no longer cuts off an automatic compaction that is in progress. Resuming a copied session no longer shows a stray cut-off tool call. When Claude Code runs as a tool server, a settings file that fails to load no longer drops its permission rules. Shell snapshots now save your aliases in a case where they used to save nothing.","filter":{"section":null,"tier":null,"area":null},"offset":0,"limit":50,"count":50,"total":237,"next_offset":50,"next_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/entries.json?offset=50","entries":[{"anchor":"managed-policies-gain-policy-mode-layered","heading":"Managed policies can be layered instead of first-match only","glance":"Managed settings gain `policy_mode: layered`, which merges several matching policies instead of applying only the first one, with limits to protect deny rules","teaser":null,"tier":"use","area":"Managed Settings","section":"What probably matters to you","position":0,"scope":"org","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/managed-policies-gain-policy-mode-layered","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/managed-policies-gain-policy-mode-layered.json"},{"anchor":"silent-peer-admission-for-the-background-socket-is-now-set-f","heading":"Background session socket waits for new connections to speak before letting them in","glance":"A background session's socket can now hold new connections until they send something, so a silent stray connection cannot kick off the attached viewer","teaser":null,"tier":"use","area":"Sessions","section":"What probably matters to you","position":1,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/silent-peer-admission-for-the-background-socket-is-now-set-f","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/silent-peer-admission-for-the-background-socket-is-now-set-f.json"},{"anchor":"held-message-recognition-gated-by-a-killswitch-and-an-env-va","heading":"Held-message recognition arrives with an opt-out variable","glance":"A new held-message recognition feature can be turned off with `CLAUDE_CODE_DISABLE_HELD_MESSAGE_RECOGNITION`, which is also passed to remote sessions","teaser":null,"tier":"use","area":"Messaging","section":"What probably matters to you","position":2,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/held-message-recognition-gated-by-a-killswitch-and-an-env-va","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/held-message-recognition-gated-by-a-killswitch-and-an-env-va.json"},{"anchor":"claude-code-disable-ultrathink-kill-switch","heading":"CLAUDE_CODE_DISABLE_ULTRATHINK turns off ultrathink keyword handling","glance":"Setting the new `CLAUDE_CODE_DISABLE_ULTRATHINK` variable stops Claude Code from treating the word ultrathink in your prompt specially","teaser":null,"tier":"use","area":"Thinking","section":"What probably matters to you","position":4,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-code-disable-ultrathink-kill-switch","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-code-disable-ultrathink-kill-switch.json"},{"anchor":"claude-code-subagent-effort-sets-a-default-effort-for-subage","heading":"New <code>CLAUDE_CODE_SUBAGENT_EFFORT<\/code> sets a default effort for subagents","glance":"Set `CLAUDE_CODE_SUBAGENT_EFFORT` to give subagents and workflow agents an effort level when their own definition does not set one","teaser":null,"tier":"use","area":"Subagents","section":"What probably matters to you","position":6,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-code-subagent-effort-sets-a-default-effort-for-subage","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-code-subagent-effort-sets-a-default-effort-for-subage.json"},{"anchor":"new-permissionsblockreadsexemptpaths-read-only-from-flag-s","heading":"Read blocking outside working directories: restricted mode, exempt paths, searches and Chrome uploads","glance":"Restricted mode now blocks reads outside the working directories, searches and Chrome uploads are fenced too, and blockReadsExemptPaths lets chosen paths through","teaser":null,"tier":"use","area":"Permissions","section":"What probably matters to you","position":7,"scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-permissionsblockreadsexemptpaths-read-only-from-flag-s","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-permissionsblockreadsexemptpaths-read-only-from-flag-s.json"},{"anchor":"mcp-redial-after-sandbox-proxy-policy-refusal-can-be-suppres","heading":"Opt-in setting stops retrying MCP servers the sandbox proxy blocked","glance":"With `CLAUDE_CODE_MCP_NO_REDIAL_AFTER_POLICY_REFUSAL` set, Claude Code can stop redialing MCP servers that the sandbox network policy refused","teaser":null,"tier":"use","area":"MCP","section":"What probably matters to you","position":9,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-redial-after-sandbox-proxy-policy-refusal-can-be-suppres","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-redial-after-sandbox-proxy-policy-refusal-can-be-suppres.json"},{"anchor":"gateway-gains-pooled-per-group-spend-limits","heading":"Gateway adds spend budgets shared by a whole group","glance":"The bundled gateway can now cap monthly spend for a whole group, rejects requests when the shared pool runs out, and documents the group_pool limit header","teaser":null,"tier":"use","area":"Gateways","section":"What probably matters to you","position":10,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/gateway-gains-pooled-per-group-spend-limits","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/gateway-gains-pooled-per-group-spend-limits.json"},{"anchor":"two-new-env-vars-disable-certificate-dropping-behaviour","heading":"Claude Code drops suspect CA certificates from NODE_EXTRA_CA_CERTS, with two opt-out switches and clearer errors","glance":"Unverifiable self-named and looped cross-signed CA certificates are now dropped, two env vars keep them, and certificate errors explain missing issuers","teaser":null,"tier":"use","area":"Network Security","section":"What probably matters to you","position":11,"scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/two-new-env-vars-disable-certificate-dropping-behaviour","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/two-new-env-vars-disable-certificate-dropping-behaviour.json"},{"anchor":"claude-code-sorted-otter-env-override-added-for-the-tengu-so","heading":"Environment variable override for the sorted-otter switch","glance":"`CLAUDE_CODE_SORTED_OTTER` can now override the remote `tengu_sorted_otter` switch, and one function moves from that switch to `tengu_quiet_pike`","teaser":null,"tier":"use","area":"Internals","section":"What probably matters to you","position":12,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-code-sorted-otter-env-override-added-for-the-tengu-so","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-code-sorted-otter-env-override-added-for-the-tengu-so.json"},{"anchor":"hidden-gateway-json-flag-on-claude-auth-login-for-cloud","heading":"Hidden gateway JSON sign-in mode for claude auth login","glance":"`claude auth login` gains a hidden `--gateway-json` option that runs Cloud gateway sign-in as JSON lines for another program, such as the VS Code extension","teaser":null,"tier":"use","area":"Auth","section":"What probably matters to you","position":13,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/hidden-gateway-json-flag-on-claude-auth-login-for-cloud","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/hidden-gateway-json-flag-on-claude-auth-login-for-cloud.json"},{"anchor":"bedrock-guardrail-gets-input-tagging-option","heading":"Gateway: Bedrock guardrail input tagging, and model checks that cover the whole request","glance":"The bundled gateway supports input_tagging for Bedrock guardrails, requires it to match across upstreams, and checks every model named in a request","teaser":null,"tier":"use","area":"Bedrock","section":"What probably matters to you","position":14,"scope":"org","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bedrock-guardrail-gets-input-tagging-option","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bedrock-guardrail-gets-input-tagging-option.json"},{"anchor":"session-init-reports-whether-ultrathink-raises-the-turn-to","heading":"Apps and editors can tell whether typing ultrathink raises effort, and settings survive brief read failures","glance":"SDK apps and editor extensions now get ultrathinkAvailable, and a settings file that briefly cannot be read keeps its last known values","teaser":null,"tier":"use","area":"IDE Integration","section":"What probably matters to you","position":15,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/session-init-reports-whether-ultrathink-raises-the-turn-to","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/session-init-reports-whether-ultrathink-raises-the-turn-to.json"},{"anchor":"hidden-session-began-as-copy-flag-server-sent","heading":"Hidden option marks a session that began as a copy of another","glance":"A hidden --session-began-as-copy option, sent by the server, stops --resume from continuing the copied session's last turn","teaser":null,"tier":"use","area":"Sessions","section":"What probably matters to you","position":16,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/hidden-session-began-as-copy-flag-server-sent","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/hidden-session-began-as-copy-flag-server-sent.json"},{"anchor":"new-env-var-claude-code-session-began-as-copy-passed-through","heading":"New environment variable passed on to programs Claude Code starts","glance":"Claude Code now passes a new variable, `CLAUDE_CODE_SESSION_BEGAN_AS_COPY`, on to the programs it starts","teaser":null,"tier":"use","area":"Sessions","section":"What probably matters to you","position":18,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-env-var-claude-code-session-began-as-copy-passed-through","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-env-var-claude-code-session-began-as-copy-passed-through.json"},{"anchor":"mcp-tool-list-skip-unchanged-relist-memo-opt-in-by-env-var","heading":"Opt-in setting to skip rebuilding MCP tool lists that have not changed","glance":"With `CLAUDE_CODE_MCP_SKIP_UNCHANGED_RELIST` set to true, Claude Code reuses an MCP server's earlier tool list when nothing changed","teaser":null,"tier":"use","area":"MCP","section":"What probably matters to you","position":19,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-tool-list-skip-unchanged-relist-memo-opt-in-by-env-var","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-tool-list-skip-unchanged-relist-memo-opt-in-by-env-var.json"},{"anchor":"elicitation-requests-join-prompt-redelivery-fields","heading":"Pending MCP elicitation requests are carried with other pending prompts","glance":"Waiting MCP elicitation requests are now kept in session state and sent with pending permission and dialog requests, then removed before delivery","teaser":null,"tier":"use","area":"Agents","section":"What probably matters to you","position":20,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/elicitation-requests-join-prompt-redelivery-fields","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/elicitation-requests-join-prompt-redelivery-fields.json"},{"anchor":"post-turn-memory-config-smaller-pass-gains-a-form-field","heading":"Post-turn memory&#039;s <code>smaller_pass<\/code> gains a <code>form<\/code> setting","glance":"The `smaller_pass` block in `CLAUDE_CODE_POST_TURN_MEMORY_CONFIG` now takes `form` (`turns` or `inline`) and its `mode` can only be `off` or `shadow`","teaser":null,"tier":"use","area":"Memory","section":"What probably matters to you","position":21,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/post-turn-memory-config-smaller-pass-gains-a-form-field","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/post-turn-memory-config-smaller-pass-gains-a-form-field.json"},{"anchor":"cloud-gateway-sign-in-flow-in-headless-mode","heading":"A sign-in flow for a Cloud gateway now exists","glance":"Claude Code now has a sign-in flow for a Cloud gateway that asks for a URL, asks you to trust it and confirms the account","teaser":null,"tier":"notice","area":"Cloud Gateway","section":"What probably matters to you","position":22,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/cloud-gateway-sign-in-flow-in-headless-mode","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/cloud-gateway-sign-in-flow-in-headless-mode.json"},{"anchor":"claude-docs-artifacts-armed-for-durable-subscribe","heading":"A new claudeDoc flag for artifacts and their durable subscriptions","glance":"Artifact publishing gains a claudeDoc flag that can set up a durable subscription, with a new claude_doc_not_admitted failure reason","teaser":null,"tier":"notice","area":"Artifacts","section":"What probably matters to you","position":23,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-docs-artifacts-armed-for-durable-subscribe","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-docs-artifacts-armed-for-durable-subscribe.json"},{"anchor":"project-uploaded-files-can-now-be-sent-as-inline-context-tex","heading":"Files uploaded to a project can be sent as text context, behind a flag","glance":"Claude Code can now attach the text of documents uploaded to a project, but only where a flag that defaults to off is on","teaser":null,"tier":"soon","area":"Projects","section":"What probably matters to you","position":25,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/project-uploaded-files-can-now-be-sent-as-inline-context-tex","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/project-uploaded-files-can-now-be-sent-as-inline-context-tex.json"},{"anchor":"tengu-patient-ledger-new-client-rows-owed-ledger-default-o","heading":"Remote sessions track transcript rows still owed to the client and resend them","glance":"Remote sessions gain a ledger of transcript rows not yet delivered to the client, resend them later, and hold urgent requests while that happens","teaser":null,"tier":"soon","area":"Sessions","section":"What probably matters to you","position":26,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/tengu-patient-ledger-new-client-rows-owed-ledger-default-o","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/tengu-patient-ledger-new-client-rows-owed-ledger-default-o.json"},{"anchor":"tool-loaded-text-capability-added-to-many-model-entries","heading":"Many models gain a new &quot;tool loaded text&quot; capability","glance":"Many entries in Claude Code's list of model capabilities now include a capability named `tool_loaded_text`","teaser":null,"tier":"internal","area":"Models","section":"What probably matters to you","position":27,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/tool-loaded-text-capability-added-to-many-model-entries","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/tool-loaded-text-capability-added-to-many-model-entries.json"},{"anchor":"new-bundled-prompt-assets-and-a-new-tool-use-stamp","heading":"Three new built-in prompt documents and a new session stamp","glance":"Claude Code now carries three new built-in prompt documents and a new stamp that records the session file together with a counter","teaser":null,"tier":"internal","area":"System Prompt","section":"What probably matters to you","position":28,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-bundled-prompt-assets-and-a-new-tool-use-stamp","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-bundled-prompt-assets-and-a-new-tool-use-stamp.json"},{"anchor":"initialize-response-can-list-pending-elicitation-requests","heading":"Programs that connect late can see questions an MCP server is still waiting on","glance":"The reply to a connecting program can now list MCP server questions that were sent but not yet answered or withdrawn","teaser":null,"tier":"use","area":"Agents","section":"What probably matters to you","position":29,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/initialize-response-can-list-pending-elicitation-requests","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/initialize-response-can-list-pending-elicitation-requests.json"},{"anchor":"auto-connect-of-a-dynamic-mcp-server-after-login-completes","heading":"An MCP server can be connected automatically after you sign in","glance":"After sign-in, Claude Code can now load a dynamic MCP setup and add a server, unless strict or managed MCP settings apply","teaser":null,"tier":"notice","area":"MCP","section":"What probably matters to you","position":30,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-connect-of-a-dynamic-mcp-server-after-login-completes","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-connect-of-a-dynamic-mcp-server-after-login-completes.json"},{"anchor":"claude-doc-wake-registration-failure-now-reported-when-comme","heading":"Clear notice when @Claude comments on a Claude Doc will not reach your session","glance":"If a Claude Doc cannot wake your session on comments, Claude Code now says @Claude comments will go to another Claude","teaser":null,"tier":"notice","area":"Artifacts","section":"What probably matters to you","position":31,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-doc-wake-registration-failure-now-reported-when-comme","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/claude-doc-wake-registration-failure-now-reported-when-comme.json"},{"anchor":"cowork-memory-context-withdrawn-from-spawned-loops-with-lap","heading":"Cowork memory is now withdrawn from spawned loops, with an emergency off","glance":"In Cowork, Claude Code now sends empty memory to the loops it starts, and a new emergency check can turn memory off on the laptop side","teaser":null,"tier":"notice","area":"Cowork","section":"What probably matters to you","position":32,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/cowork-memory-context-withdrawn-from-spawned-loops-with-lap","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/cowork-memory-context-withdrawn-from-spawned-loops-with-lap.json"},{"anchor":"artifact-docs-create-wake-behind-tengu-breezy-acorn-default","heading":"Creating a document with the artifact tool in a remote session can set a wake","glance":"In remote sessions, successfully creating a document with the artifact tool can now set a wake, when artifacts and comments are both on","teaser":null,"tier":"notice","area":"Artifacts","section":"What probably matters to you","position":33,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/artifact-docs-create-wake-behind-tengu-breezy-acorn-default","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/artifact-docs-create-wake-behind-tengu-breezy-acorn-default.json"},{"anchor":"memory-extraction-gains-a-trialpair-logging-path","heading":"Automatic memory saving gains a trial step and reports skipped writes","glance":"Claude Code's memory extraction can now run a trial step before its work and log the result after, and now reports when a direct write is skipped","teaser":null,"tier":"soon","area":"Memory","section":"What probably matters to you","position":34,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/memory-extraction-gains-a-trialpair-logging-path","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/memory-extraction-gains-a-trialpair-logging-path.json"},{"anchor":"bash-out-of-memory-note-and-remote-configured-triggered-note","heading":"Bash results can carry out-of-memory notes and remotely set hints","glance":"Bash results can now include a note when a process was killed for running out of memory, plus hints set from the server","teaser":null,"tier":"soon","area":"Bash Tool","section":"What probably matters to you","position":35,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bash-out-of-memory-note-and-remote-configured-triggered-note","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bash-out-of-memory-note-and-remote-configured-triggered-note.json"},{"anchor":"auto-mode-server-classifier-switch-plumbing","heading":"Auto mode server checks prepared for host-managed gateway providers","glance":"Claude Code adds groundwork for server-side auto mode checks when a host such as Claude Desktop manages the provider gateway, plus gateway login reporting","teaser":null,"tier":"notice","area":"Auto Mode","section":"What probably matters to you","position":36,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-mode-server-classifier-switch-plumbing","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-mode-server-classifier-switch-plumbing.json"},{"anchor":"report-findings-mode-choice-gated-by-tengu-purring-micali","heading":"Review findings now reported in &#039;spawn&#039; or &#039;message&#039; mode, chosen by a new check","glance":"How review findings are reported is now chosen as 'spawn' or 'message', replacing the old `CLAUDE_CODE_REPORT_FINDINGS` check","teaser":null,"tier":"notice","area":"Code Review","section":"What probably matters to you","position":37,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/report-findings-mode-choice-gated-by-tengu-purring-micali","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/report-findings-mode-choice-gated-by-tengu-purring-micali.json"},{"anchor":"remote-session-token-renewal-hook-and-thawing-stub","heading":"Remote sessions gain unused renewSessionTokens and isThawing hooks","glance":"Remote session code gains renewSessionTokens and isThawing hooks, but isThawing always returns false and the function receiving them does nothing","teaser":null,"tier":"soon","area":"Sessions","section":"What probably matters to you","position":38,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/remote-session-token-renewal-hook-and-thawing-stub","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/remote-session-token-renewal-hook-and-thawing-stub.json"},{"anchor":"remote-session-worker-new-rows-heartbeat-and-reporting-sta","heading":"Remote sessions rework how they keep their output in order","glance":"The part of Claude Code that runs remote sessions now tracks owed output rows and display hooks, and its old first-idle wait was removed","teaser":null,"tier":"soon","area":"Sessions","section":"What probably matters to you","position":39,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/remote-session-worker-new-rows-heartbeat-and-reporting-sta","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/remote-session-worker-new-rows-heartbeat-and-reporting-sta.json"},{"anchor":"model-picker-schema-accepts-early-access-flag","heading":"Model options can now carry an early access marker","glance":"The description of each model option now accepts an optional early access field","teaser":null,"tier":"internal","area":"Models","section":"What probably matters to you","position":40,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/model-picker-schema-accepts-early-access-flag","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/model-picker-schema-accepts-early-access-flag.json"},{"anchor":"new-optional-claude-doc-field-in-a-parsed-schema","heading":"Claude Code accepts an optional Claude doc field in incoming data","glance":"One of the data formats Claude Code reads now has an optional `claude_doc` field, ignored if it is missing or malformed","teaser":null,"tier":"internal","area":"Artifacts","section":"What probably matters to you","position":43,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-optional-claude-doc-field-in-a-parsed-schema","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/new-optional-claude-doc-field-in-a-parsed-schema.json"},{"anchor":"bash-safety-parser-relative-name-checks-consider-tracked-va","heading":"Bash safety checker tightens relative-path checks, reads heredocs in substitutions and flags zsh histchars","glance":"The Bash safety check now follows variables in relative-path checks, reads heredocs inside substitutions and flags commands naming zsh histchars","teaser":null,"tier":"notice","area":"Bash Safety","section":"Improvements","position":0,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bash-safety-parser-relative-name-checks-consider-tracked-va","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bash-safety-parser-relative-name-checks-consider-tracked-va.json"},{"anchor":"mcp-task-notifications-record-the-tool-used","heading":"Background MCP task results now record which MCP tool they came from","glance":"When a background task from an MCP server finishes, the notification Claude Code queues now names the MCP tool that ran it","teaser":null,"tier":"notice","area":"MCP","section":"Improvements","position":2,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-task-notifications-record-the-tool-used","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-task-notifications-record-the-tool-used.json"},{"anchor":"shell-exit-handling-background-tasks-marked-atexit-leave","heading":"Background shell commands are now marked to be left alone at exit","glance":"Shell commands Claude Code moves to the background are now marked to be left alone when it exits","teaser":null,"tier":"notice","area":"Background Tasks","section":"Improvements","position":3,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/shell-exit-handling-background-tasks-marked-atexit-leave","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/shell-exit-handling-background-tasks-marked-atexit-leave.json"},{"anchor":"subagent-effort-falls-back-to-a-permission-layer-default","heading":"Subagents without an effort level now get one from their permission settings","glance":"A subagent with no valid effort level of its own now gets one worked out from its permission settings instead of none","teaser":null,"tier":"notice","area":"Subagents","section":"Improvements","position":4,"scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/subagent-effort-falls-back-to-a-permission-layer-default","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/subagent-effort-falls-back-to-a-permission-layer-default.json"},{"anchor":"permission-dialog-yes-exact-option-disabled-in-some-cases","heading":"An approval option in permission prompts can now appear greyed out","glance":"In the expanded permission prompt, one approval option can now show a fixed label and refuse to be selected when a condition is not met","teaser":null,"tier":"notice","area":"Permissions","section":"Improvements","position":5,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/permission-dialog-yes-exact-option-disabled-in-some-cases","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/permission-dialog-yes-exact-option-disabled-in-some-cases.json"},{"anchor":"mcp-toolslist-reuse-and-unchanged-tool-list-updates-skipped","heading":"MCP tool lists can be reused and unchanged refreshes are skipped","glance":"Claude Code can now reuse an earlier tool list from an MCP server, and skips updating its state when a refreshed list has not changed","teaser":null,"tier":"notice","area":"MCP","section":"Improvements","position":6,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-toolslist-reuse-and-unchanged-tool-list-updates-skipped","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-toolslist-reuse-and-unchanged-tool-list-updates-skipped.json"},{"anchor":"mcp-http-transport-debug-logging-gated","heading":"Detailed MCP connection logs only appear when debugging","glance":"Claude Code now writes its detailed log lines about setting up an MCP server's web connection only when a debug check passes","teaser":null,"tier":"notice","area":"MCP","section":"Improvements","position":7,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-http-transport-debug-logging-gated","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/mcp-http-transport-debug-logging-gated.json"},{"anchor":"shell-snapshot-and-sandbox-staging-dir","heading":"Sandbox allows writing to a staging folder for MCP tool calls","glance":"The sandbox now lets Claude Code write to a staging folder for MCP tool calls inside the temporary folder, and warns if it is not a plain folder","teaser":null,"tier":"notice","area":"Sandbox","section":"Improvements","position":8,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/shell-snapshot-and-sandbox-staging-dir","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/shell-snapshot-and-sandbox-staging-dir.json"},{"anchor":"sdk-sessionstore-error-now-gives-new-claude-config-dir-advic","heading":"SDK error now suggests a private config folder instead of \/tmp","glance":"When `sessionStore` is used with `persistSession: false`, the error now advises a new private `CLAUDE_CONFIG_DIR` deleted afterwards, not \/tmp","teaser":null,"tier":"notice","area":"Agents","section":"Improvements","position":9,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/sdk-sessionstore-error-now-gives-new-claude-config-dir-advic","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/sdk-sessionstore-error-now-gives-new-claude-config-dir-advic.json"},{"anchor":"powershell-hook-no-extra-exit-code-guard-for-bare-block-key","heading":"PowerShell hooks using script blocks get different exit code handling","glance":"Whether Claude Code adds its exit code 2 check to a PowerShell hook now depends on whether the script uses begin, process, end, clean or dynamicparam blocks","teaser":null,"tier":"notice","area":"Elsewhere","section":"Improvements","position":10,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/powershell-hook-no-extra-exit-code-guard-for-bare-block-key","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/powershell-hook-no-extra-exit-code-guard-for-bare-block-key.json"},{"anchor":"bash-tool-new-background-shell-settle-event-output-end-pre","heading":"Bash tool: output-end and out-of-memory notes for Claude, test outcomes and program lists in analytics","glance":"After failed or killed commands the Bash tool can now show Claude the output's end and memory-kill notes, and analytics record programs and test results","teaser":null,"tier":"notice","area":"Bash Tool","section":"Improvements","position":12,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bash-tool-new-background-shell-settle-event-output-end-pre","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/bash-tool-new-background-shell-settle-event-output-end-pre.json"},{"anchor":"auto-mode-classifier-gets-reduced-context-unless-claude-code","heading":"Auto mode checker gets a trimmed view unless you ask for full context","glance":"In some cases the auto mode checker now sees a trimmed conversation unless `CLAUDE_CODE_AUTO_MODE_FULL_CONTEXT` is set","teaser":null,"tier":"notice","area":"Auto Mode","section":"Improvements","position":13,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-mode-classifier-gets-reduced-context-unless-claude-code","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-mode-classifier-gets-reduced-context-unless-claude-code.json"},{"anchor":"auto-mode-allow-rules-per-source-layering-with-policy","heading":"Auto mode allow rules are combined per settings source","glance":"Auto mode allow rules are now gathered per settings source, and command-line allow rules are merged with managed policy","teaser":null,"tier":"notice","area":"Auto Mode","section":"Improvements","position":14,"scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-mode-allow-rules-per-source-layering-with-policy","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.315\/e\/auto-mode-allow-rules-per-source-layering-with-policy.json"}],"facets":{"sections":[{"value":"What probably matters to you","entries":37},{"value":"Improvements","entries":88},{"value":"Bug Fixes","entries":18},{"value":"In Development","entries":11},{"value":"Internal Changes","entries":82},{"value":"Removed","entries":1}],"tiers":[{"value":"notice","entries":114},{"value":"internal","entries":87},{"value":"use","entries":19},{"value":"soon","entries":17}],"areas":[{"value":"Sessions","entries":28},{"value":"MCP","entries":23},{"value":"Elsewhere","entries":22},{"value":"Telemetry","entries":14},{"value":"Permissions","entries":10},{"value":"Auth","entries":9},{"value":"Bash Tool","entries":9},{"value":"Auto Mode","entries":8},{"value":"Bash Safety","entries":8},{"value":"Cloud Sessions","entries":8},{"value":"Git Integration","entries":7},{"value":"Background Tasks","entries":6},{"value":"Internals","entries":6},{"value":"Memory","entries":6},{"value":"Models","entries":6},{"value":"Artifacts","entries":5},{"value":"Managed Settings","entries":5},{"value":"Sandbox","entries":5},{"value":"Subagents","entries":5},{"value":"Agents","entries":4},{"value":"Plugins","entries":4},{"value":"Chrome","entries":3},{"value":"Network Security","entries":3},{"value":"Shell Snapshot","entries":3},{"value":"System Prompt","entries":3},{"value":"Terminal UI","entries":3},{"value":"Tool Results","entries":3},{"value":"Bedrock","entries":2},{"value":"Gateways","entries":2},{"value":"Charts","entries":1},{"value":"Checkpoints","entries":1},{"value":"Cloud Gateway","entries":1},{"value":"Code Review","entries":1},{"value":"Compaction","entries":1},{"value":"Context Management","entries":1},{"value":"Cowork","entries":1},{"value":"File Search","entries":1},{"value":"IDE Integration","entries":1},{"value":"Messaging","entries":1},{"value":"Preview","entries":1},{"value":"Projects","entries":1},{"value":"Remote Control","entries":1},{"value":"Remote Tools","entries":1},{"value":"Skills","entries":1},{"value":"Slash Commands","entries":1},{"value":"Thinking","entries":1}]}}