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 2.1.309〜318まとめ:claude -pが黙って成功しなくなり、ultrathinkはxhighに

0
Posted at

3 行まとめ

  • 2026年10月22日〜11月4日の Claude Code(v2.1.309〜v2.1.318)は、claude -p の「失敗したのに exit 0」を潰す修正がいくつも入った。cron や CI で無人実行しているなら、この期間の更新がいちばん効く
  • 対話側では、ultrathink が Opus 5.5 / Sonnet 5.5 / Haiku 5.5 / Fable 5.1 でターンを xhigh effort で走らせるようになった。オフにする環境変数と、サブエージェントの effort を個別に決める環境変数も追加されている
  • 安全側の変更として、作業ディレクトリ外への書き込みを全モードで拒否する設定と、アカウントのメールアドレスをネットワークに送る前に確認するチェックが入った。一方で、sed -i は /rewind で戻せなくなった

公式の changelog では、この2週間で v2.1.309 から v2.1.318 までが出ている(ページ上に v2.1.313 と v2.1.315 の項目は見当たらなかった)。

バージョン 日付
2.1.309 2026-10-22
2.1.310 2026-10-23
2.1.311 2026-10-26
2.1.312 2026-10-27
2.1.314 2026-10-30
2.1.316 2026-10-31
2.1.317 2026-11-03
2.1.318 2026-11-04

Enterprise 向けの gateway や Claude Tag(Slack 連携)、クラウドセッションの管理画面まわりの変更も多い。ここでは個人開発で Claude Code を使っている立場で、効くものに絞って拾う。

なお、手元の Claude Code はこの記事を書いている時点で v2.1.296 だった。以下は changelog の記述を読み解いたもので、全項目を手元で再現したわけではない。前回(9月分)のまとめはこちら。

claude -p が「黙って成功」しなくなった

この期間でいちばん大事なのはここだと思う。claude -p(ヘッドレス実行)が 失敗したのに終了コード 0 を返す パターンが、立て続けに潰されている。

バージョン 修正内容(changelog の要約)
2.1.314 起動に失敗したとき、何も出力せずに exit 0 していた → エラーを出して exit 1(2.1.316 にも同じ文面の記載あり)
2.1.317 ディスクフルやクォータ超過で transcript や ~/.claude.json の書き込みが失われても exit 0 だった → エラーを出し、text / json 出力では exit 1
2.1.318 mod(Claude Code の拡張機構)が turn.step をフックしていると、API エラーで途中で切れた応答が成功扱いになっていた(Agent SDK のセッションも同様)
2.1.318 失敗したカスタムスラッシュコマンドや、Claude しか呼べないコマンドが、claude -p で何も出力しなかった
2.1.312 名前が不正なコマンドが1つあると全コマンドの読み込みが止まり、claude -p が無出力になることがあった

cron で claude -p ... && 次の処理 のように終了コードで分岐している場合、これまでは「起動すらしていないのに成功」が起こりえた。シェルから見ると成功なので、後続の処理がそのまま走ってしまう。

2.1.317 の注記には「Full NFS exports may be missed」とあり、NFS の容量不足は検知しきれない場合があるようだ。ホームディレクトリを NFS に置いているなら、引き続き注意がいる。

ログインの期限切れを事前に知らせる(2.1.318)

claude.ai のサブスクリプションでログインしたまま claude -p を無人で回していると、ある日ログインの期限が切れて止まる。2.1.318 では、その事前検知の手段が増えた。

  • claude auth status に loginExpiresAt(保存されたログインの期限)が出る
  • claude -p の JSON 結果に credential_expires_at が入る
  • claude -p のテキスト出力で、期限の 10日前から stderr に1行の警告が出る
  • 期限切れでサインインに失敗したときは、その旨を表示する。claude -p では claude auth login と claude setup-token を案内する

関連して 2.1.317 では、claude auth status がトークン更新の保存を待たずに終了してしまい、次の実行でサインアウトされることがある不具合も直っている。ログイン状態を監視するために claude auth status を定期実行しているなら、これも効く。

手元の v2.1.296 で claude auth status を叩いてみると、loggedIn や subscriptionType は出るが、期限のフィールドはまだなかった。JSON 出力をパースして監視しているなら、credential_expires_at を見て数日前に通知を飛ばすのが素直な使い方だと思う。

自作の投資分析ツールの日次バッチは、すでに claude -p から Anthropic API に移行済みだ。サブスクのログイン期限に縛られたくない、というのも移行理由の1つだった。それでも claude -p で無人運用を続けるなら、今回の更新はぜひ当てておきたい。

ultrathink が xhigh effort になった(2.1.311 / 2.1.316)

2.1.311 で、ターミナルで ultrathink と打つと、Anthropic API 経由の Opus 5.5・Sonnet 5.5・Haiku 5.5・Fable 5.1 では、そのターンを xhigh effort で実行するようになった。Claude が作業している最中に打つと、そのターンの残りの effort が引き上げられる。

あわせて、虹色のハイライトは effort を実際に引き上げられる場所でだけ表示されるようになった。引用中の ultrathink や、ファイルパスの一部に含まれる場合には反応しない。2.1.316 では VS Code 拡張も同じ挙動になっている。

関連する環境変数も2つ増えた。

環境変数 追加 内容
CLAUDE_CODE_DISABLE_ULTRATHINK 2.1.316 ultrathink キーワードを無効にする
CLAUDE_CODE_SUBAGENT_EFFORT 2.1.316 ほかに指定がないとき、サブエージェントを走らせる effort を決める(これまではセッションの effort を引き継いでいた)

2.1.317 では、メインの会話と違うモデルで動くサブエージェントやチームメイトが、そのモデルに保存された effort(なければデフォルト)を使うようになった。セッションの effort はもう引き継がない。メインを max で回していても、別モデルのサブエージェントがセッションの max に引きずられることはなくなる。

5.5世代は adaptive thinking が前提で、深さの主なつまみは effort だ。とくに Opus 5.5 と Fable 5.1 は thinking を無効にできない。そのため「どのエージェントをどの effort で走らせるか」がコストに直結する。調査系のサブエージェントは low、メインは high のように、意図して分けられるようになったのは大きい。

書き込み・送信まわりの安全策

作業ディレクトリ外への書き込みを全モードで拒否(2.1.314)

permissions.blockWritesOutsideWorkingDirectories が追加された。有効にすると、Write・Edit・NotebookEdit は どの権限モードでも 作業ディレクトリ外のパスへの書き込みを拒否する。

auto モードや bypass で長時間走らせていると、ホームディレクトリのドットファイルや別リポジトリを触られるのが怖い。それを設定1行で塞げる。ただし対象は Write・Edit・NotebookEdit の3ツールなので、Bash 経由の書き込みまでは止まらない点に注意したい。

メールアドレスを送る前に確認する(2.1.317)

Web ツールやシェルツールの呼び出しが、アカウントのメールアドレスをネットワークに送ろうとしたときに確認が入るようになった。プロンプトインジェクションでメールアドレスを外部に送らせる、という類の攻撃への対策だろう。

/schedule が頼んでいないコネクタを警告(2.1.317)

クラウドの定期実行タスクを新しく作るとき、頼んでいないコネクタが付いていたら警告し、外し方を案内するようになった。

地味に挙動が変わったもの

sed -i は /rewind で戻らなくなった(2.1.309)

これまで sed -i は、ファイル編集のプレビューに見立てた特殊な扱いを受けていた。2.1.309 で、通常の Bash と同じ権限プロンプトで、書いたとおりに実行されるようになった。そのかわり、ほかの Bash による編集と同じく /rewind では戻らない。「sed でまとめて置換して、まずければ rewind」という使い方をしていたなら、git で戻す前提に切り替える必要がある。

Read の「変更なし」スタブが廃止(2.1.317)

同じファイルを変更なしでもう一度 Read したとき、「前回から変更なし」という短い応答で済ませる仕組みが削除された。今後は毎回中身が返る。コンテキスト上の判断ミスは減るはずだが、同じ大きいファイルを何度も読ませるとトークンを食う。

バックグラウンドのサブエージェントのシェルを3分で退避(2.1.318)

バックグラウンドのサブエージェントが走らせたシェルコマンドは、全プロバイダで 3分経つとバックグラウンドに回されるようになった。changelog には「so the prompt cache doesn't expire while it runs」とある。長いテストやビルドを待つ間にプロンプトキャッシュが切れ、再開時にキャッシュミスでコストが跳ねるのを防ぐ狙いだ。

使用量制限の呼び方が「5-hour limit」に(2.1.312)

利用上限のメッセージで「session limit」と呼んでいたものが「5-hour limit」に変わった。VS Code では、リセットが「Resets at 3:10 PM」のような時刻表示になる。挙動の変更ではないが、「セッション」という言葉が会話のセッションと紛らわしかったので、分かりやすくなった。

アイドル時の自動 compaction(2.1.314)

VS Code と Claude Desktop の Code タブで、20万トークン超の会話を放置すると要約が作られるようになった。プロンプトキャッシュが切れた状態で次のメッセージを送ると、その要約が使われる。導入直後の 2.1.318 では、この compaction が要約ではない返答で会話を置き換えてしまう不具合も修正されている。

Opus 4.8 の fast mode は11月30日で終了

2.1.316 の changelog に、API 側の告知と同じ内容が載っている。

Deprecated fast mode for Opus 4.8 as of October 30, 2026; it will be removed on November 30, 2026. After removal, fast mode requests on Opus 4.8 return an error and do not fall back to standard Opus 4.8. Migrate to Opus 5.5 to keep the speedup

ポイントは「標準速度の Opus 4.8 にフォールバックせず、エラーになる」ことだ。Claude Code の fast mode ドキュメントでは、期限までに次のどちらかを選ぶよう案内されている。

  • fast mode を続けるなら、/model で Opus 5.5 に切り替える(Claude Code v2.1.280 以上が必要。切り替えても fast mode はオンのまま)
  • Opus 4.8 を使い続けるなら、/fast off で標準速度に戻す

料金表では、fast mode は Opus 5.5 が入力 $8 / 出力 $40(100万トークンあたり)、Opus 4.8 が $10 / $50 なので、Opus 5.5 に移るほうが単価は下がる。

Agent SDK・hooks まわり

自作のエージェントやフックを組んでいる場合に関係しそうなもの。

  • onFailure: "block"(2.1.317): Agent SDK のフックのコールバックが失敗したとき、これまではアクションをそのまま通していた。onFailure: "block" を指定すると止められる。ガード目的のフックなら、失敗時は止めるほうが安全側だ
  • フックの同時実行上限(2.1.312): prompt / agent フックは、1セッションあたり同時に最大24個まで(サブエージェント込み)になった。イベントのタイムアウトを超えて待っているものは、別枠で最大12個まで。timeout に1秒未満を指定すると1秒として扱われる
  • mod の $.model.fork に effort オプション(2.1.318): ちょっとした裏方の処理を、セッションの effort に関係なく low で走らせられる

まとめ

  • 無人運用の観点では、v2.1.314 / v2.1.317 / v2.1.318 の claude -p 修正が重要。起動失敗やディスクフル、API エラーでの打ち切りが exit 0 で素通りしていたケースが潰された。ログイン期限も credential_expires_at で事前に分かるようになった
  • 対話の観点では、ultrathink = xhigh、サブエージェントの effort が分離されたことが大きい。adaptive thinking 前提の5.5世代では、effort の配分がそのままコスト設計になる
  • 気をつけたい変更は2つ。sed -i が /rewind で戻らなくなったこと、そして Opus 4.8 の fast mode が11月30日にエラーになること(Opus 5.5 へ移るか /fast off)
  • 作業ディレクトリ外への書き込みを止める permissions.blockWritesOutsideWorkingDirectories は、auto モードで長時間回すなら入れておいて損はない

この記事は Zenn にも同じ内容を投稿しています。

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?