{"version":"2.1.252","summary":"Four features sit in this build without a way to reach them yet. A new \"instructionFiles\" context channel exists behind the carved-slate flag, part of a static system-prompt rework, and stays off by default. Claude may eventually be told to use a per-session scratchpad directory for temp files instead of \/tmp, and the groundwork for announcing that location alongside platform and shell info is already wired in. A new appendSubagentSystemPrompt option is threaded through session and agent config, letting a subagent's system-prompt append diverge from the main session's once exposed.\n\nClaude Code now diffs CLAUDE.md and tool-description context incrementally, resending only changed instruction files each turn instead of the whole block, which cuts token spend. The session context refresh message now states why your context was refreshed, such as after compaction or a settings sync, and handles the empty-state case cleanly. The poll-event queue enforces a hard cap of 1000 pending events and rejects reserved event kinds by default.\n\nTask notifications are now truncated to 100,000 characters before being queued, instead of growing unbounded. Pinned-tmpdir write-target verification on macOS is hardened against symlink aliasing tricks, with new recovery guidance surfaced when it trips. Task output swap refusal errors now carry a \"To recover\" hint, and task-output pinning errors on macOS explain how to recover while tolerating aliased directories that previously triggered false alarms.","filter":{"section":null,"tier":null,"area":null},"offset":0,"limit":50,"count":23,"total":23,"next_offset":null,"entries":[{"anchor":"new-scratchpad-directory-context-change-announcement","heading":"New &#039;scratchpad directory&#039; context-change announcement","glance":"A new scratchpad directory location can now be announced to Claude alongside platform and shell info.","teaser":null,"tier":"soon","area":"Scratchpad","section":"What probably matters to you","position":0,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-scratchpad-directory-context-change-announcement","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-scratchpad-directory-context-change-announcement.json"},{"anchor":"new-instructionfiles-context-channel-gated-behind-carved","heading":"New &quot;instructionFiles&quot; context channel, gated behind carved-slate flag","glance":"A separate instruction-files context channel exists but is off by default, part of a static system prompt rework.","teaser":null,"tier":"soon","area":"System Prompt","section":"What probably matters to you","position":1,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-instructionfiles-context-channel-gated-behind-carved","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-instructionfiles-context-channel-gated-behind-carved.json"},{"anchor":"new-appendsubagentsystemprompt-option-threaded-through-sessi","heading":"New appendSubagentSystemPrompt option threaded through session\/agent config","glance":"A new appendSubagentSystemPrompt option lets a subagent's system-prompt append differ from the main session's.","teaser":null,"tier":"soon","area":"Subagents","section":"What probably matters to you","position":2,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-appendsubagentsystemprompt-option-threaded-through-sessi","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-appendsubagentsystemprompt-option-threaded-through-sessi.json"},{"anchor":"scratchpad-directory-a-new-per-session-temp-file-location-a","heading":"Scratchpad directory: a new per-session temp-file location announced to the model","glance":"Claude may soon be told to use a per-session scratchpad directory for temp files instead of \/tmp.","teaser":null,"tier":"soon","area":"Scratchpad","section":"What probably matters to you","position":3,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/scratchpad-directory-a-new-per-session-temp-file-location-a","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/scratchpad-directory-a-new-per-session-temp-file-location-a.json"},{"anchor":"incremental-claudemd-tool-description-context-diffing-i","heading":"Incremental CLAUDE.md \/ tool-description context diffing (&#039;instructions&#039; attachments)","glance":"Claude Code now only re-sends changed CLAUDE.md\/instruction files instead of the whole block each turn, saving tokens.","teaser":null,"tier":"notice","area":"Context Management","section":"Improvements","position":0,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/incremental-claudemd-tool-description-context-diffing-i","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/incremental-claudemd-tool-description-context-diffing-i.json"},{"anchor":"session-context-refresh-message-now-states-the-reason-and-ha","heading":"Session context refresh message now states the reason and handles empty state","glance":"Claude now explains why your session context was refreshed, like after compaction or a settings sync.","teaser":null,"tier":"notice","area":"Session Context","section":"Improvements","position":1,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/session-context-refresh-message-now-states-the-reason-and-ha","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/session-context-refresh-message-now-states-the-reason-and-ha.json"},{"anchor":"poll-event-queue-depth-cap-enforced-at-1000-events","heading":"Poll-event queue depth cap enforced at 1000 events","glance":"Poll-event queue now hard-caps at 1000 pending events and rejects reserved event kinds by default.","teaser":null,"tier":"notice","area":"Elsewhere","section":"Improvements","position":2,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/poll-event-queue-depth-cap-enforced-at-1000-events","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/poll-event-queue-depth-cap-enforced-at-1000-events.json"},{"anchor":"task-output-pinning-gains-recovery-guidance-and-macos-alias","heading":"Task output pinning gains recovery guidance and macOS alias tolerance","glance":"Task-output errors on macOS now explain how to recover and avoid false alarms from aliased directories.","teaser":null,"tier":"internal","area":"Task Output","section":"Bug Fixes","position":0,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/task-output-pinning-gains-recovery-guidance-and-macos-alias","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/task-output-pinning-gains-recovery-guidance-and-macos-alias.json"},{"anchor":"task-output-swap-refusal-errors-now-carry-a-to-recover-hin","heading":"Task output swap refusal errors now carry a &#039;To recover&#039; hint","glance":"Task output swap error messages now include a recovery hint when available.","teaser":null,"tier":"internal","area":"Task Output","section":"Bug Fixes","position":1,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/task-output-swap-refusal-errors-now-carry-a-to-recover-hin","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/task-output-swap-refusal-errors-now-carry-a-to-recover-hin.json"},{"anchor":"task-notification-payloads-now-hard-capped-in-length-before","heading":"Task-notification payloads now hard-capped in length before being queued","glance":"Very long task notifications are now truncated to 100,000 characters instead of growing unbounded.","teaser":null,"tier":"notice","area":"Elsewhere","section":"Bug Fixes","position":2,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/task-notification-payloads-now-hard-capped-in-length-before","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/task-notification-payloads-now-hard-capped-in-length-before.json"},{"anchor":"hardened-pinned-tmpdir-write-target-verification-on-macos-w","heading":"Hardened pinned-tmpdir write-target verification on macOS, with new recovery guidance","glance":"macOS path verification for task output is now more robust against symlink aliasing tricks.","teaser":null,"tier":"notice","area":"Task Output","section":"Bug Fixes","position":3,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/hardened-pinned-tmpdir-write-target-verification-on-macos-w","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/hardened-pinned-tmpdir-write-target-verification-on-macos-w.json"},{"anchor":"system-context-instructions-filtering-keyed-on-tengu-paper-h","heading":"System-context instructions filtering keyed on tengu_paper_halyard, now per-item rather than category-wide","glance":"Internal rewrite of how instruction files get filtered from context, no visible change.","teaser":null,"tier":"internal","area":"System Prompt","section":"Internal Changes","position":0,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/system-context-instructions-filtering-keyed-on-tengu-paper-h","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/system-context-instructions-filtering-keyed-on-tengu-paper-h.json"},{"anchor":"contextcost-breakdown-now-counts-tool-descriptions-from-a-r","heading":"Context\/cost breakdown now counts tool descriptions from a recorded prompt snapshot","glance":"Context\/cost breakdowns like \/context now reuse the exact tool description text actually sent, for accuracy.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":1,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/contextcost-breakdown-now-counts-tool-descriptions-from-a-r","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/contextcost-breakdown-now-counts-tool-descriptions-from-a-r.json"},{"anchor":"new-telemetry-event-for-bridge-session-persistence-write-fai","heading":"New telemetry event for bridge session persistence write failures","glance":"Bridge session write failures now get logged and reported via telemetry instead of failing silently.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":2,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-telemetry-event-for-bridge-session-persistence-write-fai","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-telemetry-event-for-bridge-session-persistence-write-fai.json"},{"anchor":"poll-event-queue-depth-cap-reserved-kind-rejection-renamed","heading":"Poll-event queue depth cap \/ reserved-kind rejection renamed\/refactored","glance":"Internal rename of poll-event queue functions with no behavior change.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":3,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/poll-event-queue-depth-cap-reserved-kind-rejection-renamed","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/poll-event-queue-depth-cap-reserved-kind-rejection-renamed.json"},{"anchor":"new-reason-codes-for-session-context-re-reads","heading":"New reason codes for session-context re-reads","glance":"New internal reason codes back the session-context refresh messages.","teaser":null,"tier":"internal","area":"Session Context","section":"Internal Changes","position":4,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-reason-codes-for-session-context-re-reads","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-reason-codes-for-session-context-re-reads.json"},{"anchor":"appendsubagentsystemprompt-threaded-into-more-system-prompt","heading":"appendSubagentSystemPrompt threaded into more system-prompt construction call sites","glance":"Internal plumbing now threads a subagent-specific system prompt option through more call sites.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":5,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/appendsubagentsystemprompt-threaded-into-more-system-prompt","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/appendsubagentsystemprompt-threaded-into-more-system-prompt.json"},{"anchor":"version-bump-to-21252","heading":"Version bump to 2.1.252","glance":"Version bumped to 2.1.252 with no functional changes.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":6,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/version-bump-to-21252","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/version-bump-to-21252.json"},{"anchor":"scratchpad-directory-tracked-in-environment-change-diffs-and","heading":"Scratchpad directory tracked in environment-change diffs and telemetry schema","glance":"The scratchpad directory is now tracked in environment-change diffs and telemetry like other environment fields.","teaser":null,"tier":"internal","area":"Scratchpad","section":"Internal Changes","position":7,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/scratchpad-directory-tracked-in-environment-change-diffs-and","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/scratchpad-directory-tracked-in-environment-change-diffs-and.json"},{"anchor":"user-context-memory-refresh-now-carries-a-reason-with-new","heading":"User context (memory) refresh now carries a reason, with new instruction-files tracking","glance":"Internal memory-refresh function now records why it was invalidated and tracks instruction files too.","teaser":null,"tier":"internal","area":"Session Context","section":"Internal Changes","position":8,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/user-context-memory-refresh-now-carries-a-reason-with-new","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/user-context-memory-refresh-now-carries-a-reason-with-new.json"},{"anchor":"new-instructions-and-prompt-snapshot-attachmentsystem-p","heading":"New &quot;instructions&quot; and &quot;prompt_snapshot&quot; attachment\/system-prompt-section types","glance":"Two new internal message types for instructions and prompt snapshots are excluded from history search.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":9,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-instructions-and-prompt-snapshot-attachmentsystem-p","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/new-instructions-and-prompt-snapshot-attachmentsystem-p.json"},{"anchor":"tool-description-can-now-be-overridden-by-a-recorded-descrip","heading":"Tool description can now be overridden by a recorded description","glance":"Tool definitions can now be overridden by a previously recorded description instead of the live one.","teaser":null,"tier":"internal","area":"Elsewhere","section":"Internal Changes","position":10,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/tool-description-can-now-be-overridden-by-a-recorded-descrip","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/tool-description-can-now-be-overridden-by-a-recorded-descrip.json"},{"anchor":"claudemd-now-explicitly-emitted-as-empty-string-under-carved","heading":"claudeMd now explicitly emitted as empty string under carved-slate mode","glance":"Under an experimental mode, empty CLAUDE.md content is now sent as an explicit empty string to keep prompt caching stable.","teaser":null,"tier":"internal","area":"System Prompt","section":"Internal Changes","position":11,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/claudemd-now-explicitly-emitted-as-empty-string-under-carved","entry_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/claudemd-now-explicitly-emitted-as-empty-string-under-carved.json"}],"facets":{"sections":[{"value":"What probably matters to you","entries":4},{"value":"Improvements","entries":3},{"value":"Bug Fixes","entries":4},{"value":"Internal Changes","entries":12}],"tiers":[{"value":"internal","entries":14},{"value":"notice","entries":5},{"value":"soon","entries":4}],"areas":[{"value":"Elsewhere","entries":9},{"value":"Scratchpad","entries":3},{"value":"Session Context","entries":3},{"value":"System Prompt","entries":3},{"value":"Task Output","entries":3},{"value":"Context Management","entries":1},{"value":"Subagents","entries":1}]}}