
はじめに
サーバーワークスの池田です。
今週(5/3〜5/9)の Claude Code は v2.1.128 から v2.1.138 まで8バージョンがリリースされました(※ v2.1.130 / v2.1.134 / v2.1.135 は番号スキップ)。注目したいのは次の3点です。
worktree.baseRef設定(v2.1.133):--worktreeやEnterWorktreeの起点ブランチを選べる- Hooks の
effort.level/$CLAUDE_EFFORT(v2.1.133): hook と Bash ツールから現在の effort を読める CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN(v2.1.132): フルスクリーン描画を切ってターミナルの native scrollback を取り戻せる
不具合修正もまとめて入りました。並列セッションの 401 デッドエンド、subagents が skills を見つけられない問題、MCP OAuth refresh token のロストなど、長く残っていた既知バグが解消されています。
この記事で分かること
--worktree/EnterWorktree/ subagent isolation の起点ブランチをorigin/<default>と localHEADから選ぶworktree.baseRef設定(v2.1.133)と、v2.1.128〜v2.1.133 の挙動推移- Hooks の入力 JSON と Bash ツール環境変数で現在の effort レベルを読める
effort.level/$CLAUDE_EFFORT(v2.1.133)の使いどころ - フルスクリーン描画を強制オフにして ターミナル native scrollback を取り戻す
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN(v2.1.132)と classic renderer の使い分け --plugin-urlで URL の zip プラグインをセッション限定で読み込む変更(v2.1.129)と、settings.autoMode.hard_deny(v2.1.136)など、その他の主要変更- 並列セッション 401 デッドエンド・subagents が skills を発見できないバグ・MCP OAuth refresh token のロスト修正など、既知不具合の解消状況
今週の主要アップデート一覧
| 機能 | バージョン | 主な変更点 | 参照 |
|---|---|---|---|
worktree.baseRef 設定 |
v2.1.133 | --worktree / EnterWorktree / subagent isolation の worktree 起点を "fresh"(origin/<default-branch>)か "head"(local HEAD)から選べる。デフォルトは fresh |
公式ドキュメント |
Hooks の effort.level / $CLAUDE_EFFORT |
v2.1.133 | Hooks の入力 JSON に effort.level(low/medium/high/xhigh/max)が追加。Bash ツールのコマンドからも $CLAUDE_EFFORT 環境変数として読める |
公式ドキュメント |
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN |
v2.1.132 | =1 でフルスクリーンの alternate-screen renderer を強制オフにし、ターミナル native scrollback で会話を保持。Cmd+f や tmux copy mode が通常通り動作 |
公式ドキュメント |
注目アップデート1 worktree.baseRef で worktree の起点ブランチを選べるようになった
前提 — worktree が「ブランチ起点」を意識する場面
Claude Code の worktree 機能は、--worktree フラグや EnterWorktree ツール、subagent isolation から呼び出します。このとき .claude/worktrees/<name>/ に新しいブランチを切り、そこでセッションを動かします。複数の作業を並列に進めるための仕組みです。
問題は「新しい worktree をどのコミットから生やすか」です。
- リモート最新(
origin/<default-branch>)から生やす: リモートに揃った clean tree。未 push のコミットや作業中の差分は持ち込めない - ローカル
HEADから生やす: 作業中の差分を引き継げる。ただし未 push の状態を別 worktree にも持ち込む
v2.1.128 で、EnterWorktree の起点が origin/<default-branch> から local HEAD に切り替わる変更が入っていました。「ドキュメント通りに直した」という説明でしたが、未 push コミットがあるリポジトリでは挙動が変わって見えます。subagent isolation も同時に同じ動きに変わっています。
何が変わったのか
v2.1.133 で worktree.baseRef 設定が追加されました。"fresh" か "head" の2択で、--worktree・EnterWorktree・subagent isolation のすべてに効きます。
| 値 | 起点 | 結果 |
|---|---|---|
"fresh"(デフォルト) |
origin/<default-branch> |
リモートに揃った clean tree |
"head" |
local HEAD |
未 push コミットや作業中の差分を含む |
公式 CHANGELOG によれば、デフォルトは再び fresh に戻されました。v2.1.128 で HEAD ベースになっていた挙動を差し戻した形です。HEAD ベースを維持したい場合は worktree.baseRef: "head" を明示する必要があります。
設定方法
settings.json に worktree.baseRef を追加します。プロジェクトの .claude/settings.json でも、ユーザーグローバルの ~/.claude/settings.json でも有効です。
{ "worktree": { "baseRef": "head" } }
値は "fresh" か "head" のどちらかだけです。任意の git ref は指定できません。特定の PR から worktree を切るときは --worktree "#1234" を、特定のブランチから切るときは git worktree add を使います。
どちらを選ぶか
公式ドキュメントは「作業中の状態を subagent に任せたい」ケースに "head" を勧めています。
"fresh"が向く場面: 独立した機能を並列で進める。クリーンな状態から始めたい。"head"が向く場面: 進行中の作業を subagent に分担させる。未 push の差分込みでテストや修正を任せたい。
CI や -p での非対話実行では "fresh" の方が安全です。再現性が高く、事故も少なくなります。
注意点・制約
- v2.1.128 以降で
HEADベースの挙動を前提にしていた場合、v2.1.133 にアップデートするとデフォルトがfreshに戻ります。HEADベースを維持したいならworktree.baseRef: "head"を明示してください。 worktree.baseRefは3経路(--worktree・EnterWorktree・subagent isolation)にすべて適用されます。subagent だけ HEAD、--worktreeは origin のような経路別の使い分けはできません。- リモートが未設定、または fetch が失敗するときは
"fresh"指定でも自動的にHEADにフォールバックします(公式ドキュメントの挙動)。"fresh"を期待しているのに差分が混ざる場合は、ネットワーク失敗を疑ってください。
注目アップデート2 Hooks と Bash ツールが現在の effort を読めるようになった
前提 — effort と effort level
Claude Code の effort(エフォート)は、思考や検索の深さを指定する仕組みです。/effort コマンドや --effort フラグで low / medium / high / xhigh / max のどれかを選びます。重い refactor では xhigh に上げ、定型編集では low に下げる、という使い分けが一般的です。
これまで Hooks や Bash ツールからは「いま effort がどのレベルか」を知る手段がありませんでした。effort に応じてログ粒度を変える、max のときだけ重い静的解析を走らせる、といった運用を組むには、effort の値を hook 内で再構成する必要がありました。
何が変わったのか
v2.1.133 で次の2つが追加されました。
- Hooks の入力 JSON に
effortオブジェクト(levelフィールド) - Bash ツールに
$CLAUDE_EFFORT環境変数
返るのは そのターンの実 effort です。モデルが指定された effort をサポートしない場合は、downgrade 後の値が返ります(例: xhigh 指定でもモデルが high までなら high)。
利用できるのは PreToolUse / PostToolUse / Stop / SubagentStop など、tool-use コンテキスト内のイベントです。モデルが effort をサポートしている場合に限ります。
/effort xhigh の状態で、Claude Code のシェルモード(! プレフィックス)から echo $CLAUDE_EFFORT を実行した結果。subprocess に effort 値が渡っており、シェルからそのまま読める
注目アップデート3 CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN でターミナル スクロールバックが可能に
前提 — fullscreen renderer と alternate screen buffer
Claude Code は v2.1.89 で fullscreen rendering(フルスクリーン描画モード)を導入しました。v2.1.110 以降は /tui fullscreen だけで切り替えられます。vim や htop と同じく、ターミナルの alternate screen buffer(代替画面バッファ)に描画します。フリッカー(ちらつき)を抑え、長時間セッションでもメモリ使用量を膨らませない設計です。VS Code 統合ターミナル・tmux・iTerm2 など、描画スループットがボトルネックになりやすい環境ほど効果が出ます。
ただし副作用があります。alternate screen buffer に描画すると、ターミナルの native scrollback(標準スクロールバック)から会話が消えます。Cmd+f 検索や tmux の copy mode は会話履歴を見つけられません。Claude Code 自体は Ctrl+o でトランスクリプトモードに入って [ で書き戻せますが、「ターミナルの普通のスクロールで遡る」操作はできなくなっていました。
X 上でも不満が継続的に出ていました。「scrollback が壊れたので v2.1.87 にピン留めし続けている」「scrollback がないのが悲しい」など、native scrollback で履歴を読みたい層との不整合が目立っていました。
何が変わったのか
v2.1.132 で CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 環境変数が追加されました。これを設定して起動すると、tui 設定がフルスクリーンでも 強制的に classic renderer(旧来の描画)で立ち上がります。classic renderer は会話をターミナルの native scrollback に書き出すため、Cmd+f・tmux copy mode・iTerm2 の検索などが普通に使えます。
公式ドキュメント(fullscreen.md)に書かれているフルスクリーンの切り方は3つです。
| 状況 | 対応 |
|---|---|
| 一時的にフルスクリーンを切る | /tui default |
CLAUDE_CODE_NO_FLICKER=1 で有効化していた |
その環境変数を unset |
tui 設定によらず常に classic を強制したい |
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 を設定 |
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN の強みは、tui 設定を上書きする点です。dotfiles を複数マシンで共有していて、片方は fullscreen・片方は classic にしたい、といった場面では設定を分けるより環境変数で上書きするほうが楽です。
設定方法
シェルの起動スクリプト(.zshrc / .bashrc)に書くのが一般的です。
# ~/.zshrc export CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1
特定のセッションだけ classic で起動したいときは、コマンド単位で渡します。
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 claude
「普段は classic、特定の作業だけフルスクリーン」のときは、環境変数を unset してから claude を起動します。
注意点・制約
- classic renderer はフルスクリーンの利点(フリッカー抑制・メモリ平坦化・マウスサポート)を 失います。長時間セッションでちらつきやメモリ増加が気になるときは、フルスクリーンに戻したほうが快適です。
CLAUDE_CODE_DISABLE_ALTERNATE_SCREENは/tuiの保存設定よりも優先されます。フルスクリーンを使いたいときは環境変数を unset してください。- fullscreen renderer は research preview の段階で、デフォルト挙動が変わる可能性があります。今回の
DISABLE_ALTERNATE_SCREENは、fullscreen をデフォルトにしたい運営側と native scrollback を手放したくないユーザー側の折り合いをつけるノブと考えるのが自然です。
既存コマンドのアップデート
今週は新しいスラッシュコマンドや claude サブコマンドの追加はありませんでした。既存コマンドの変更で、運用に効きそうなものを 3 つ取り上げます。
/mcp の表示強化(v2.1.128, v2.1.132)
/mcp の表示が 接続状態の解像度を上げる方向で改善されました。v2.1.128 で接続済みサーバーのツール数が表示されるようになり、tools/list でゼロを返すサーバーは別扱いで警告されます。v2.1.132 では、接続自体は成功するが tools/list で失敗するケースが「0 tools」と紛れていた問題を、1 度リトライした上で「connected · tools fetch failed」と表示するように直されました。
MCP サーバーを多数つないでいる環境で、「動いている」「動いてるけどツールが取れていない」「認証が要る」を /mcp 一覧から区別できるようになり、原因切り分けの一発目に使える画面になっています。
/context の ASCII グリッド流出修正(v2.1.129)
/context のトークン使用量を可視化するための ASCII グリッドが 会話本体に流れ込んでいたバグが修正されました。1 回呼び出すごとに 約 1.6k トークンが context window を浪費していた状態で、/context を頻繁に叩く運用ほど見えないコストが積み上がっていました。修正後は表示はそのままで、コンテキスト消費だけが消える形なので、/context を多用する場合は v2.1.129 以降に上げておく価値があります。
/effort のセッション間伝染バグ修正(v2.1.133)
/effort を 1 つのセッションで切り替えると、他の同時セッションの effort まで一緒に動くバグが修正されました。あわせて IDE 側からの effort 変更が無音で drop される問題も同時に直されています。並列セッションを effort ごとに使い分けている環境(軽い作業は low、重いリファクタは xhigh)では、片方を変えるともう片方も巻き込まれていたため、並列セッション運用への実害が大きい修正です。
その他の変更点
| 変更点 | バージョン | 参照 |
|---|---|---|
--plugin-dir が .zip プラグインアーカイブを受け付けるように。ディレクトリ展開なしで zip 直接ロードが可能に |
v2.1.128 | Releases v2.1.128 |
--channels が console(API key)認証でも使えるように。console 組織で managed settings を使う場合は channelsEnabled: true の設定が必要 |
v2.1.128 | Releases v2.1.128 |
EnterWorktree の base ref が origin/<default-branch> から local HEAD に変更(v2.1.133 で worktree.baseRef 設定として整理し、デフォルトは fresh に戻った) |
v2.1.128 | Releases v2.1.128 |
MCP の workspace がサーバー名として予約。同名の既存サーバーは警告付きでスキップ |
v2.1.128 | Releases v2.1.128 |
Subprocess(Bash・hooks・MCP・LSP)が OTEL_* 環境変数を継承しないように。OTEL 計装アプリを Bash ツールで起動しても CLI の OTLP エンドポイントを拾わない |
v2.1.128 | Releases v2.1.128 |
/mcp が接続済みサーバーのツール数を表示し、tools fetch に失敗したサーバーは「connected · tools fetch failed」を表示 |
v2.1.128 | Releases v2.1.128 |
| サブエージェント progress summaries が prompt cache を効かせていなかったバグを修正(cache_creation が約 1/3 に) | v2.1.128 | Releases v2.1.128 |
--plugin-dir で読み込んだプラグインの自動更新検出が壊れていた /plugin update の修正 |
v2.1.128 | Releases v2.1.128 |
| 1M-context モデルで autocompact ウィンドウが小さい場合に「Prompt is too long」と誤判定されていた問題を修正 | v2.1.128 | Releases v2.1.128 |
| 並列シェルツール呼び出しで、片方の read-only コマンド失敗が兄弟呼び出しまで cancel していた問題を修正 | v2.1.128 | Releases v2.1.128 |
--plugin-url <url> フラグ追加。URL から zip プラグインを fetch してそのセッションだけロード。CI artefact を一行で同僚に渡せる |
v2.1.129 | Releases v2.1.129 |
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE 追加。Homebrew / WinGet インストール環境で設定すると、Claude Code がバックグラウンドで upgrade コマンドを実行し、再起動を促すプロンプトが出る |
v2.1.129 | Releases v2.1.129 |
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 追加。Emacs eat など、自動検出が効かないターミナルで synchronized output を強制有効化 |
v2.1.129 | Releases v2.1.129 |
Plugin manifest の themes / monitors は "experimental": { ... } 配下に宣言する形に。トップレベル宣言は当面動くが claude plugin validate で警告 |
v2.1.129 | 公式ドキュメント |
ゲートウェイの /v1/models モデル発見が opt-in 化(CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1)。v2.1.126〜v2.1.128 では自動だった |
v2.1.129 | Releases v2.1.129 |
Ctrl+R 履歴ピッカーがデフォルトで全プロジェクト横断検索に戻る(v2.1.124 以前の挙動)。Ctrl+S で現在のプロジェクト/セッションに絞り込み |
v2.1.129 | Releases v2.1.129 |
skillOverrides 設定が動作するように(off で model と / の両方から非表示、user-invocable-only で model のみ非表示、name-only で description 圧縮) |
v2.1.129 | Releases v2.1.129 |
/context が ASCII 可視化グリッドを会話に流して 1.6k トークンを浪費していたバグを修正 |
v2.1.129 | Releases v2.1.129 |
| 1時間 prompt cache TTL が 5 分に silent downgrade されていた問題を修正 | v2.1.129 | Releases v2.1.129 |
Bash(mkdir *) / Bash(touch *) などの allow ルールがプロジェクト内パスで効いていなかった問題を修正 |
v2.1.129 | Releases v2.1.129 |
| Wake-from-sleep 直後の OAuth refresh race で全セッションがログアウトする問題を修正 | v2.1.129 | Releases v2.1.129 |
VS Code 拡張が Windows で起動失敗していた問題を修正(バンドル SDK の hardcoded パスに起因する createRequire polyfill バグ) |
v2.1.131 | Releases v2.1.131 |
Mantle エンドポイントの認証が x-api-key ヘッダ欠落で失敗する問題を修正 |
v2.1.131 | Releases v2.1.131 |
CLAUDE_CODE_SESSION_ID 環境変数を Bash ツール subprocess に追加。hooks に渡している session_id と同じ値で、Bash 内のスクリプトからセッション識別子を読める |
v2.1.132 | Releases v2.1.132 |
| Ctrl+V 画像ペースト中に「Pasting…」フッターヒントを表示 | v2.1.132 | Releases v2.1.132 |
外部 SIGINT(IDE stop ボタン・kill -INT)でも graceful shutdown が走るように。terminal mode 復元と --resume ヒント表示が行われる |
v2.1.132 | Releases v2.1.132 |
--resume が no low surrogate in string で失敗する問題を修正(tool error truncation が emoji を分割していたケース) |
v2.1.132 | Releases v2.1.132 |
plan mode を -p --continue / --resume で再開した時に --permission-mode が無視される問題を修正 |
v2.1.132 | Releases v2.1.132 |
| stdio MCP サーバーが non-protocol データを stdout に書き続けると RSS が 10GB 超まで growth する問題を修正(unbounded memory growth) | v2.1.132 | Releases v2.1.132 |
MCP サーバーが connect は成功するが tools/list で失敗するケースが silent に「0 tools」表示されていた問題を修正。1 度リトライ後「connected · tools fetch failed」を /mcp に表示 |
v2.1.132 | Releases v2.1.132 |
認証されていない claude.ai MCP connector が「failed」表示になる問題を「needs auth」に修正。headless -p モードで非トランジェント 4xx をリトライしていた問題も同時修正 |
v2.1.132 | Releases v2.1.132 |
Bedrock / Vertex で ENABLE_PROMPT_CACHING_1H 設定時の 400 エラーを修正 |
v2.1.132 | Releases v2.1.132 |
| Cursor / VS Code 1.92–1.104 のマウスホイールスクロールが速すぎる問題を、上流 xterm.js のバグ回避で修正 | v2.1.132 | Releases v2.1.132 |
| JetBrains IDE 2025.2 ターミナルでスクロールホイールが暴走する問題を修正 | v2.1.132 | Releases v2.1.132 |
ステータスラインの context_window トークン数が累積セッション合計を表示していた問題を修正(現在のコンテキスト使用量に) |
v2.1.132 | Releases v2.1.132 |
sandbox.bwrapPath / sandbox.socatPath managed setting 追加(Linux/WSL)。bubblewrap と socat バイナリの場所を組織側で固定できる |
v2.1.133 | Releases v2.1.133 |
parentSettingsBehavior admin-tier key 追加('first-wins' / 'merge')。SDK managedSettings(parent tier)をポリシーマージに opt-in できる |
v2.1.133 | Releases v2.1.133 |
| 並列セッションが 401 でデッドエンドする問題を修正(refresh-token race で共有 credentials が消える) | v2.1.133 | Releases v2.1.133 |
HTTP(S)_PROXY / NO_PROXY / mTLS が MCP OAuth flow(discovery・dynamic client registration・token exchange・token refresh)全体で無視されていた問題を修正 |
v2.1.133 | Releases v2.1.133 |
--add-dir / SDK additionalDirectories 経由で渡したマップトネットワークドライブで Read/Write/Edit が拒否される問題を修正 |
v2.1.133 | Releases v2.1.133 |
Remote Control の stop/interrupt が claude.ai 側からだとローカル Esc と同等のキャンセルになっていなかった問題を修正 |
v2.1.133 | Releases v2.1.133 |
/effort を 1 セッションで変えると他の同時セッションの effort も変わる問題を修正。IDE からの effort 変更が無音で drop される問題も同時修正 |
v2.1.133 | Releases v2.1.133 |
Subagents が project / user / plugin の skill を Skill ツール経由で発見できない問題を修正 |
v2.1.133 | Releases v2.1.133 |
| メモリ使用量改善: メモリプレッシャー下で warm-spare バックグラウンドワーカーをリリース | v2.1.133 | Releases v2.1.133 |
claude --help が --remote-control を --remote-control-session-name-prefix と並べて表示するように |
v2.1.133 | Releases v2.1.133 |
settings.autoMode.hard_deny 追加。auto mode classifier ルールで「ユーザー意図や allow 例外に関係なく無条件にブロック」を表現できる。soft_deny の兄弟だが allow 例外や $defaults sentinel で上書きできない点が異なる |
v2.1.136 | Releases v2.1.136 |
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL 追加。OpenTelemetry 経由でレスポンスを収集している企業向けに、セッション品質サーベイを再有効化 |
v2.1.136 | Releases v2.1.136 |
.mcp.json / プラグイン / claude.ai connector の MCP サーバーが、VS Code 拡張・JetBrains プラグイン・Agent SDK で /clear 後に消える問題を修正 |
v2.1.136 | Releases v2.1.136 |
| MCP OAuth refresh token が複数サーバーで同時 refresh するとロストする問題を修正。リモート MCP を多数つないでいる環境での日次再認証ループが解消 | v2.1.136 | Releases v2.1.136 |
| 並行 credential write が freshly-rotated OAuth token を上書きして強制再ログインに陥るレアケースを修正 | v2.1.136 | Releases v2.1.136 |
--resume / --continue が プロジェクトパスにアンダースコアを含むセッションを見つけられない問題を修正 |
v2.1.136 | Releases v2.1.136 |
plan mode が Edit(...) allow ルールにマッチするファイル書き込みをブロックしていなかった問題を修正 |
v2.1.136 | Releases v2.1.136 |
| Extended thinking が tool call 後に redacted thinking block を出すと API が 400 を返す問題を修正 | v2.1.136 | Releases v2.1.136 |
| WSL2: Windows clipboard からの画像 paste が xclip / wl-paste で読めないとき、PowerShell フォールバックで動作するように | v2.1.136 | Releases v2.1.136 |
@ ファイルピッカーがミッドセッション作成ファイル・100 件超のディレクトリでヒットしない問題を修正 |
v2.1.136 | Releases v2.1.136 |
/usage 週次リセット表示が「時刻」になっていた問題を「カレンダー日付」に修正 |
v2.1.136 | Releases v2.1.136 |
AskUserQuestion が複数選択回答を配列で受け取った場合に discard していた問題を修正 |
v2.1.136 | Releases v2.1.136 |
CronList 出力に qualifier とスケジュール済みプロンプトが欠落していた問題を修正 |
v2.1.136 | Releases v2.1.136 |
| VS Code 拡張が Windows で activate に失敗する問題を修正 | v2.1.137 | Releases v2.1.137 |
| 内部 fix のみ | v2.1.138 | Releases v2.1.138 |
まとめ
今週の Claude Code は、worktree のブランチ起点・hook の effort 連動・TUI 描画の3箇所で「ユーザー側で切り替えられる選択肢」が増えた週でした。いずれも v2.1.128〜v2.1.132 で挙動が動いた後の整理で、直前のリリースで変わった既定値を呼び戻せる経路が明示されたのが特徴です。
不具合修正も多く入りました。v2.1.133 では並列セッションの 401 デッドエンド、MCP OAuth flow の HTTP(S)_PROXY 無視、subagents の skill 発見バグ、ネットワークドライブの Read/Write/Edit 拒否などが解消されています。v2.1.136 でも MCP OAuth refresh token のロストや plan mode の Edit ブロック漏れが直り、MCP・OAuth・並列セッション周りの安定化が大きく前進しました。
運用面の注意として、v2.1.128 から v2.1.137 の間で EnterWorktree のベースが揺れています。--worktree や subagent isolation を多用している環境では、v2.1.133 にアップデートしたタイミングで worktree.baseRef を明示しておくと安全です。デフォルトが fresh に戻ったことで、未 push の差分を前提にしていたワークフローはサイレントで挙動が変わります。今週分で worktree・MCP・auto mode のノブを一度見直しておくのがよさそうです。