Claude Code で Pre-flight check is taking longer than expected.
Claude Codeを利用していると、以下のような警告メッセージが表示され、Bashコマンドを実行するまでに2分ほど待たされるという事象に遭遇しました。
⚠️ [BashTool] Pre-flight check is taking longer than expected. Run with ANTHROPIC_LOG=debug to check for failed or slow API requests.
原因調査
Claude Codeの内部コードを調査しました。
調査の結果、この警告メッセージはClaude Codeが持つ「Pre-flight check」という内部的な安全機能に関連していることがわかりました。これは、AIが生成したBashコマンドを実行する前に、そのコマンドが安全かどうかを検証するための仕組みです。
このPre-flight checkには10秒のタイムアウトが設定されており、時間内に検証が完了しない場合に例の警告が表示されます。このチェックでは通常の対話で使われるモデル(例: Sonnet, Opus)とは異なり、応答速度を重視してデフォルトで Claude 3.5 Haiku という軽量なモデルが使用される仕様になっていました。
遅延の根本原因と解決策
調査結果を踏まえ、AWS環境を確認したところ、Bedrockのモデルアクセス設定で Claude 3.5 Haiku が有効化されていませんでした。
Claude CodeはPre-flight checkのために Haiku モデルを呼び出そうと試みますが、モデルが無効化されているため応答を得られず、何度もタイムアウトしていたようです。
そこで Claude 3.5 Haiku のアクセスを有効にしたところ、Pre-flight checkは即座に完了するようになり、長時間の待機や警告メッセージは完全に解消されました。
その他の回避策
何らかの理由で Claude 3.5 Haiku を有効化できない、または別のモデルを利用したい場合、環境変数を設定することでPre-flight checkに使用するモデルを明示的に指定することも可能です。
ANTHROPIC_SMALL_FAST_MODEL という環境変数に、Bedrockで利用可能なモデルIDを設定します。例えば、Claude 3.5 Sonnet を使用する場合は、以下のように設定します。
export ANTHROPIC_SMALL_FAST_MODEL=anthropic.claude-3-5-sonnet-20241022-v2:0
この設定により、Pre-flight checkは指定されたモデルで行われるようになり、Haiku が利用できない場合でも遅延を回避できます。ただし、指定するモデルによっては応答速度が Haiku よりも遅くなる可能性がある点には注意が必要です。
Discussion