Skip to content

v0.7.2 — replace the entry, not its value

Latest

Choose a tag to compare

@anfreire anfreire released this 15 Oct 12:09

Claude Code 2.1.300 computes the web-fetch agent's model in a getter instead of writing it as a string. On that build Override subagent models would not apply: rewriting the model's value left a bare string with no key, the syntax gate refused it before anything was written, and every subagent pin was left out of the binary. This release makes the override indifferent to how upstream spells the model.

The fix

The override now replaces the whole model entry — model:"haiku", a getter, or whatever spelling upstream picks next — and inserts one before the whenToUse entry where a definition has none. Both are found as the grammar's entry, so a getter-spelled whenToUse (the same 2.1.300 definition has one) cannot send the insertion into the object that holds the definition.

A pin is written even where the definition already names it. Skipping on the strength of upstream's value is a claim the bundle cannot back once that value is computed: a getter answering the pin on one branch and inherit on another reads as satisfied. For a literal, the write is the same bytes.

What an agent runs untouched is display only — the literal, inherit when there is none, computed otherwise — so web-fetch on 2.1.300 reads keep (computed) in the menu and doctor, where it used to show the getter's source.

apply and doctor also print their findings as data, and doctor its verdicts: a refusal quoting bracketed bundle text, such as tools:[dr], was read as markup and shown as tools:.

Compatibility

Transparent. Upgrade and re-apply (patch-cc apply, or the menu); the saved selection replays unchanged and its pins land on 2.1.300. A pin to inherit on an agent that declares no model is now written out explicitly, with the same behaviour.

Validated

  • GitHub CI passes on Python 3.11, 3.12, 3.13 and 3.14 for the release commit.
  • patch-cc doctor over all 72 held builds, 2.1.216 → 2.1.300: every patch matches and every baked binary boots. Diffed against a sweep of 0.7.1, exactly one report moves — 2.1.300, where subagent-models goes from refused to applied and web-fetch reads computed.
  • The bundles doctor composes are byte-identical to 0.7.1's on 2.1.217, 2.1.233, 2.1.242, 2.1.246, 2.1.270 and 2.1.299.
  • On 2.1.300, a selection pinning five agents lands every pin: web-fetch's getter becomes model:"haiku" and the two definitions without a model gain one. Pins equal to what an agent already runs rewrite a literal to the same bytes and replace the getter.
  • The 0.7.2 wheel and sdist build, pass Twine metadata checks, and install from PyPI.
uvx --no-cache patch-cc        # or: uv tool install patch-cc && patch-cc