Claude Code更新 worktree baseRef・hooks effort・scrollback復活【5/3〜9】

記事タイトルとURLをコピーする

はじめに

サーバーワークスの池田です。

今週(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): --worktreeEnterWorktree の起点ブランチを選べる
  • 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> と local HEAD から選ぶ 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.levellow/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択で、--worktreeEnterWorktree・subagent isolation のすべてに効きます。

起点 結果
"fresh"(デフォルト) origin/<default-branch> リモートに揃った clean tree
"head" local HEAD 未 push コミットや作業中の差分を含む

公式 CHANGELOG によれば、デフォルトは再び fresh に戻されました。v2.1.128 で HEAD ベースになっていた挙動を差し戻した形です。HEAD ベースを維持したい場合は worktree.baseRef: "head" を明示する必要があります。

設定方法

settings.jsonworktree.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経路(--worktreeEnterWorktree・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 だけで切り替えられます。vimhtop と同じく、ターミナルの 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
--channelsconsole(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
--resumeno 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 modeEdit(...) 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 のノブを一度見直しておくのがよさそうです。

池田 智耶(執筆記事の一覧)

ディベロップメントサービス2課

生成AI関連の記事を中心に執筆!