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 v2.1.295 が変えた7つの挙動——フック失敗のブロック化・429待ち上限・バックグラウンド修正まとめ【2026-10-09速報】

0
Posted at

コマンドフックを設定していたのに、タイムアウトしたまま次の処理に進んでいた。onFailure のデフォルトは continue(失敗してもスルー)なので、フックが止まるはずのアクションが実行されていた——気づいたのは、ログを見返したときだった。

v2.1.295 でこの挙動に「ブロック」の選択肢が追加された。2026-10-09 にリリースされた Claude Code v2.1.295 は Added 14 件・Fixed 33 件という大型アップデートで、全変更は GitHub のリリースノート に載っている。この記事では無人・スケジュール実行で Claude Code を使っている現場に直結する7点を整理する。

この記事で分かること:

  • onFailure: "block" でフック失敗時に処理を止める方法
  • CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS で429/529の無限待ちに上限をつける方法
  • claude -p の出力ドロップ・/loop の無音停止・FORCE_COLOR=3 引き継ぎの修正内容

1. フック失敗が「通過」から「ブロック」に変わった——onFailure: "block"

コマンドフックや HTTP フックを「処理の前に必ず通す関門」として使っている場合、onFailure のデフォルトは "continue"(フックが失敗・タイムアウトしても次へ進む)だった。

v2.1.295 で "block" が追加された。設定例は次の通り:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "check-safety.sh",
        "timeout": 5000,
        "onFailure": "block"
      }]
    }]
  }
}

onFailure: "block" を設定すると、フックが起動できない・タイムアウト・想定外の終了コードで終わった場合に、対象の操作をブロックする。

onFailure を設定しなければデフォルトは引き続き "continue" のまま。既存フックの挙動は変わらない。新しく「止めたい」フックには明示的に書く必要がある。

セキュリティ用途(実行前チェック)やコスト管理用途(過大なリクエストを弾く)でフックを使っているなら、要確認の変更だ。

2. 429/529 の「無限待ち」に上限をつける——CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS

無人実行(CLAUDE_CODE_RETRY_WATCHDOG=true)の状態で 429(Rate Limit)や 529(Overloaded)が返ると、Claude Code は自動でリトライを続ける。これまで上限はなく、スケジュール実行の場合に「次のジョブが始まっても前のジョブがまだ待っている」という事態が起きる可能性があった。

v2.1.295 で CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS が追加された。

CLAUDE_CODE_RETRY_WATCHDOG=true \
CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS=1800000 \
claude -p "...プロンプト..."

上の例では最大 30 分(1,800,000 ms)待ってから諦める。スケジュール間隔に合わせた値を入れておくと、ジョブの積み上がりを防げる。設定を入れていない既存の自動化タスクは追加を検討したい。

3. claude -p の出力ドロップが修正された

claude -p でバックグラウンドの処理が別ターンを開始すると、前のターンの出力が捨てられる問題があった。スクリプトが Claude の返答を解析して次の処理に渡すケースでは、解析対象が消えて処理が詰まる原因になっていた。

修正内容は「各ターンの返答はそのターンが終了した時点でプリントする」というもの。出力の順序が変わる場合はあるが、内容が落ちることはなくなった。claude -p の出力をパイプやファイルに渡して利用している場合は恩恵を受けやすい。

4. バックグラウンドセッションの /loop が通知なしに止まる問題が修正

/loop をバックグラウンドに移した後、ループが止まっても通知なしに終了していたバグが修正された。あわせて、バックグラウンドに移した後も Esc でキャンセルが効くようになった。

「ループを背景に回して別の作業をしていたら、気づいたら止まっていた」という状況が減る。バックグラウンドでの長時間ループを使っている場合は恩恵がある。

5. バックグラウンドセッションが FORCE_COLOR=3 を引き継ぐ問題が修正

バックグラウンドセッションが FORCE_COLOR=3 を引き継ぐと、Claude が読む出力にカラーエスケープコードが混入する問題があった。出力をスクリプトで解析する構成では、エスケープコードのせいで解析が狂う可能性があった。

夜間の自動実行で「Claude に出力を読ませる」構成を使っているなら、この修正で処理の安定性が上がる。

6. MCP サーバー関連の修正3件

バグ内容 修正内容
ページネーションカーソルが同一のとき、同じページを最大20回リクエストしていた 検出してループを止めるように
アウテージから15秒後に切断→タイトな再接続ループに入っていた バックオフ(最大30秒)を入れて暴走を防止
CSS / JavaScript / XML / フォント類が全て .bin で保存され、Read ツールが拒否していた 拡張子を正しく判定するように

7. claude -p が「何を待っているか」を stderr に出力するようになった

claude -p を起動したまま最後のターンが終わってもプロセスが終了しないとき、何を待っているかを stderr に出力するようになった。「なぜ終わらないのか」が分かるようになり、デバッグ時間が短くなる。あわせて、claude -p がスタックしているときはターミナルが終了待ちである旨も表示されるようになった。

変更の全体像(追加・修正の分類)

カテゴリ Added Fixed
フック・権限 2件(onFailure, --tools修正) 3件
バックグラウンド実行 2件(Backgroundingメッセージ等) 6件
MCP サーバー 0件 3件
Claude apps gateway 5件 4件
その他 UX・バグ 5件 17件

リリースノートの原文は GitHub で確認できる。

まとめ

  • onFailure: "block" でフック失敗を「通過」から「ブロック」に切り替えられる
  • CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS で 429/529 の無限待ちに上限をつけられる
  • claude -p の出力ドロップ・バックグラウンド /loop の無音停止・FORCE_COLOR=3 引き継ぎが修正された

v2.1.295 はバグフィックスが 33 件と多め。特にフックの onFailure: "block" と 429 待ち上限の2つは、無人実行の設定を見直すきっかけになりそうな変更だ。

皆さんの現場で Claude Code をスケジュール実行や CI で動かしている場合、今回の変更で一番気になった項目はどれですか?

技術的な相談(Copilot・AIエージェント構築、60分のビデオチャット)も受け付けています。ご相談の際は「Qiitaを見た」とお書きください:https://coconala.com/services/4209036

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?