0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の changelog が「変更した」と書いた挙動は、5バージョン前から同じだった

0
Last updated at Posted at 2026-09-10

Claude Code 2.1.268(2026-09-10)の changelog に、こう書かれています。

Changed the task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) to be offered only on
Claude 3.x, Opus 4.0–4.7, Sonnet 4.0–4.6, Haiku 4.5; set CLAUDE_CODE_ENABLE_TODO_TOOLS=1 elsewhere

列挙されたモデルに Opus 5 も Sonnet 5 も入っていません。 更新するとタスクリストが消えることになります。更新前(2.1.263)と更新後(2.1.268)で測りました。

モデルで分かれるのは本当だった
  haiku 4.5  あり  /  opus 5  なし  /  sonnet 5  なし

ただし 2.1.263 でも、まったく同じだった
  66回の有効な計測で、両版の差はゼロ

changelog が「変更した」と書いている挙動は、5バージョン前から起きていました。

検証環境: Windows 10 / Claude Code 2.1.263 と 2.1.268 / claude -p / 測定は 2026-09-11


測り方: ツール一覧は init イベントで取れる

--output-format stream-json --verbose を付けると、開始時にツール名の配列が流れてきます。

claude -p "hi" --model opus --output-format stream-json --verbose
{"type":"system","subtype":"init","model":"claude-opus-5","tools":["Task","Bash","Edit", ...]}

モデルに聞くのではなく、この配列を数えました。 聞くと答えがぶれます。
2つの版を並べるため、2.1.268 はグローバルに入れず別ディレクトリへnpm install ...@2.1.268 --prefix <一時dir>)。


結果: モデルで分かれるのは本当。ただし両版で同じ

CLAUDE_CODE_ENABLE_TASKSCLAUDE_CODE_ENABLE_TODO_TOOLS明示的に消してから、各3回。

モデル 2.1.263 2.1.268
opus(claude-opus-5) ツール42個・なし ツール42個・なし
sonnet(claude-sonnet-5) ツール42個・なし ツール42個・なし
haiku(claude-haiku-4-5) 46個・TaskCreate / TaskGet / TaskUpdate / TaskList 46個・同じ

changelog の切り分けは当たっています。 当たっていないのは、それが 2.1.268 の変更だという点だけです。

環境変数の組み合わせも6通り測りました(opus、各3回)。

条件 2.1.263 2.1.268
何も設定しない なし なし
ENABLE_TASKS=1 なし なし
ENABLE_TODO_TOOLS=1 TaskCreate / Get / Update / List 同じ
ENABLE_TASKS=1 + TODO_TOOLS=1 同上 同上
ENABLE_TASKS=0 なし なし
ENABLE_TASKS=0 + TODO_TOOLS=1 TodoWrite 同じ

12セルすべて一致。 差は1つも出ませんでした。


なぜ更新前から同じなのか(推測)

確かめられたのは「2つの版で同じだった」ことだけです。 理由は特定できていません。
ただし、機能フラグがサーバーから来る仕組みは実在します。~/.claude.json に取得済みの実験データが入っています。

cachedExperimentData = {
  'tengu_read_dedup_killswitch': {'experimentId': ..., 'value': True}, ...
}
cachedGrowthBookFeaturesAt = (取得時刻)

そして 2.1.261 の changelog に、こうあります。

Fixed feature flags gated to a newer version occasionally applying to an older Claude Code
version running on the same machine

「新しい版に向けたフラグが、同じマシンの古い版に適用されることがあった」——公式が認めて修正した項目です。

今回がこれに当たるという証拠はありません。 フラグ名も分かりません。サーバー側の判定である可能性も、両版のコードがそもそも同じである可能性も残ります。

言えるのは1つだけです。changelog の日付は「コードが入った日」であって、「挙動が変わった日」とは限りません。


測定が、親プロセスの環境変数に汚染されていた

最初の24回は捨てました。haikuTodoWrite 1個になっていたからです。上の表では4個出ています。

[Environment]::GetEnvironmentVariable("CLAUDE_CODE_ENABLE_TASKS")             # -> 0
[Environment]::GetEnvironmentVariable("CLAUDE_CODE_ENABLE_TASKS", "User")     # -> (なし)
[Environment]::GetEnvironmentVariable("CLAUDE_CODE_ENABLE_TASKS", "Machine")  # -> (なし)

ユーザー環境変数にもシステム環境変数にも settings.json にもありません。 それでもプロセスには 0 が入っています。動いている Claude Code セッションが、子プロセスに渡していました。

haiku の結果 ツール
環境変数を消してから TaskCreate / TaskGet / TaskUpdate / TaskList(46個)
親から TASKS=0 を継いだまま TodoWrite(43個)

同じコマンド、同じモデル、同じ版で、答えが変わります。 測る前に明示的に消す必要がありました。

Remove-Item Env:\CLAUDE_CODE_ENABLE_TASKS -ErrorAction SilentlyContinue

ENABLE_TASKS=0 は「無効化」ではなく「置き換え」だった

上の表をもう一度見ると、0 を入れたときの挙動が読み取れます。

haiku + 何も設定しない       TaskCreate / TaskGet / TaskUpdate / TaskList   (4個)
haiku + ENABLE_TASKS=0       TodoWrite                                      (1個)

消えていません。4つが1つに入れ替わっています。 opus でも同じ形で、ENABLE_TODO_TOOLS=1 だけなら Task 系4つ、ENABLE_TASKS=0 を足すと TodoWrite 1つになります。

0 は「タスク管理をやめる」ではなく、「新しい4つではなく古い1つを使う」の意味でした。


言えないこと

  • 測ったのは 2.1.263 と 2.1.268 の2点だけ。 いつ挙動が変わったかは特定していません。2.1.263 より前は未測定です
  • フラグ経由だという直接の証拠はありません。 サーバー側の判定である可能性も、クライアント側のコードが両版で同じである可能性も残ります
  • claude -p で測っています。 対話セッションで同じとは確かめていません
  • モデルは opus / sonnet / haiku のエイリアス3種のみ。Opus 4.x や Sonnet 4.x は手元で試していません
  • 親プロセスが TASKS=0 を渡すのが Claude Code 全般の挙動か、VS Code 拡張だけかは切り分けていません

まとめ

  • 2.1.268 の changelog は「タスクツールを一部モデルに限定した」と書いている
  • モデルの切り分けは当たっていた。 Haiku 4.5 は4つ、Opus 5 / Sonnet 5 は0
  • ただし 2.1.263 でも同じ。66回の有効な計測で12セルすべて一致
  • 機能フラグはサーバーから来る。2.1.261 の changelog に「新しい版向けのフラグが古い版に適用されることがある」とある
  • 測定が親プロセスの環境変数に汚染された。 CLAUDE_CODE_ENABLE_TASKS=0 が子に渡り、haiku の答えが4個→1個に変わった
  • ENABLE_TASKS=0 は無効化ではなく置き換え。 Task 系4つが TodoWrite 1つになる

この項目に関しては、更新に身構える必要はありませんでした。 既に変わっていたからです。
「更新で変わったか」を測るなら、Claude Code の外から走らせてください。 中からだと、親が渡した環境変数が答えを書き換えます。


参考

関連記事


JQITのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。

コーポレートサイト

エンジニア採用も行っています。もしご興味あれば覗いてみてください。

採用サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?