{"version":"2.1.252","anchor":"claudemd-now-explicitly-emitted-as-empty-string-under-carved","canonical_anchor":"new-instructionfiles-context-channel-gated-behind-carved","heading":"New instructionFiles context channel behind carved-slate flag","tier":"soon","area":"System Prompt","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252\/e\/claudemd-now-explicitly-emitted-as-empty-string-under-carved","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.252","markdown":"### New instructionFiles context channel behind carved-slate flag\n\nUnder an experimental mode, empty CLAUDE.md content is now sent as an explicit empty string to keep prompt caching stable.\n\nThe per-session context builder now tracks a separate `instructionFiles` field alongside `memoryFiles`, via new `userContextInstructionFiles` state. This path only runs when the `Ml()` gate (checking `CLAUDE_CODE_CARVED_SLATE` or the `tengu_carved_slate` remote flag, default false) is enabled; otherwise it is short-circuited. The context refresh function that clears\/rebuilds this cached user context now also takes a `refreshReason` argument (`session_start`, `compaction`, `policy_refresh`, `directory_added`, `settings_sync`, `account_change`), shown to the model via strings like \"after the conversation was compacted\" or \"after the organization's managed settings changed\".\n\nWhen the same carved-slate gate is on and there is no CLAUDE.md content, the context block now explicitly emits `claudeMd: \"\"` instead of omitting the key, keeping the block structure stable, likely for prompt caching.\n\n- Flag `tengu_carved_slate`: Off in both readings (read for one account on one subscription tier against v2.1.252; this account: off, anonymous baseline: off, compiled default: not a boolean we can read)\n- Area: System Prompt\n- Tier: Nothing to try yet\n- Useful: 2\/5\n- Signal: 4\/5"}