AIコーディング 2026.04.18

Claude Code「Connection timeout」エラーの原因と解決方法|3つの対処法

タグ:Claude Code / エラー対処 / タイムアウト / 接続エラー / トラブルシューティング

エラーの種類を特定する

# 最初の診断コマンド
claude --version  # Claude Codeがインストール済みか確認

# Anthropic APIへの疎通確認
curl -s --max-time 10 https://api.anthropic.com \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "Content-Type: application/json" | head -c 200

# 正常なら {"error":{"type":"not_found_error"...}} が返ってくる
# タイムアウトするなら: curl: (28) Operation timed out after 10000 milliseconds

原因1:ネットワーク接続の問題

# Step 1: DNSとネットワーク疎通確認
ping -c 3 api.anthropic.com
nslookup api.anthropic.com  # 名前解決できるか

# Step 2: HTTPS接続の確認(ポート443)
curl -v --max-time 10 https://api.anthropic.com 2>&1 | grep -E "(Connected|SSL|timeout|error)"

# Step 3: プロキシ設定の確認
echo $HTTPS_PROXY
echo $HTTP_PROXY
echo $NO_PROXY

# VPN使用中の場合:api.anthropic.comをVPNバイパスに追加
# 例(macOS ProxyBypassDomains設定、環境によって異なる):
# networksetup -setproxybypassdomains "Wi-Fi" "api.anthropic.com" "*.anthropic.com"

原因2:タイムアウト値が短い

# デフォルトのタイムアウトを伸ばす(秒)
export CLAUDE_API_TIMEOUT=300  # 5分

# 現在のセッションだけでなく、.zshrcや.bashrcに追加する場合
echo 'export CLAUDE_API_TIMEOUT=300' >> ~/.zshrc
source ~/.zshrc

# 確認
claude "簡単なテスト"

原因3:長時間かかるタスク

大きなコードベースを読み込む・大量のファイルを処理するタスクはタイムアウトしやすいです。

# ❌ タイムアウトしやすい例
claude "この10万行のコードベース全体を分析して問題を全て見つけて"

# ✅ 分割して処理する例
claude "src/api/ ディレクトリの認証関連コードだけを分析して問題点を挙げて"
claude "src/db/ ディレクトリのクエリ最適化について提案して"
# --print フラグで長い処理をパイプする場合のタイムアウト対策
timeout 120 claude --print "長い処理" || echo "タイムアウト - タスクを分割してください"

CI/CD環境でのリトライ実装

#!/bin/bash
# claude_with_retry.sh - タイムアウト時に自動リトライ

retry_claude() {
    local prompt="$1"
    local max_attempts=3
    local wait_seconds=10
    
    for ((i=1; i<=max_attempts; i++)); do
        echo "試行 $i/$max_attempts..."
        
        if timeout 120 claude --print "$prompt"; then
            echo "✅ 成功"
            return 0
        fi
        
        local exit_code=$?
        if [ $exit_code -eq 124 ]; then
            echo "❌ タイムアウト (試行 $i)"
        else
            echo "❌ エラー (exit code: $exit_code)"
        fi
        
        if [ $i -lt $max_attempts ]; then
            echo "${wait_seconds}秒後にリトライ..."
            sleep $wait_seconds
            wait_seconds=$((wait_seconds * 2))  # 指数バックオフ
        fi
    done
    
    echo "全試行が失敗しました"
    return 1
}

# 使用例
retry_claude "このPythonコードをレビューして: $(cat my_script.py)"
# GitHub Actions での設定例
name: AI Code Review

on: [pull_request]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code
      
      - name: Run AI Review with retry
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          CLAUDE_API_TIMEOUT: "120"
        run: |
          for i in 1 2 3; do
            if timeout 120 claude --print "PRの変更点をレビューして: $(git diff HEAD~1)"; then
              break
            fi
            echo "Retry $i/3..."
            sleep $((i * 15))
          done

プロキシ経由の設定

# HTTP(S)プロキシ経由でClaude Codeを使う
export HTTPS_PROXY="http://proxy.company.internal:8080"
export HTTP_PROXY="http://proxy.company.internal:8080"
export NO_PROXY="localhost,127.0.0.1,.company.internal"

# プロキシ認証が必要な場合
export HTTPS_PROXY="http://user:password@proxy.company.internal:8080"

# 設定後に確認
curl -v --proxy $HTTPS_PROXY https://api.anthropic.com 2>&1 | grep -E "(Connected|proxy|error)"

まだ解決しない場合のチェックリスト

□ status.anthropic.com でサービス障害がないか確認
□ claude --version で最新バージョンかチェック(npm update -g @anthropic-ai/claude-code)
□ ANTHROPIC_API_KEY が正しく設定されているか(echo $ANTHROPIC_API_KEY)
□ APIキーがコンソールで有効状態か(console.anthropic.com)
□ 別のネットワーク(スマートフォンのテザリング等)では動くか
□ それでも解決しない場合: github.com/anthropics/claude-code/issues に報告

あわせて読みたい

参考ソース