原文(日本語に翻訳)
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への入力を再生成するような処理は、この修正後も推奨されません
- レート制限エラーの場合、適切な待機時間を設けてから再試行することを推奨します