chore(agent-tools): bump Claude Code pin to 2.1.220 (opus alias → Opus 5) #246

Merged
dominik.polakovics merged 1 commit from lab/20260726-1514 into main 2026-07-28 17:51:01 +02:00

Closes #245

Problem

Agents launched with model opus run Opus 4.8 instead of the newly released Opus 5. The alias→model mapping is baked into the Claude Code binary, and the agent-tools image pins CLAUDE_CODE_VERSION=2.1.198 — built before Opus 5 existed. Lab's provider catalog is family-alias based (opus[1m]) by design, so the image pin is the only thing to move.

Why 2.1.220 and not stable (2.1.212)

2.1.212 (stable channel as of today) was built 2026-07-16 and does not contain claude-opus-5. 2.1.220 (built 2026-07-24) embeds aliases:{opus:{default:"claude-opus-5"}} and latest_per_family.opus = claude-opus-5 — verified by bundle extraction of the sha256-checked artifact.

Change

  • containers/agent-tools/versions.env: 2.1.198 → 2.1.220, sha256 from the per-version manifest.json (linux-x64-musl), re-verified against the downloaded artifact.
  • internal/compat/compat.md: pin header moved to 2.1.220 + a dated re-verification note recording exactly what was checked and what remains.

Compat re-verification status (ADR-0051 bump procedure)

Done in-container against real 2.1.220 artifacts (musl = image input; glibc twin executed):

  • §1 spawn flags all present (--remote-control [name], --permission-mode, --model, --effort low|medium|high|xhigh|max, --remote-control-session-name-prefix); opus[1m] and all effort values remain valid.
  • §3 auth status --json shape (exit 0 + pinned keys, logged-out arm); §3a CLAUDE_CONFIG_DIR honored.
  • §10 all ten pinned chat-safe slash-command rows match verbatim, incl. clear's exact row.
  • §2/§4/§5/§9/§11/§12 static markers all present (registry builder, bridgeSessionId, cse_, hasTrustDialogAccepted, toolUseResult, hook names, CLAUDE_AFK_TIMEOUT_MS, ultracode).

Outstanding merge gate (needs the dev host — this container has no go/tmux):

  1. LAB_COMPAT_LIVE=1 go test ./internal/compat/ -run Live -v
  2. §3b credential-refresh by-hand recipe (compat.md § Live re-verification)

CI's path-gated agent-tools workflow will run the injection smoke test on this PR; merge to main publishes the new image tag claude-2.1.220, which the NixOS module's toolsImages default follows (ADR-0054).

🤖 Generated with Claude Code

Closes #245 ## Problem Agents launched with model `opus` run **Opus 4.8** instead of the newly released **Opus 5**. The alias→model mapping is baked into the Claude Code binary, and the agent-tools image pins `CLAUDE_CODE_VERSION=2.1.198` — built before Opus 5 existed. Lab's provider catalog is family-alias based (`opus[1m]`) by design, so the image pin is the only thing to move. ## Why 2.1.220 and not stable (2.1.212) 2.1.212 (stable channel as of today) was built 2026-07-16 and does **not** contain `claude-opus-5`. 2.1.220 (built 2026-07-24) embeds `aliases:{opus:{default:"claude-opus-5"}}` and `latest_per_family.opus = claude-opus-5` — verified by bundle extraction of the sha256-checked artifact. ## Change - `containers/agent-tools/versions.env`: 2.1.198 → 2.1.220, sha256 from the per-version `manifest.json` (linux-x64-musl), re-verified against the downloaded artifact. - `internal/compat/compat.md`: pin header moved to 2.1.220 + a dated re-verification note recording exactly what was checked and what remains. ## Compat re-verification status (ADR-0051 bump procedure) Done in-container against real 2.1.220 artifacts (musl = image input; glibc twin executed): - §1 spawn flags all present (`--remote-control [name]`, `--permission-mode`, `--model`, `--effort low|medium|high|xhigh|max`, `--remote-control-session-name-prefix`); `opus[1m]` and all effort values remain valid. - §3 `auth status --json` shape (exit 0 + pinned keys, logged-out arm); §3a `CLAUDE_CONFIG_DIR` honored. - §10 all ten pinned chat-safe slash-command rows match **verbatim**, incl. `clear`'s exact row. - §2/§4/§5/§9/§11/§12 static markers all present (registry builder, `bridgeSessionId`, `cse_`, `hasTrustDialogAccepted`, `toolUseResult`, hook names, `CLAUDE_AFK_TIMEOUT_MS`, `ultracode`). **Outstanding merge gate (needs the dev host — this container has no go/tmux):** 1. `LAB_COMPAT_LIVE=1 go test ./internal/compat/ -run Live -v` 2. §3b credential-refresh by-hand recipe (compat.md § Live re-verification) CI's path-gated agent-tools workflow will run the injection smoke test on this PR; merge to main publishes the new image tag `claude-2.1.220`, which the NixOS module's `toolsImages` default follows (ADR-0054). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chore(agent-tools): bump Claude Code pin 2.1.198 → 2.1.220 (opus alias → Opus 5)
All checks were successful
agent-tools / publish (pull_request) Has been skipped
agent-tools / smoke (pull_request) Successful in 5m14s
ci / native (pull_request) Successful in 8m41s
52a91766d3
The opus alias→model mapping ships inside the Claude Code binary; the
2.1.198 image predates Opus 5, so containerized agents spawned with
--model opus[1m] ran Opus 4.8. 2.1.212 (stable) also predates Opus 5;
2.1.220 is the first release whose embedded catalog resolves
aliases.opus.default = claude-opus-5. No Go change: the provider model
catalog is family-alias based by design (D14).

sha256 taken from downloads.claude.ai/claude-code-releases/2.1.220/
manifest.json (linux-x64-musl) and re-verified against the downloaded
artifact. Compat record re-verified per ADR-0051 to the extent possible
in-container (bundle extraction + CLI probes — see the 2.1.220 note in
compat.md); the live recipe suite and §3b by-hand check remain the
dev-host merge gate.

Closes #245

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
dominik.polakovics deleted branch lab/20260726-1514 2026-07-28 17:51:01 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/coding-lab!246
No description provided.