Skip to content

原文(日本語に翻訳)

APIエラーがストップフックをトリガーし、そのフックがブロッキングエラーをモデルに再送することで無限ループが発生する問題を修正しました。

原文(英語)

Fixed infinite loop when API errors triggered stop hooks that re-fed blocking errors to the model.

概要

APIエラー(レート制限、認証失敗など)が発生してストップフックが実行された場合、そのフックがエラー情報をモデルへの入力として戻すと、再びAPIエラーが発生してストップフックが繰り返し呼ばれる無限ループに陥るバグが修正されました。この修正により、エラー発生時のフック処理が適切に終了するようになります。

基本的な使い方

この修正はバックグラウンドで自動的に適用されます。StopFailure フックを設定している場合でも、APIエラー時に無限ループが発生しなくなります。

json
// settings.json でのフック設定例
{
  "hooks": {
    "StopFailure": [
      {
        "type": "command",
        "command": "notify-send 'Claude Code' 'エラーが発生しました'"
      }
    ]
  }
}

実践例

ユースケース: エラー通知フックの設定

APIエラーが発生したときに通知を送るフックを設定しているケースです。

json
{
  "hooks": {
    "StopFailure": [
      {
        "type": "command",
        "command": "echo 'API error occurred' >> ~/claude-errors.log"
      }
    ]
  }
}

修正前は、このようなフックがAPIエラー発生時に無限ループを引き起こす可能性がありました。修正後はフックが一度実行された後、適切に処理が終了します。

ユースケース: エラー回復フックの安全な実装

エラーが発生したときに外部システムに通知するフック:

bash
#!/bin/bash
# error-handler.sh
echo "$(date): API error detected" >> ~/claude-error-log.txt
# 外部通知サービスへの送信など
curl -s -X POST https://example.com/webhook \
  -d '{"event": "claude_api_error"}'

このスクリプトをフックとして登録する場合、修正後は安全に動作します。

注意点

  • StopFailure フックを設定している環境で特に重要な修正です
  • フック内でClaudeへの入力を再生成するような処理は、この修正後も推奨されません
  • レート制限エラーの場合、適切な待機時間を設けてから再試行することを推奨します

関連情報