1
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 の設定10件を測り直したら、2件は挙動が変わっていた

1
Last updated at Posted at 2026-09-08

この1か月、Claude Code の設定を測っては「ドキュメントに書いていない」「書いてあることと違う」と記事にしてきました。10件たまったので、今どうなっているか全部測り直しました。

解消していた(文書に載り、挙動も当時と同じ)   6件
挙動が変わっていた                          2件
今も食い違う                                2件

未文書だった環境変数は、4つとも載っていました。 しかも「非対話では明示的にONが要る」まで書かれています。

一方で、挙動そのものが変わっていたものが2件ありました。ドキュメントは今の挙動を正しく書いているので、古い記事を信じたままだと間違えます。

検証環境: Windows 10 / Claude Code 2.1.260 / モデル claude-opus-5 / 測定は 2026-09-08 時点
最新は 2.1.263 ですが、changelog 上は bug fixes のみのため 2.1.260 で測っています


一覧

# 当時
1 fork の「既定ON」は対話セッション限定 公式に明記された
2 CLAUDE_CODE_FORK_SUBAGENT が未文書 env-vars に載った
3 ENABLE_TASKS=0 でタスク管理が全部消える 公式に明記された
4 ENABLE_TODO_TOOLS=1 で戻るのは Task ツール 挙動が変わった。今は TodoWrite が戻る
5 /model を押すと ANTHROPIC_DEFAULT_MODEL が効かない 変わらず。changelog にも明記された
6 SUBAGENT_MODEL は定義に負ける。_FORCE で勝つ 変わらず。経緯まで明記された
7 notify_when_idle は「macOS and Linux」表記だが Windows で動く 今も表記のまま
8 spellcheck は綴りチェッカーが別途要る 前提は明記された。辞書の話は今も無い
9 /cost/usage は同じ画面 変わらず
10 Fable のキャッシュ修正は「ツール結果のあと」限定 ツールなし側も乗るようになってきた

測り方

全部 claude -p で測れます。 セッションに「今なにが使えるか」を聞くだけです。

claude -p "List the names of every task-tracking tool you have available right now.
Output only the names separated by commas. If you have none, output NONE."

モデルやトークンを見たいときは JSON で取ります。

claude -p "hi" --output-format json

modelUsage のキーが実際に走ったモデルIDです。


挙動が変わっていた① タスク管理ツールの戻し方

ここだけ結果が変わりました。

以前は「CLAUDE_CODE_ENABLE_TODO_TOOLS=1 で戻すと、戻ってくるのは TodoWrite ではなく Task ツールだ」と書きました。今はこうです。

設定 出てくるツール
設定なし NONE
ENABLE_TASKS=0 NONE
ENABLE_TASKS=0 + ENABLE_TODO_TOOLS=1 TodoWrite
ENABLE_TODO_TOOLS=1 TaskCreate, TaskUpdate, TaskGet, TaskList, TaskOutput, TaskStop

2つの変数の役割がきれいに分かれています。

  • ENABLE_TODO_TOOLS出すか出さないか
  • ENABLE_TASKSどちらの系統を出すか(Task 系 か TodoWrite か)

ドキュメントもそう書いています。

Set to 1 to get the task-tracking tools on the models listed under Task tool availability, where Claude Code otherwise leaves them out. CLAUDE_CODE_ENABLE_TASKS still selects the Task tools or TodoWrite.
1 にすると、本来は付かないモデルでもタスク管理ツールが付く。どちらの系統かは ENABLE_TASKS が引き続き決める

もう1つ、設定なしで NONE だったのが意外でした。 この環境では、既定でタスク管理ツールが1つも付いていません。ドキュメントは「sessions that have them」という条件付きの書き方をしていて、モデルによって付いたり付かなかったりします。

「タスクリストが出ない」と思ったら、まず何が付いているか聞いてみるのが早いです。


挙動が変わっていた② Fable のキャッシュが乗るようになった

9月2日に「Claude Fable 5.1 は2ターン目のキャッシュに乗り損ねる。18回中13回外した」と書きました。9月4日に測り直したときは、ツールを使わないと9回中8回外れるままでした。

今日また測ったら、乗るほうが多くなっていました。

ツールを使わない(hi → hi again)
  99.7%  99.6%  99.6%  38.4%     ← 4回中3回は乗る

ツールを使う(1ターン目で Bash を1回呼ぶ)
  100%   100%   100%   100%      ← 4回とも乗る

ツールを使う側は当時と同じで、全部乗ります。 変わったのは使わない側です。

外したときの中身は当時と変わりません。

乗ったとき  read 83,128  create    247
外したとき  read 32,047  create 51,377   ← 5万トークン書き直す

ただし4回では割合を言えません。 「当時ほど外さなくなったように見える」までです。今も割れること自体は変わっていません(4回のうち1回は外した)。

以前の記事に「12回中8回外した」と書いたので、同じ条件でも数字が動くことを、身をもって確かめた形になりました。回数を書いていないと、こういう比較ができません。


今も食い違う① Windows で動くのに書かれていない

notify_when_idle は、別のセッションが暇になったら1回だけ知らせてもらう機能です。changelog の記述は今もこうです。

Added notify_when_idle to cross-session SendMessage: ask another Claude Code session on this machine to send one notice when it next goes idle — opt-in, one-shot, no polling (macOS and Linux)

末尾の (macOS and Linux) が残ったままです。 Windows で動くことを確かめたのは8月25日で、そこから2週間経っています。

ドキュメント本体(cross-session messaging のページ)にはOS制限が書かれていません。changelog だけが古いままです。

Windows で使う人が changelog を読むと「自分には関係ない」と判断します。 実際には動きます。


今も食い違う② spellcheck の辞書

以前は「有効にしても、まず動かない」と書きました。今は前提条件の節ができています。

Prerequisites
Install aspell, hunspell, or ispell and make sure it's on your PATH. Claude Code runs the first of the three it finds, in that order, on every platform, including a .cmd shim a package manager installs on Windows.
To check that the program is on your PATH, run aspell --version, hunspell --version, or ispell -v in your terminal.

確認コマンドまで書いてあります。 これは大きな改善です。

今日この環境で確かめたら、3つとも入っていませんでした。

aspell   : 見つからず
hunspell : 見つからず
ispell   : 見つからず

ただし「辞書」の話は今も書かれていません。 プログラムを入れても、辞書が0個なら何も指摘されません。 そして辞書なしでも終了コードは 0 なので、「綴りは全部正しい」と区別がつきません。

動いていないことと、指摘がゼロであることが、同じ見た目になります。


変わらなかったもの

残りは当時のまま再現しました。公式の記述も追いついています。

fork は -p では使えない

環境変数なし                 -> NO
CLAUDE_CODE_FORK_SUBAGENT=1  -> YES
CLAUDE_CODE_FORK_SUBAGENT=0  -> NO

ドキュメントに、そのままの言葉で載りました。

Claude Code turns fork mode on by default in interactive sessions and leaves it off by default in non-interactive mode with -p and in the Agent SDK.

「既定でON」は対話セッションの話です。 バッチや CI で使うなら明示的に立てます。

/model を押すと ANTHROPIC_DEFAULT_MODEL は効かない

settings.jsonmodel が保存されていると、環境変数は無視されます。

環境変数なし                   -> claude-fable-5-1
ANTHROPIC_DEFAULT_MODEL=haiku  -> claude-fable-5-1   ← 効かない
ANTHROPIC_MODEL=haiku          -> claude-haiku-4-5   ← こちらは効く

changelog にも書かれるようになりました。

Added ANTHROPIC_DEFAULT_MODEL environment variable: sets the model new sessions start on, while a /model pick still overrides it and persists across restarts (unlike ANTHROPIC_MODEL)
(新しいセッションが始まるモデルを決める。ただし /model での選択がそれを上書きし、再起動をまたいで残る

_DEFAULT_ が付くほうは「既定値」なので、保存された選択に負けます。

サブエージェントのモデルは定義が勝つ

code-reviewermodel: sonnet)で測りました。

環境変数なし                     -> claude-sonnet-5
SUBAGENT_MODEL=haiku             -> claude-sonnet-5          ← 定義が勝つ
SUBAGENT_MODEL=haiku + _FORCE=1  -> claude-haiku-4-5-20251001

ドキュメントには変更の経緯まで書かれていました。

Before v2.1.251, this variable overrode both the per-invocation model and the definition's model field

「昔はこうだった」が明記されているのは珍しいと思います。古い記事を読んで混乱した人向けの配慮に見えます。


対照を取らないと、逆の結論になりかけた

/cost/usage は同じ画面だと書いていました。今日測ると文字数が違います。

/cost   1,071 文字
/usage  1,065 文字

「変わったのか」と思いましたが、/cost を2回叩いて比べました。

/cost #1  1,071 文字
/cost #2  1,065 文字   ← 同じコマンド同士でも違う

違っていたのは3行だけでした。

cost#1: resets Sep 14, 3:59am
cost#2: resets Sep 14, 4am

リセット時刻の丸めが変わっただけです。 内容は同じでした。

同じもの同士を比べる対照がないと、「変わった」と書いていました。 差が出たときは、まず同じ条件をもう一度測ります。


自分の環境で確かめる

全部その場で叩けます。 以下は今日実際に使ったものです。

何のツールが付いているか

claude -p "List the names of every task-tracking tool you have available right now.
Output only the names separated by commas. If you have none, output NONE."

環境変数を付けて2回叩けば、違いが出ます。

CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude -p "..."
CLAUDE_CODE_ENABLE_TASKS=0 CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude -p "..."

fork が使えるか

claude -p "Is 'fork' listed as an available subagent_type for the Agent tool right now?
Answer with exactly one word: YES or NO."

実際に走ったモデル

claude -p "hi" --output-format json

modelUsage のキーを見ます。ANTHROPIC_DEFAULT_MODEL を付けても変わらなければ、settings.jsonmodel が保存されています。

grep model ~/.claude/settings.json

サブエージェントのモデル

claude -p "Launch the subagent named code-reviewer and ask it to report
the exact model ID it is running on. Reply with ONLY that model ID string."

キャッシュのヒット率

claude -p "hi" --output-format json                       # session_id を控える
claude -p "hi again" --resume <ID> --output-format json

cache_read_input_tokens ÷(read + create + input)がヒット率です。

綴りチェッカーが入っているか

aspell --version || hunspell --version || ispell -v

注意が2つあります。

  • -p は対話セッションとは条件が違います。 fork の既定や Prompt cache (main) 行は、-p では出ません
  • 自己申告です。 「何が使えるか」はセッション本人に聞いているので、取りこぼしがありえます。
    トークン数のように外から数えられるもののほうが確かです

測り直して分かったこと

未文書だと書いた環境変数は、4つとも載っていました。

CLAUDE_CODE_FORK_SUBAGENT         -> env-vars / sub-agents に記載
CLAUDE_CODE_ENABLE_TASKS          -> env-vars に記載
CLAUDE_CODE_ENABLE_TODO_TOOLS     -> env-vars に記載
CLAUDE_CODE_SUBAGENT_MODEL_FORCE  -> env-vars / sub-agents に記載

しかも「非対話では明示的にONが要る」「昔はこうだった」まで書かれています。1か月で追いついています。

残ったのは2件だけでした。

  • changelog の OS 表記notify_when_idle
  • spellcheck の辞書

どちらも「本体のドキュメントは正しいが、別の場所が古い、または触れていない」型です。

そして挙動が変わったのが1件。 これは自分で測らないと気づけません。ドキュメントは今の挙動を正しく書いているので、読み直せば分かりますが、過去の記事を信じたままだと間違えます。


まとめ

  • 1か月で書いた「ドキュメントと違う」10件を、2.1.260 で測り直した
  • 6件は解消していた。 未文書だった環境変数4つは、条件や経緯まで含めて記載された
  • 2件は挙動が変わっていた。 ENABLE_TODO_TOOLS=1 で戻るのは、今は TodoWrite
    Fable のキャッシュは、ツールを使わなくても4回中3回乗るようになった
  • 2件は今も食い違う。 notify_when_idle の changelog は「(macOS and Linux)」のままだが Windows で動く。
    spellcheck は辞書が無いと、終了コード0で「指摘ゼロ」に見える
  • 既定でタスク管理ツールが1つも付かない環境があった。まず何が付いているか聞くのが早い
  • 差が出たら、同じ条件をもう一度測る。 /cost は自分同士でも文字数が違った

設定の記事は、書いた時点から古くなります。 測り直すと、公式が追いついた部分と、まだ残っている部分が分かれます。


参考

※ 引用は原文と日本語訳を併記しています。訳は読みやすさを優先しているので、正確な表現は原典をご確認ください。

関連記事


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

コーポレートサイト

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

採用サイト

1
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
1
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?