Skip to content

Apply the Claude Code 2.1.257 to 2.1.263 changelog decisions: 20 corrections, 1 native nomination, 7 adoptions, 3 declines #4027

Description

@kyle-sexton

Summary

A full /claude-ops:changelog diff over Claude Code 2.1.257 to 2.1.263 (read as raw markdown on
2026-09-08, 233 core items) produced the decisions below about this marketplace's own components.
This issue tracks applying them. It is apply work under the contract in #4024 and does not depend
on that redesign landing first: each decision names its owner surface and the false-versus-true
pair or the problem solved, which is all an apply PR needs.

Every row is a decision, not a changelog item. Item ids are <release>-<ordinal> in that
release's core list and exist so the upstream changelog can be consulted; nothing here restates it.

Fix

Work the decisions one PR per owner plugin, CHANGELOG entry per convention, subjects
chore(<plugin>): address Claude Code v2.1.257..2.1.263 changelog. The ledger seed
(docs/upstream/claude-code.md, shape below) lands as the last PR referencing them and moves each
open record to the PR that closed it. Decisions whose scope exceeds one session become their own
issue with an interview-style gate, per #4024 decision 10.

Corrected

A component stated something the docs or the changelog now contradict.

Decision Items Owner surface Was stated / is true Record
Model ladder: Fable 5.1 supersedes Fable 5 257-001, 257-090, 260-015 docs/PLUGIN-PHILOSOPHY.md tier table; replicas in boris orchestration, OFFICIAL-DOCS.md, lanes config Fable 5 the rung above / fable resolves to Fable 5.1 from 2.1.255, Fable 5 legacy, gateway sessions still resolve to Fable 5 open
Effort change and the prompt cache 260-049, 257-005 docs/PLUGIN-PHILOSOPHY.md effort guidance; replicas in interview session-config, Fable 5.1 chapter any effort change invalidates the cache with a dialog / on Fable 5.1 from 2.1.260 it keeps the cache, no dialog (API key or subscription only) open
First-run effort hold 257-083 boris autonomy, audit-instructions criteria; replica in lanes config Opus 5 alone has no hold, release actions unresolved / Opus 5 and Fable 5.1 have none; settings never release it; --effort at launch lifts it per session open
Bundled claude-api skill currency 260-050 audit-instructions criteria, prompt-audit spec unchanged since 2.1.258 / prompt-audit byte-identical through 2.1.263 (stamp refresh), model-migration gained an evals section, samples refreshed open
1M auto-compact exception list 260-047 context-guard reader contract; replica in its README Opus and Fable on 1M compact at the limit / from 2.1.260 they compact shortly before it, no published threshold open
Read/Edit deny over Bash 257-052, 259-007, 260-040 claude-config audit required-permissions.md, stamp 2026-07-26; replicas in procedures, SKILL, evals recognized readers only / also redirect targets from 2.1.257; the 2.1.259 widening was reverted in 2.1.260 and is not to be written in open
defaultMode values dead in project scope 257-089 audit-permission-state criteria C2 and permission-plane-lint.sh; replicas in permission-rule-hygiene, babysit safety only auto ignored / auto and bypassPermissions ignored from 2.1.257; acceptEdits, plan, dontAsk still apply open
Command-line scope under allowManagedPermissionRulesOnly 257-034 audit-permission-state criteria; replica permission-merge.sh one rank for allowed and disallowed / --allowedTools ignored, --disallowedTools and session deny/ask kept across reloads (2.1.257+) open
Ask-rule quote attribution and issue status 257-044 audit-permission-state criteria quote on the permissions page, issues contradict wholesale / quote on the auto-mode config page; #42797 closed, #83766 open; 2.1.257 fixed compound and subshell paths only open
strictPluginOnlyCustomization is per-surface 257-031 claude-config audit required-permissions.md, validation categories; replicas in hook-coverage script, SKILL a hook lever / true or a per-surface array; "mcp" blocks user-scope and project MCP servers; 2.1.257 closed the /mcp reconnect bypass open
Sandbox escape surfaces 260-057, 257-029 claude-config audit required-permissions.md; replicas in SKILL, procedures four documented surfaces, strict mode closes the unsandboxed path / ! bash-mode runs outside the sandbox by design from 2.1.260 (interactive only) open
Unparsable settings: refuse to start vs pause the sweep 259-023 audit-permission-state SKILL and scripts, audit-permission-grants criteria; replicas in audit-performance, install-state surfaces unparsable managed source silently unenforced; user settings silently pause the sweep / managed file, drop-in, plist, HKLM refuse start (exit 1, source named) from 2.1.259; the user-settings pause warns in /status open
Server-managed settings: cache and merge rule 257-085, 261-001, 257-084 managed-scope.sh in claude-config and claude-memory, audit-permission-state SKILL no local path; arrays concatenated, objects deep-merged / cache at ~/.claude/remote-settings.json; six-rule merge with whole-replacement keys plus the 2.1.257 awsPairs/ripgrep exception; /status Organization policy line is the failure read open
Connectors lever: which key removes a managed connector 259-035 context-budget levers.json allowedMcpServers removes managed connectors / only deniedMcpServers does from 2.1.259 (docs page still states the old rule) open
/reload-plugins in headless sessions 260-003 lanes refresh.md; replica in plugins scope-semantics needs a human to type it / runs in -p and SDK sessions from 2.1.260; reach into an in-context loop unprobed open
Worktree isolation guard basis 257-054, 259-029 worktree gather-block.md, skill-authoring precompute-context.md page says unverifiable commands are blocked, so brace groups stay $-free / four named checks, "can't verify" scoped to git; the $-free rule and compose gate hold only for blocks containing git open
/context measurement basis 261-041, 261-018 context-budget SKILL no model API call, always measured / token-counting API or, from 2.1.261, an unmarked local estimate; connectors can arrive mid-session open
CLI instruction-surface table 261-003 docs/specs/agent-doc-surfaces.md; replica in write-for-agents surfaces end at --append-system-prompt / --append-system-prompt-file and --append-subagent-system-prompt[-file] exist (-p only) open
Permission-rule lints: tokenizer and C6 table 260-007, 260-008, 260-046, 260-052 audit-permission-grants permission-rule-check.sh, audit-permission-state permission-plane-lint.sh, shared permission-patterns.sh, criteria C6 encoded: a rule path never contains ); syntax errors are the lint's alone / paths may contain ); Bash(ls) x is mis-tokenized by both lints today (verified); the CLI reports Malformed Tool(content) rule; an uncompilable deny guards the literal path open
Directory location as a boundary 257-007 claude-config audit required-permissions.md; replicas in context-budget README, permission-state lint table location is not a boundary / from 2.1.257 auto mode prompts once and permissions.blockReadsOutsideWorkingDirectories fences Read, Grep, Glob, LSP; Bash subprocess reads stay unbounded open

Replaced with native

Nominated into the audit-native-overlap gate; the store verdict is human-written. The ledger row
reads nominated until a person rules.

Candidate Items Component Native surface Nominated Store row
Stale sandbox mask files 257-006 audit-install-state stale-artifact inventory (install_state.py) /doctor warning for mask files left by a killed session (2.1.257); location undocumented, so the component routes the class rather than growing a pattern it cannot ground 2026-09-09, via audit-native-overlap pending human verdict

Adopted

Decision Items Component Problem solved Record
--permission-prompts none for unattended lanes 259-002 hop_chain.py, observer launch, lane launcher, autonomy dispatch slice, babysit safety table unattended runs chose between dontAsk (denies every uncovered call, no classifier) and bypassPermissions; the flag keeps the mode and classifier and denies only what would have prompted; denials readable from stream-json permission_denials open
claude plugin validate --json 259-004 scripts/validate-plugins.sh, plugin-quality auditor, skill-quality check CI and the auditor scrape validator text; the JSON report gives per-file errors and warnings behind a >= 2.1.259 guard open
Frontmatter model: on skills 259-015, 259-010 skill-quality check, skill-authoring playbook, PLUGIN-PHILOSOPHY.md mechanical audit skills could not pin a cheaper model (key inert interactively before 2.1.259); now honored, turn-scoped, safe under auto mode open
Route managed-policy and credential diagnosis to /status 257-074, 260-013, 260-012, 261-001 audit-pass doctor handoff, audit-permission-state completeness note the audit cannot observe whether server policy loaded, why a helper refresh failed, or which credential is in use; /status and claude doctor now carry all three (2.1.260, 2.1.261) open
managedMcpServers attribution 259-001 context-budget connectors lever, claude-config MCP scope org-injected servers and their tool schemas were invisible to both; attribute if present, nothing more until precedence and claude mcp list labelling are documented open
bashOutputMaxChars / taskOutputMaxChars as a documented lever 261-002, 257-002 claude-config audit checklist, hook-observability convention skills parsing large tool output hit a fixed inline cap; the keys raise it (clamped 4000 to 128000) and leave the 10,000-char hook cap alone; not raised by default because inline output is context cost open
Prompt-cache miss cause from the native fields 260-002 observability output-format, read-routing, data-sources cache health was routed to DuckDB only with no attribution; /usage and the status line prompt_cache.last_miss_cause name a likely cause open

Declined or deferred

Capability Items Reason Reopen when
CLAUDE_CODE_SUBAGENT_MODEL_FORCE in lanes 257-004 overrides every agent-definition model: pin the repo's tier bindings rely on; inherit under FORCE is undocumented; not listed on the env-vars page. Document as a consumer-side override that breaks tier bindings env-vars page documents FORCE and the inherit interaction
/advisor text form in headless lanes 260-004 changelog claims headless availability; no doc page states it a doc page states it, or a probe in a -p session shows it applies
claude --resume <id> --bg for lanes restart 257-087 absent from cli-reference; prompt and --name handling unknown cli-reference documents it, or a probe settles prompt and name handling

Docs lag observed at this read

Upstream pages whose text contradicted the changelog on the read date. Not repo work; a second
basis for any stamp on these pages, and input to /claude-ops:known-issues. Where a correction
above cites one of these pages, it cites the changelog as the newer statement of behavior and names
the disagreement.

Page Says Changelog says Item
interactive-mode, env-vars 60-minute cap on subagent background commands (CLAUDE_SUBAGENT_BG_SHELL_MAX_MS) cap removed 260-059
cli-reference and two others --continue skips background sessions --continue opens finished background sessions 257-035
managed-settings allowedMcpServers filters managed-mcp.json allowlist governs only user-added servers 259-035
code-review command doc GitHub only posts to GitLab MRs via glab mr note 257-075
ultrareview command doc waits 30 minutes waits 45 minutes 260-048
deploy (self-hosted runner) --kill-session-after-min terminates any session at the limit releases a session waiting on its user 260-058
skills /skill-doctor since 2.1.252 added in 2.1.261 261-004
env-vars no entry CLAUDE_CODE_SUBAGENT_MODEL_FORCE added 257-004

Verification

  • Each correction PR cites the newer source (changelog or docs page) in the plugin CHANGELOG entry
    and updates the owner surface's verification stamp to the read date.
  • Each adoption PR names the problem solved in its CHANGELOG entry and, where a version guard
    applies (claude plugin validate --json, --permission-prompts none), gates on >= 2.1.259.
  • The native nomination appears as a candidate in the audit-native-overlap gate; no row is
    written to docs/native-surfaces/records.json by any PR here.
  • scripts/affected-tests.sh --run passes on every PR.
  • The ledger seed's marker line reads changelog through 2.1.263 and nothing item-level persists
    in it.

Related

  • Redesign /claude-ops:changelog around decisions about our components, not changelog items #4024 (the redesign; this issue is the first apply under its contract).
  • Also found by the same read, not from a changelog item, for their owning plugins' trackers:
    plugins/session-flow/skills/retro/scripts/parse_transcript.py never descends into nested
    subagent transcripts (verified with a fixture); scripts/gen-hook-event-registry.sh treats
    --fetch --check as --check because its flag loop is last-wins. Both surfaced while checking
    259-034 and 259-027.
Ledger seed header (docs/upstream/claude-code.md)
# Upstream source: Claude Code releases

What this marketplace decided about its own components in response to Claude Code releases, and
the problem each decision solves. Nothing here restates a changelog item: upstream owns that text at
`https://code.claude.com/docs/en/changelog.md`, and a copy only drifts. A release that produced no
decision leaves no row. The harness facts a skill restates stay in that skill under the
upstream-drift convention; a correction to one of them is recorded in the owning plugin's
CHANGELOG, and this file points at it rather than repeating it.

**Last audited upstream state:** changelog through `2.1.263` (published 2026-09-06), read as raw
markdown on 2026-09-08. Git history of this file records *when*; this line records only *what was
read*. `/claude-ops:changelog status` reads this line; the default range for `diff` and `apply`
runs from it to the newest published release.

**Recheck trigger:** a new release block appears above the version on the line above. Nothing before
`2.1.257` was read release by release; the fleet's coverage of older releases rests on each skill's
own verification stamps and the docs-conformance rechecks those stamps trigger.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions