diff --git a/deploy/clawmates-runtime/Dockerfile b/deploy/clawmates-runtime/Dockerfile index 9feaa8b..ed776f3 100644 --- a/deploy/clawmates-runtime/Dockerfile +++ b/deploy/clawmates-runtime/Dockerfile @@ -31,10 +31,21 @@ FROM debian:bookworm-slim # on it too) to install BOTH agent CLIs that the subprocess providers spawn: # `claude -p` (claude_cli, Claude subscription) and `kimi -p` (kimi_cli, Kimi # membership) — subscription-backed, no per-minute API TPM ceiling. +# PINNED. These two binaries are what every mission agent runs, and an +# unpinned install takes whatever npm has on build day: prod's mission image +# (`:hooks`, built 2026-08-21) carried Claude Code 2.1.237 for a month while the +# persistent runtime, rebuilt on 2026-09-06, got 2.1.263 — two versions in one +# deployment and nothing recording either. Worse, 2.1.265 and 2.1.275 each +# broke every turn on ANTHROPIC_BASE_URL endpoints (HTTP 400), which is how the +# GLM and Kimi backends reach `claude`; a rebuild landing on either day would +# have shipped that silently. Bump these on purpose, run a mission on the +# result (attribution, gate, tap, skills, judge), then promote. +ARG CLAUDE_CODE_VERSION=2.1.276 +ARG KIMI_CODE_VERSION=0.41.0 RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl gnupg git \ && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ - && npm install -g @anthropic-ai/claude-code @moonshot-ai/kimi-code \ + && npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION} @moonshot-ai/kimi-code@${KIMI_CODE_VERSION} \ && npm cache clean --force \ && rm -rf /var/lib/apt/lists/* /root/.npm diff --git a/deploy/compose/docker-compose.override.yml b/deploy/compose/docker-compose.override.yml index b5fbe6c..467b7d2 100644 --- a/deploy/compose/docker-compose.override.yml +++ b/deploy/compose/docker-compose.override.yml @@ -156,7 +156,7 @@ services: # the agents build the user's repo inside them. The built-in default is # `clawmates-runtime:sync` (mission_runtime.rs DEFAULT_IMAGE), which has # no cmake, so a coding phase could not compile clawhdf5 at all. - CLAWMATES_RUNTIME_IMAGE: clawmates-runtime:hooks + CLAWMATES_RUNTIME_IMAGE: clawmates-runtime:toolchain # Per-mission containers default to forwarding ANTHROPIC_API_KEY, which is # dead here ("credit balance is too low"). Claude Code ranks that key ABOVE # the subscription token, so forwarding it doesn't just fail — it WINS over