Skip to content

原文(日本語に翻訳)

複数のClaude Codeインスタンスが同時に実行された際に、認証情報を消去してしまう可能性があった設定ファイルの破損を修正しました。

原文(英語)

Fixed config file corruption that could wipe authentication when multiple Claude Code instances ran simultaneously

概要

複数のClaude Codeインスタンスが同時に起動・実行された場合に、設定ファイル(.credentials.json など)が破損し、保存されていた認証情報が消去されてしまうバグが修正されました。この問題は、複数のターミナルウィンドウで同時にClaude Codeを使用したり、CI/CD環境で並行ジョブとして実行した場合などに発生していました。修正により、複数インスタンスの同時実行でも設定ファイルが安全に保たれるようになります。

基本的な使い方

問題が発生していたシナリオ

bash
# ターミナル1でClaude Codeを起動
claude
# ログインして認証情報が保存される

# ターミナル2でも同時にClaude Codeを起動
claude
# → 両者が同時に設定ファイルを読み書きするため
#   ファイルが破損し、認証情報が失われる場合があった

# 症状: 次回起動時に再ログインを求められる
# または: 意図しないログアウト状態になる

修正後の動作

bash
# 複数のインスタンスを同時起動しても安全
claude  # ターミナル1
claude  # ターミナル2(同時起動)

# 設定ファイルが適切にロックされ、破損しない
# 認証情報が保持される

実践例

複数プロジェクトの並行作業

bash
# 複数プロジェクトで同時にClaude Codeを使用
# プロジェクトA
cd ~/projects/project-a && claude &

# プロジェクトB(同時起動)
cd ~/projects/project-b && claude &

# 改善前: どちらかのセッション終了後に認証情報が消える
# 改善後: 両方のセッションが安全に動作し、認証情報が保持される

CI/CDパイプラインでの並行ジョブ

bash
# 並行して実行される複数のCIジョブ
# .github/workflows/ci.yml
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - name: コード分析
        run: claude --headless -p "コードを分析してください"

  test:
    runs-on: ubuntu-latest
    steps:
      - name: テスト確認
        run: claude --headless -p "テストを確認してください"

# 両ジョブが同じ設定ファイルにアクセスする場合でも安全

開発環境での複数ウィンドウ利用

bash
# tmuxやscreenで複数ペインを使用する開発者向け
# 各ペインでClaude Codeを同時使用しても認証情報が保持される

# ペイン1
claude

# ペイン2(同時)
claude

# ペイン3(同時)
claude

# 修正後: すべてのペインで安定して動作

認証情報の確認方法

bash
# 認証状態の確認
# Claude Codeを起動してプロンプトが正常に表示されるか確認

# 設定ファイルの場所(確認用)
ls -la ~/.claude/
# .credentials.json や settings.json が正常に存在すること

# 問題が発生した場合の再認証
claude login

技術的な背景

この問題は、複数のプロセスが設定ファイルを同時に読み書きする際のファイルロック(排他制御)の欠如が原因でした:

  1. プロセスAが設定ファイルを読み込む
  2. プロセスBが同時に設定ファイルを読み込む
  3. プロセスAが変更を書き込む
  4. プロセスBが(古い内容に基づいた)変更を書き込み、プロセスAの変更を上書き
  5. 認証情報などが失われる(Last-Write-Wins問題)

修正後は、ファイルへのアクセスが適切に同期・調整されるようになりました。

注意点

  • この修正は自動的に適用されます。追加の設定は不要です
  • 過去のバグにより認証情報が失われた場合は、claude login で再認証してください
  • CI/CD環境での並行実行では、各ジョブが独立した認証情報を持つよう設計することも検討してください(ANTHROPIC_API_KEY 環境変数の使用など)
  • バックアップとして、認証情報を環境変数で管理する方法も有効です:
    bash
    export ANTHROPIC_API_KEY="your-api-key"

関連情報