{"version":"2.1.318","summary":"You can now move a session on your computer into a new cloud session. Claude Code copies the newest turns after checking the move is safe. A new \/project command names the claude.ai Project for usage reports, and --save keeps that choice. Admins can set `disableReplyCheck` in managed settings to stop Claude being re-prompted when a turn ends without a reply. Setting `CLAUDE_CODE_ULTRAREVIEW_LAUNCH_RECORD` to a file path makes each successful ultrareview launch write its session id there. This release has 425 entries, and 240 of them are usable today.\n\n26 entries are in the build but not switched on yet. The biggest is an experimental REPL mode, where Claude writes JavaScript that calls its tools. It comes with an opt-in dialog and limits on resuming and moving sessions. More pieces of a code-running mode landed this time, including script tracking and a tool that waits while idle. A check that can skip compacting a long conversation is also here, but it stays off unless switched on remotely. Session-long \"always allow\" choices for MCP connector tools, which link Claude to outside services, are recorded only when a remote switch is on.\n\nSome of this release's fixes make broken config files safer to deal with. If the config file is corrupt or empty, Claude Code looks for the best backup and tells you what it did. A global config file that cannot be read is now left alone instead of being overwritten. A failed message send in a remote session no longer leaves it stuck sending. Cloud sessions that fail during setup now wait for the refusal message, so you can see why the launch failed. Saving over a file mounted into a container now works when the file is busy.","filter":{"section":null,"tier":null,"area":null},"offset":0,"limit":50,"count":50,"total":425,"next_offset":50,"next_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/entries.json?offset=50","entries":[{"anchor":"claude-mcp-add-web-add-a-claudeai-connector-from-the-cli","heading":"<code>claude mcp add --web<\/code> can add a claude.ai connector from the terminal","glance":"A hidden `--web` option on `claude mcp add` adds an https server as a claude.ai connector, but it is off unless switched on remotely","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.318\/e\/claude-mcp-add-web-add-a-claudeai-connector-from-the-cli","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/claude-mcp-add-web-add-a-claudeai-connector-from-the-cli.json"},{"anchor":"project-command-to-name-a-claudeai-project-for-usage-repor","heading":"New \/project command names the claude.ai Project for a session&#039;s usage reports","glance":"A new \/project command, gated by tengu_gentle_cupcake, sets attributionProject for usage reports; IDs may start with chan_ and --settings is a source","teaser":null,"tier":"use","area":"Slash Commands","section":"What probably matters to you","position":1,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/project-command-to-name-a-claudeai-project-for-usage-repor","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/project-command-to-name-a-claudeai-project-for-usage-repor.json"},{"anchor":"memory-shared-file-delete-named-removal-mode-and-tengu-cozy","heading":"Memory push delete mode gains a recorded option and named-file deletion","glance":"CLAUDE_CODE_MEMORY_PUSH_DELETE_MODE now accepts recorded, and Claude is told how to delete a shared-memory file with a plain rm command","teaser":null,"tier":"use","area":"Memory","section":"What probably matters to you","position":3,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/memory-shared-file-delete-named-removal-mode-and-tengu-cozy","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/memory-shared-file-delete-named-removal-mode-and-tengu-cozy.json"},{"anchor":"experimental-code-mode-repl-env-vars-added-with-restart-h","heading":"Experimental Code Mode can be requested with an environment variable","glance":"Setting `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` asks Claude Code to switch on an experimental Code Mode, which it can refuse for several reasons","teaser":null,"tier":"use","area":"Code Mode","section":"What probably matters to you","position":4,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/experimental-code-mode-repl-env-vars-added-with-restart-h","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/experimental-code-mode-repl-env-vars-added-with-restart-h.json"},{"anchor":"new-hidden-ultrareview-eval-flags-list-output-max-co","heading":"Hidden options for the ultrareview command: --list, --output and --max-cost","glance":"The ultrareview command accepts three options that do not appear in --help: --list <file>, --output <file> and --max-cost <dollars>","teaser":null,"tier":"use","area":"Ultrareview","section":"What probably matters to you","position":5,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-hidden-ultrareview-eval-flags-list-output-max-co","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-hidden-ultrareview-eval-flags-list-output-max-co.json"},{"anchor":"move-a-local-session-to-the-cloud-by-copy-teleport-claude","heading":"Move a local session to the cloud by copy","glance":"A new path moves a local session to a cloud session by copying its recent turns, via \/teleport and claude --cloud, with many safety checks","teaser":null,"tier":"use","area":"Cloud Sessions","section":"What probably matters to you","position":6,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/move-a-local-session-to-the-cloud-by-copy-teleport-claude","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/move-a-local-session-to-the-cloud-by-copy-teleport-claude.json"},{"anchor":"new-claude-code-reply-gate-policy-launch-env-var-parsed-at-s","heading":"New controls for the reply check: disableReplyCheck and CLAUDE_CODE_REPLY_GATE_POLICY","glance":"Self-hosted runner reply-check behaviour can now be turned off with a managed disableReplyCheck setting or shaped by a CLAUDE_CODE_REPLY_GATE_POLICY variable","teaser":null,"tier":"use","area":"Reply Gate","section":"What probably matters to you","position":7,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-claude-code-reply-gate-policy-launch-env-var-parsed-at-s","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-claude-code-reply-gate-policy-launch-env-var-parsed-at-s.json"},{"anchor":"new-env-var-claude-code-resume-cache-warm-and-a-resume-cache","heading":"Cache warm-up on resume for remote sessions, with CLAUDE_CODE_RESUME_CACHE_WARM","glance":"Resumed remote sessions can send a short background query to warm the prompt cache, controlled by CLAUDE_CODE_RESUME_CACHE_WARM or remote config","teaser":null,"tier":"use","area":"Prompt Caching","section":"What probably matters to you","position":8,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-var-claude-code-resume-cache-warm-and-a-resume-cache","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-var-claude-code-resume-cache-warm-and-a-resume-cache.json"},{"anchor":"env-var-disables-agent-progress-summaries","heading":"New setting to turn off progress summaries for background agents","glance":"Setting `CLAUDE_CODE_DISABLE_AGENT_PROGRESS_SUMMARIES` stops Claude Code from writing progress summaries for agents running in the background","teaser":null,"tier":"use","area":"Agents","section":"What probably matters to you","position":10,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/env-var-disables-agent-progress-summaries","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/env-var-disables-agent-progress-summaries.json"},{"anchor":"new-stream-timer-slack-and-main-reply-hold-env-vars","heading":"New settings for stream timing and holding back main replies","glance":"Claude Code adds `CLAUDE_CODE_STREAM_TIMER_SLACK_MS`, `CLAUDE_CODE_MAIN_REPLY_HOLD_MS` and `CLAUDE_CODE_MCP_SERVE_TUNNEL_BINARY_FRAMES`","teaser":null,"tier":"use","area":"Streaming","section":"What probably matters to you","position":11,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-stream-timer-slack-and-main-reply-hold-env-vars","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-stream-timer-slack-and-main-reply-hold-env-vars.json"},{"anchor":"new-env-vars-claude-code-spare-keeps-boot-session-id-and-cla","heading":"New environment variables for spare sessions and held messages","glance":"Two new environment variables, one controlling whether a claimed spare process keeps its boot session id, the other about stopping held messages","teaser":null,"tier":"use","area":"Configuration","section":"What probably matters to you","position":12,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-vars-claude-code-spare-keeps-boot-session-id-and-cla","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-vars-claude-code-spare-keeps-boot-session-id-and-cla.json"},{"anchor":"new-env-var-claude-code-ultrareview-launch-record-makes-ultr","heading":"Ultrareview can write the session id of each launch to a file you choose","glance":"Setting `CLAUDE_CODE_ULTRAREVIEW_LAUNCH_RECORD` to a file path makes a successful ultrareview launch write its session id to that file","teaser":null,"tier":"use","area":"Ultrareview","section":"What probably matters to you","position":13,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-var-claude-code-ultrareview-launch-record-makes-ultr","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-var-claude-code-ultrareview-launch-record-makes-ultr.json"},{"anchor":"splice-wait-enter-joins-the-running-turn","heading":"Pressing Enter during a turn can join it instead of waiting","glance":"A setting lets a message sent with Enter join the turn already running, shown with the hint 'enter joins the running turn'","teaser":null,"tier":"notice","area":"Message Queue","section":"What probably matters to you","position":14,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/splice-wait-enter-joins-the-running-turn","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/splice-wait-enter-joins-the-running-turn.json"},{"anchor":"repl-code-mode-opt-in-dialog-lost-eval-events-resume-ru","heading":"An experimental REPL mode, where Claude writes JavaScript to call its tools, appears","glance":"An experimental REPL mode lets Claude write JavaScript that calls its tools, with an opt-in dialog and limits on resuming and moving sessions","teaser":null,"tier":"soon","area":"REPL Mode","section":"What probably matters to you","position":15,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/repl-code-mode-opt-in-dialog-lost-eval-events-resume-ru","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/repl-code-mode-opt-in-dialog-lost-eval-events-resume-ru.json"},{"anchor":"new-set-attached-project-command-swaps-claude-project-uuid-m","heading":"A running session can have its claude.ai Project attached or removed","glance":"A new `set_attached_project` command sets or clears `CLAUDE_PROJECT_UUID` on a live session, if the session gets its Project from its host","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":16,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-set-attached-project-command-swaps-claude-project-uuid-m","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-set-attached-project-command-swaps-claude-project-uuid-m.json"},{"anchor":"new-mcp-server-config-field-urlreportable","heading":"claude.ai connectors can be marked urlReportable","glance":"claude.ai connector configs gain an optional urlReportable field, passed through when the server reports url_reportable as true","teaser":null,"tier":"use","area":"Connectors","section":"What probably matters to you","position":17,"scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-mcp-server-config-field-urlreportable","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-mcp-server-config-field-urlreportable.json"},{"anchor":"mcp-config-write-error-now-points-to-claude-code-config-lock","heading":"MCP config write errors now suggest waiting longer for a locked file","glance":"If adding or removing an MCP server can't save the config, the error now blames a lock and suggests CLAUDE_CODE_CONFIG_LOCK_WAIT_MS=60000","teaser":null,"tier":"use","area":"MCP","section":"What probably matters to you","position":18,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/mcp-config-write-error-now-points-to-claude-code-config-lock","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/mcp-config-write-error-now-points-to-claude-code-config-lock.json"},{"anchor":"new-env-var-claude-code-program-use-case-stamped-value-fol","heading":"New <code>CLAUDE_CODE_PROGRAM_USE_CASE_STAMPED<\/code> variable for programs that launch Claude Code","glance":"Claude Code now reads `CLAUDE_CODE_PROGRAM_USE_CASE_STAMPED`, which a launching program can set; the value `follow` picks a separate way of working out the use case","teaser":null,"tier":"use","area":"Configuration","section":"What probably matters to you","position":19,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-var-claude-code-program-use-case-stamped-value-fol","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-env-var-claude-code-program-use-case-stamped-value-fol.json"},{"anchor":"new-internal-subcommand-work-look-for-the-self-hosted-runn","heading":"Self-hosted runner gains a work-look check for unsaved work in checkouts","glance":"A new self-hosted-runner work-look subcommand checks session checkouts for uncommitted, unpushed or stashed work before a session is released","teaser":null,"tier":"use","area":"Self-Hosted Runner","section":"What probably matters to you","position":20,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-internal-subcommand-work-look-for-the-self-hosted-runn","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-internal-subcommand-work-look-for-the-self-hosted-runn.json"},{"anchor":"hook-matchers-mcp-tool-name-matching-and-modelfork-effort","heading":"Plugins can choose the effort level for model.fork, and hook matchers match MCP tool names","glance":"The plugin model.fork call now takes an optional effort level and reports which one was used, and hook matchers can match full MCP tool names","teaser":null,"tier":"use","area":"Plugins","section":"What probably matters to you","position":21,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/hook-matchers-mcp-tool-name-matching-and-modelfork-effort","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/hook-matchers-mcp-tool-name-matching-and-modelfork-effort.json"},{"anchor":"remote-runner-exposes-session-turn-state-metric","heading":"Remote runners report whether each session is busy, waiting, resting or lost","glance":"Remote runners now publish a session_turn_state metric that shows each session as busy, waiting, rest or lost","teaser":null,"tier":"use","area":"Self-Hosted Runner","section":"What probably matters to you","position":24,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/remote-runner-exposes-session-turn-state-metric","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/remote-runner-exposes-session-turn-state-metric.json"},{"anchor":"claudeai-credential-expiry-field-described-in-schema","heading":"SDK data can say when your claude.ai login runs out","glance":"A new SDK field gives the date and time your claude.ai login ends for good, possibly up to 3 days earlier than shown","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":25,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/claudeai-credential-expiry-field-described-in-schema","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/claudeai-credential-expiry-field-described-in-schema.json"},{"anchor":"result-messages-gain-credential-expires-at","heading":"SDK result messages can report when credentials expire","glance":"Result messages in the SDK have an optional credential_expires_at field","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":26,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/result-messages-gain-credential-expires-at","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/result-messages-gain-credential-expires-at.json"},{"anchor":"cloud-sessions-and-spawn-reason-in-the-runner","heading":"Self-hosted runners now pass on why a session was started","glance":"Self-hosted runners now set `CLAUDE_RUNNER_SPAWN_REASON`, and the `--cloud` remote backend choice needs one more condition","teaser":null,"tier":"use","area":"Self-Hosted Runner","section":"What probably matters to you","position":27,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/cloud-sessions-and-spawn-reason-in-the-runner","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/cloud-sessions-and-spawn-reason-in-the-runner.json"},{"anchor":"sdk-reports-spawn-time-to-onprocessspawned","heading":"The SDK&#039;s <code>onProcessSpawned<\/code> callback now reports how long the start took","glance":"The SDK now passes `spawnSyncMs`, the time taken to start the Claude Code process, as a second argument to `onProcessSpawned`","teaser":null,"tier":"use","area":"SDK","section":"What probably matters to you","position":28,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/sdk-reports-spawn-time-to-onprocessspawned","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/sdk-reports-spawn-time-to-onprocessspawned.json"},{"anchor":"workspace-diff-when-launch-folder-is-not-a-git-repo","heading":"Changed files can be listed when the launch folder isn&#039;t a git repository","glance":"Claude Code can list files changed in a launch folder that isn't a git repository, using a temporary repository; needs git 2.32+","teaser":null,"tier":"notice","area":"Diffs","section":"What probably matters to you","position":29,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/workspace-diff-when-launch-folder-is-not-a-git-repo","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/workspace-diff-when-launch-folder-is-not-a-git-repo.json"},{"anchor":"async-repl-script-checks-hook-gating-output-budgeting-and","heading":"REPL mode respects plugin hooks, auto mode and an output size limit","glance":"In REPL mode, plugins that check tool calls can block REPL-made calls, queued scripts are judged by auto mode, and long output is cut to a size limit","teaser":null,"tier":"notice","area":"REPL Mode","section":"What probably matters to you","position":30,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/async-repl-script-checks-hook-gating-output-budgeting-and","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/async-repl-script-checks-hook-gating-output-budgeting-and.json"},{"anchor":"hooks-mcp-tool-hooks-on-remote-machine-http-hooks-and-cond","heading":"<code>mcp_tool<\/code> hooks can run on another machine, and hook conditions work more widely","glance":"An `mcp_tool` hook can now make its call on the machine that holds the MCP server, and hook \"if\" checks no longer require project settings","teaser":null,"tier":"notice","area":"Hooks","section":"What probably matters to you","position":31,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/hooks-mcp-tool-hooks-on-remote-machine-http-hooks-and-cond","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/hooks-mcp-tool-hooks-on-remote-machine-http-hooks-and-cond.json"},{"anchor":"auto-mode-classifier-can-now-override-person-only-asks","heading":"Auto mode can approve some person-only asks via classifierMayAllow","glance":"A new classifierMayAllow flag lets auto mode's classifier settle some permission asks, such as uploads, that used to always need a person","teaser":null,"tier":"notice","area":"Auto Mode","section":"What probably matters to you","position":32,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/auto-mode-classifier-can-now-override-person-only-asks","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/auto-mode-classifier-can-now-override-person-only-asks.json"},{"anchor":"remote-can-check-a-local-session-move-before-creating-the","heading":"Moving a local session to the cloud with --remote can now be refused","glance":"Before `--remote` creates a cloud session, Claude Code can check whether moving your local session is allowed and stop if it is not","teaser":null,"tier":"notice","area":"Cloud Sessions","section":"What probably matters to you","position":33,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/remote-can-check-a-local-session-move-before-creating-the","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/remote-can-check-a-local-session-move-before-creating-the.json"},{"anchor":"repl-mode-script-launched-agents-live-tool-rows-and-state","heading":"REPL script mode: tool-call reporting, display, resume and compaction support","glance":"A largely hidden REPL mode, where Claude runs scripts that call tools, gains reporting, display, resume and compaction support across Claude Code","teaser":null,"tier":"notice","area":"REPL Mode","section":"What probably matters to you","position":34,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/repl-mode-script-launched-agents-live-tool-rows-and-state","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/repl-mode-script-launched-agents-live-tool-rows-and-state.json"},{"anchor":"remote-tools-disabled-when-device-policy-is-not-enforced","heading":"Remote tools are turned off on devices without an enforced device policy","glance":"Claude Code can now disable remote tools with the reason device_policy_not_enforced when a device has no enforced policy","teaser":null,"tier":"notice","area":"Remote Tools","section":"What probably matters to you","position":35,"scope":"org","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/remote-tools-disabled-when-device-policy-is-not-enforced","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/remote-tools-disabled-when-device-policy-is-not-enforced.json"},{"anchor":"pre-tool-hook-stop-path-and-repl-mode-message-filter","heading":"Behind-the-scenes groundwork for a REPL mode","glance":"Several internal changes prepare for a REPL mode, including a filter on REPL mode messages and a new usage data field","teaser":null,"tier":"soon","area":"REPL Mode","section":"What probably matters to you","position":36,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/pre-tool-hook-stop-path-and-repl-mode-message-filter","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/pre-tool-hook-stop-path-and-repl-mode-message-filter.json"},{"anchor":"workflow-agents-repl-script-progress-and-code-mode-tool-ga","heading":"Groundwork for a REPL script mode that limits Chrome and auto mode checks","glance":"Claude Code has unfinished code for a REPL script mode that refuses Claude in Chrome calls and skips auto mode checks on calls inside an approved script","teaser":null,"tier":"soon","area":"REPL Mode","section":"What probably matters to you","position":37,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/workflow-agents-repl-script-progress-and-code-mode-tool-ga","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/workflow-agents-repl-script-progress-and-code-mode-tool-ga.json"},{"anchor":"bridge-session-stand-in-and-a-refusal-wait-parameter","heading":"Remote Control groundwork for a stand-in program when the original is removed","glance":"New, not yet connected code lets Remote Control find a replacement Claude Code program if the one it started from was removed by an update","teaser":null,"tier":"notice","area":"Remote Control","section":"What probably matters to you","position":39,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/bridge-session-stand-in-and-a-refusal-wait-parameter","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/bridge-session-stand-in-and-a-refusal-wait-parameter.json"},{"anchor":"device-attestation-policy-enforcement-and-unsent-call-guard","heading":"Groundwork for refusing unverified devices in remote sessions","glance":"The remote session client can now tell whether a device-verification policy is being enforced, and has a hook for explaining why a call was not sent","teaser":null,"tier":"soon","area":"Device Policy","section":"What probably matters to you","position":40,"scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/device-attestation-policy-enforcement-and-unsent-call-guard","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/device-attestation-policy-enforcement-and-unsent-call-guard.json"},{"anchor":"tool-provenance-and-gate-helper-rewrites","heading":"Groundwork for reporting where tools come from, and two remote switches read differently","glance":"Claude Code adds settings for reporting where tools come from, and now reads two remote switches through a stored-state check","teaser":null,"tier":"soon","area":"Tool Provenance","section":"What probably matters to you","position":41,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/tool-provenance-and-gate-helper-rewrites","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/tool-provenance-and-gate-helper-rewrites.json"},{"anchor":"code-mode-repl-pieces-async-repl-receipts-stopped-repl-res","heading":"More pieces of a code-running mode appear behind a feature check","glance":"Claude Code gains more parts of an opt-in mode for running code, including script tracking and an idle-wait tool, all behind a feature check","teaser":null,"tier":"soon","area":"REPL Mode","section":"What probably matters to you","position":42,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/code-mode-repl-pieces-async-repl-receipts-stopped-repl-res","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/code-mode-repl-pieces-async-repl-receipts-stopped-repl-res.json"},{"anchor":"setup-code-mode-opt-in-step","heading":"Code mode gets a setup opt-in, warning banners and changes to MCP and file-read tools","glance":"New code-mode pieces: a setup opt-in step, warning banners, MCP tools reached inside the REPL, and file reads refused in code mode","teaser":null,"tier":"notice","area":"Code Mode","section":"What probably matters to you","position":43,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/setup-code-mode-opt-in-step","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/setup-code-mode-opt-in-step.json"},{"anchor":"experimental-mode-refusal-reasons-and-messages-added","heading":"Messages explaining when an experimental opt-in mode can&#039;t be used","glance":"Claude Code has text for an experimental mode turned on by an environment variable, listing the many reasons it can be refused","teaser":null,"tier":"soon","area":"Code Mode","section":"What probably matters to you","position":45,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/experimental-mode-refusal-reasons-and-messages-added","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/experimental-mode-refusal-reasons-and-messages-added.json"},{"anchor":"compaction-skip-gate-behind-tengu-concurrent-lake-new-funct","heading":"New check that can skip compacting a long conversation, off by default","glance":"A new check can skip compaction based on token estimate, model and context window, but it stays off unless switched on remotely","teaser":null,"tier":"soon","area":"Compaction","section":"What probably matters to you","position":46,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/compaction-skip-gate-behind-tengu-concurrent-lake-new-funct","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/compaction-skip-gate-behind-tengu-concurrent-lake-new-funct.json"},{"anchor":"security-intent-scoring-of-user-prompts-added-with-a-caller","heading":"Prompts are scored for security-related intent","glance":"Claude Code now scores each prompt 0 to 2 for security-audit intent and stores it in _securityCheckRequestScores; hook docs mention inner REPL calls","teaser":null,"tier":"notice","area":"Code Review","section":"What probably matters to you","position":47,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/security-intent-scoring-of-user-prompts-added-with-a-caller","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/security-intent-scoring-of-user-prompts-added-with-a-caller.json"},{"anchor":"machines-prompt-describes-repl-callable-tool","heading":"Claude is told it can reach attached machines from inside the REPL","glance":"In some multi-machine sessions, Claude's instructions now say the machines tool can be called inside the REPL","teaser":null,"tier":"internal","area":"REPL Mode","section":"What probably matters to you","position":48,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/machines-prompt-describes-repl-callable-tool","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/machines-prompt-describes-repl-callable-tool.json"},{"anchor":"new-hook-condition-and-computer-permission-side-query-kinds","heading":"New request types for hook conditions and attached computer permissions","glance":"Claude Code lists two new kinds of background model request: one for hook conditions and one for permission requests from an attached computer","teaser":null,"tier":"internal","area":"Hooks","section":"What probably matters to you","position":49,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-hook-condition-and-computer-permission-side-query-kinds","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/new-hook-condition-and-computer-permission-side-query-kinds.json"},{"anchor":"startup-mcppermission-tweaks-and-json-schema-etc-unchang","heading":"Onboarding can relaunch Claude Code after a code-mode opt-in step","glance":"After first-run setup, a code-mode opt-in step can restart Claude Code, and MCP setup now records how long loading took","teaser":null,"tier":"internal","area":"Code Mode","section":"What probably matters to you","position":50,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/startup-mcppermission-tweaks-and-json-schema-etc-unchang","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/startup-mcppermission-tweaks-and-json-schema-etc-unchang.json"},{"anchor":"permission-rule-matching-now-consumes-a-second-list-of-rules","heading":"Permission rule matching now checks a second list of rules","glance":"When matching permission rules, Claude Code now also checks a second list of rules after the first","teaser":null,"tier":"internal","area":"Permissions","section":"What probably matters to you","position":51,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/permission-rule-matching-now-consumes-a-second-list-of-rules","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/permission-rule-matching-now-consumes-a-second-list-of-rules.json"},{"anchor":"auto-mode-repl-scripts-refused-when-a-hook-rewrote-input-o","heading":"Auto mode refuses some scripts Claude writes in the REPL tool","glance":"In auto mode, Claude Code can now refuse REPL scripts that a hook rewrote, that contain `\\uXXXX` escapes, or that start or message other agents","teaser":null,"tier":"notice","area":"Auto Mode","section":"Improvements","position":0,"scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/auto-mode-repl-scripts-refused-when-a-hook-rewrote-input-o","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/auto-mode-repl-scripts-refused-when-a-hook-rewrote-input-o.json"},{"anchor":"usage-limit-grace-resend-class-added","heading":"One retry after a usage-limit rejection, controlled by a remote switch","glance":"Claude Code has code to resend a request once after it is rejected for hitting a five-hour or seven-day usage limit, behind a remote switch","teaser":null,"tier":"notice","area":"Usage & Limits","section":"Improvements","position":1,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/usage-limit-grace-resend-class-added","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/usage-limit-grace-resend-class-added.json"},{"anchor":"skill-only-commands-now-return-result-text-and-failures-are","heading":"Skill-only commands and failed commands now report their message as the result","glance":"Running a Claude-only skill command, or a command that fails, now returns its message as the result text, and failures are marked as failed","teaser":null,"tier":"notice","area":"Skills","section":"Improvements","position":2,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/skill-only-commands-now-return-result-text-and-failures-are","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/skill-only-commands-now-return-result-text-and-failures-are.json"},{"anchor":"interrupt-receipt-and-cli-queued-at-interrupt-gain-held-mess","heading":"Interrupting now also covers messages Claude Code has received but not yet queued","glance":"When you interrupt, the list of still-waiting messages now includes ones held back behind a model change or start-up work","teaser":null,"tier":"notice","area":"SDK","section":"Improvements","position":3,"scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/interrupt-receipt-and-cli-queued-at-interrupt-gain-held-mess","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/interrupt-receipt-and-cli-queued-at-interrupt-gain-held-mess.json"}],"facets":{"sections":[{"value":"What probably matters to you","entries":46},{"value":"Improvements","entries":183},{"value":"Bug Fixes","entries":23},{"value":"In Development","entries":18},{"value":"Internal Changes","entries":153},{"value":"Removed","entries":2}],"tiers":[{"value":"notice","entries":217},{"value":"internal","entries":159},{"value":"soon","entries":26},{"value":"use","entries":23}],"areas":[{"value":"Sessions","entries":25},{"value":"REPL Mode","entries":23},{"value":"Elsewhere","entries":20},{"value":"Remote Control","entries":19},{"value":"Cloud Sessions","entries":18},{"value":"MCP","entries":18},{"value":"Terminal UI","entries":17},{"value":"Internals","entries":14},{"value":"Permissions","entries":14},{"value":"Telemetry","entries":13},{"value":"Auth","entries":12},{"value":"Bash Tool","entries":11},{"value":"Agents","entries":10},{"value":"SDK","entries":10},{"value":"Hooks","entries":9},{"value":"Auto Mode","entries":8},{"value":"Code Mode","entries":8},{"value":"Configuration","entries":8},{"value":"Artifacts","entries":7},{"value":"Background Tasks","entries":6},{"value":"Compaction","entries":6},{"value":"Headless Mode","entries":6},{"value":"Memory","entries":6},{"value":"Message Queue","entries":6},{"value":"Plugins","entries":6},{"value":"Self-Hosted Runner","entries":6},{"value":"Slash Commands","entries":6},{"value":"API Errors","entries":5},{"value":"Skills","entries":5},{"value":"Tool Search","entries":5},{"value":"API Requests","entries":4},{"value":"Auto-Updater","entries":4},{"value":"Connectors","entries":4},{"value":"Context Management","entries":4},{"value":"Diffs","entries":4},{"value":"Images","entries":4},{"value":"Prompt Caching","entries":4},{"value":"Remote Tools","entries":4},{"value":"Sandbox","entries":4},{"value":"Usage & Limits","entries":4},{"value":"Agent Teams","entries":3},{"value":"Claude in Chrome","entries":3},{"value":"File Writes","entries":3},{"value":"Git","entries":3},{"value":"Projects","entries":3},{"value":"Prompt Safety","entries":3},{"value":"Spinner Tips","entries":3},{"value":"Streaming","entries":3},{"value":"Tools","entries":3},{"value":"Ultrareview","entries":3},{"value":"Code Review","entries":2},{"value":"Device Policy","entries":2},{"value":"Insights","entries":2},{"value":"Instruction Files","entries":2},{"value":"Managed Settings","entries":2},{"value":"Mobile","entries":2},{"value":"Mods","entries":2},{"value":"Reply Gate","entries":2},{"value":"Backdrops","entries":1},{"value":"Bedrock","entries":1},{"value":"Design Consent","entries":1},{"value":"Feedback","entries":1},{"value":"File Mentions","entries":1},{"value":"Peer Sessions","entries":1},{"value":"Read Tool","entries":1},{"value":"Remote Settings","entries":1},{"value":"Spinner","entries":1},{"value":"Tool Provenance","entries":1},{"value":"WebFetch","entries":1},{"value":"Workflows","entries":1}]}}