VPN07

OpenClaw OAuth複数エージェントでrefresh_token_reused2026:トークン競合の完全対策ガイド

2026-03-09 約18分で読める OAuth マルチエージェント トークン競合

🔑 このエラーに悩まされていませんか?

Error: refresh_token_reused - OAuth refresh token has already been used

複数のOpenClawエージェントが同一のOAuthプロファイル(openai-codex等)を共有している場合、アクセストークンの有効期限が切れた時に複数エージェントが同時にトークン更新を試みます。最初の更新だけ成功し、後続はすべてrefresh_token_reusedエラーになります。これはGitHub Issue #26322で報告された既知バグです。

目次

  1. refresh_token_reusedとは?OAuthの基本を理解する
  2. なぜ複数エージェントで問題が起きるのか
  3. 12時間ごとに必ず発生する理由
  4. 【緊急対処】今すぐrefresh_token_reusedを止める方法
  5. 根本解決策1:エージェントごとに別のOAuthプロファイルを作る
  6. 根本解決策2:CoPilotプロキシを使ってOAuth依存をなくす
  7. 根本解決策3:トークン更新のミューテックス(排他制御)設定
  8. 複数エージェント環境のOAuth設定ベストプラクティス
  9. エージェント数別の推奨構成
  10. VPN接続と複数エージェントOAuthの関係

refresh_token_reusedとは?OAuthの基本を理解する

OAuthでは認証に2種類のトークンを使います:

🔵 アクセストークン

  • APIリクエストに使う実際の鍵
  • 有効期間:約12時間
  • 期限切れ後は使用不可
  • 更新には「リフレッシュトークン」が必要

🟣 リフレッシュトークン

  • 新しいアクセストークンを発行する鍵
  • 使用は1回限り(セキュリティ仕様)
  • 使用後に新しいリフレッシュトークンが発行される
  • 複数回使用するとrefresh_token_reusedエラー

つまり問題は単純です。エージェントAとエージェントBが同じリフレッシュトークンで同時に新しいアクセストークンを発行しようとします。エージェントAが成功すると、そのリフレッシュトークンは無効化されます。数ミリ秒後にエージェントBが同じトークンを使おうとすると「すでに使用済み」エラーになります。

なぜ複数エージェントで問題が起きるのか

OpenClawはX.comでも話題の「複数エージェント並列稼働」が人気です。@jdrhyne氏は「自分のOpenClaw(Brosef)を3インスタンス並列稼働させている」とX.comで報告しています。しかしこれが問題を引き起こします。

🔄 競合が発生するタイムライン

エージェントA
OAuthサーバー
エージェントB
トークン期限切れ検知
←→
トークン期限切れ検知
refresh_token送信 →
✅ 受け付け
同じrefresh_token送信 →
← 新token受取
❌ refresh_token_reused!
← エラー受取
正常稼働 ✅
フォールバックモデルに切替 ⚠️

12時間ごとに必ず発生する理由

OpenAIとGitHub Copilotのアクセストークンは、セキュリティ上の理由から約12時間で自動失効します。これはOAuthの標準的なセキュリティ設計です。

12時間
OpenAIトークン有効期間
8時間
GitHub Copilotトークン有効期間
1回
リフレッシュトークンの使用上限
数ms
競合が起きる時間差

複数エージェントが稼働していると、12時間に1回必ずこの競合が発生します。エージェントが3台あれば、最初に成功した1台だけが正常に更新され、残り2台はフォールバックモデルに切り替えられます(設定によってはタスクが失敗します)。

【緊急対処】今すぐrefresh_token_reusedを止める方法

既に問題が発生している場合の即効対処法です。

# 緊急対処:全エージェントを一旦停止してOAuth再認証
# 1. 全エージェントを停止
pkill -f "openclaw" 2>/dev/null
# Windowsの場合: Get-Process openclaw | Stop-Process

# 2. OAuth認証をリセット(全プロファイル)
openclaw auth reset --all
# または特定プロファイルのみ
openclaw auth reset --profile openai-codex

# 3. 新しいOAuth認証を実行
openclaw auth login --profile openai-codex
# ブラウザでOAuth認証フローを完了

# 4. 全エージェントを順番に起動(同時起動しない!)
openclaw start agent-1
sleep 30  # 30秒待つ
openclaw start agent-2
sleep 30
openclaw start agent-3

根本解決策1:エージェントごとに別のOAuthプロファイルを作る

最も確実な解決策です。各エージェントが独自のOAuthプロファイル(=独自のリフレッシュトークン)を持つことで、競合がゼロになります。

# エージェントごとに別のOAuthプロファイルを設定
# プロファイル作成(各エージェント用)
openclaw auth add --profile codex-agent-1
openclaw auth add --profile codex-agent-2
openclaw auth add --profile codex-agent-3

# openclaw.json でエージェントごとにプロファイルを指定
{
  "agents": {
    "agent-1": {
      "auth_profile": "codex-agent-1",
      "model": "openai-codex"
    },
    "agent-2": {
      "auth_profile": "codex-agent-2",
      "model": "openai-codex"
    },
    "agent-3": {
      "auth_profile": "codex-agent-3",
      "model": "openai-codex"
    }
  }
}

⚠️ 注意点

GitHub Copilotを使用する場合、1つのGitHubアカウントに複数のOAuthアプリ登録が必要です。または別のGitHubアカウントを使用してください。OpenAI APIは通常APIキー方式のため、この問題は発生しません(APIキー方式を推奨)。

根本解決策2:CoPilotプロキシを使ってOAuth依存をなくす

X.com上で@jonahships_が紹介した方法が大変話題になりました:「ClaudeのMax subscriptionを使い切ったので、OpenClawにCoPilotのサブスクをAPIエンドポイントとしてルーティングするプロキシを自分で設定させた」

CoPilotプロキシを使うと、OAuthのリフレッシュトークン問題を完全に回避できます。プロキシはAPI呼び出しをCoPilotサブスクリプション経由でルーティングし、OAuth認証の複雑さを隠蔽します。

# CoPilotプロキシの設定(OpenClawに頼む方法)
# OpenClawにプロキシ設定を依頼するプロンプト例
「私はGitHub CoPilotのサブスクリプションを持っています。
これをAPIエンドポイントとしてOpenClawに使わせてください。
CoPilotプロキシを設定して、複数のエージェントが
OAuthトークン競合なしに使えるようにしてください」

# OpenClawが自動でプロキシ設定スクリプトを生成します
# 設定後はocplaw.jsonでプロキシエンドポイントを指定

{
  "agents": {
    "defaults": {
      "model_endpoint": "http://localhost:8080/copilot-proxy/v1",
      "auth_type": "proxy"
    }
  }
}

根本解決策3:トークン更新のミューテックス(排他制御)設定

openclaw.jsonにミューテックス設定を追加することで、複数エージェントが同時にトークン更新を試みないようにできます。これはOpenClaw v1.8以降でサポートされる機能です。

# openclaw.json - ミューテックス設定
{
  "oauth": {
    "token_refresh": {
      "mutex": true,
      "mutex_timeout_ms": 30000,
      "retry_on_reused": true,
      "retry_delay_ms": 2000,
      "max_retries": 3
    }
  },
  "agents": {
    "defaults": {
      "failover_on_token_error": false
    }
  }
}

💡 設定の意味

  • mutex: true:トークン更新処理を一度に1つのエージェントだけに制限
  • retry_on_reused: true:refresh_token_reusedエラー時に自動リトライ
  • retry_delay_ms: 2000:リトライまでの待機時間(2秒)
  • failover_on_token_error: false:トークンエラー時にフォールバックしない(待機して再試行)

複数エージェント環境のOAuth設定ベストプラクティス

✅ 推奨:APIキー認証を使う

OAuthではなくAPIキー認証(Bearer Token)を使う場合、リフレッシュトークンの問題は発生しません。OpenAI APIやAnthropic APIはAPIキー方式をサポートしています。

# APIキー方式の設定(OAuth不要)
openclaw auth add --type api-key --key "sk-xxx..." --profile openai-api
# エージェントごとにプロファイルを指定

✅ 推奨:エージェントの起動タイミングをずらす

複数エージェントを同時に起動しないことで、初回のアクセストークン取得タイミングが12時間ずれます。これにより同時更新の確率が大幅に低下します。

openclaw start agent-1
sleep 3600  # 1時間待機
openclaw start agent-2
sleep 3600
openclaw start agent-3

エージェント数別の推奨構成

エージェント数 推奨認証方式 詳細
1台のみ OAuthで問題なし 単一エージェントでは競合が発生しない
2〜3台 ミューテックス設定 + 起動タイミングをずらす mutex: trueを設定し、各エージェントを1時間間隔で起動
4〜10台 エージェントごとに別プロファイル 各エージェントに独立したOAuthプロファイルを割り当て
10台以上 APIキー方式 + CoPilotプロキシ OAuthを完全に廃止してAPIキー認証に移行

VPN接続と複数エージェントOAuthの関係

複数エージェントのOAuth認証では、すべてのエージェントが同じIPアドレスからアクセスすることがセキュリティ上望ましい場合があります。OAuth認証フロー中にIPが変わると(VPN切替等で)、一部のプロバイダーは不審なアクセスとして認証を失敗させることがあります。

VPN07のような安定した高速VPNは、すべてのエージェントに同一の安定したIPを提供することで、OAuth認証の一貫性を保ちます。特に1000Mbpsの千兆回線は、複数エージェントが同時にAPIアクセスしても帯域が枯渇しないため、競合リスクを最小化できます。

🥇

VPN07 - マルチエージェントOAuth最適化VPN

9.8/10

複数OpenClawエージェントのOAuth認証を安定化する1000Mbpsの千兆回線。すべてのエージェントに安定した同一IPを提供し、OAuth認証の一貫性を保証します。

1000Mbps
千兆回線速度
70+
国と地域
10年
安定稼働の実績
$1.5
月額料金

よくある質問

Q:refresh_token_reusedが起きてもエージェントは動き続けますか?

A:デフォルト設定では、エラーが起きたエージェントはフォールバックモデル(通常はローカルモデルか別の設定済みモデル)に自動切替されます。フォールバックモデルが設定されていない場合、そのエージェントのタスクは失敗します。

Q:CoPilotプロキシはGitHubの利用規約に違反しますか?

A:GitHubの利用規約ではCopilotの商用再販は禁止されていますが、自分の使用範囲内でのプロキシ設定は個人使用の範囲と解釈されることが多いです。ただし、プロキシを第三者に提供したり、商用利用したりすることは避けてください。

Q:エージェントを10台以上運用したいのですが、コスト効率の良い方法は?

A:ローカルOllamaモデル(DeepSeek-R1・Qwen3.5など)をOpenClaw経由で使用するのが最も費用対効果が高いです。OAuth認証が不要になり、トークン競合問題も発生しません。ただし処理速度はクラウドモデルより遅くなります。

refresh_token_reusedエラーのログ分析と自動診断

エラーが発生した時、ログを読んで根本原因を特定する方法を説明します。OpenClawのログはエラーの詳細情報を含んでおり、適切に読めば問題の原因が特定できます。

# ログファイルの場所と読み方
# macOSのログファイル場所
~/.openclaw/logs/gateway.log
~/.openclaw/logs/cli.log
~/.openclaw/logs/agent-{name}.log

# refresh_token_reusedエラーを検索
grep "refresh_token_reused\|token.reused\|OAuth" ~/.openclaw/logs/gateway.log | tail -20

# エラー発生のタイムスタンプとエージェント名を確認
grep "refresh_token" ~/.openclaw/logs/gateway.log | awk '{print $1, $2, $NF}' | tail -10

# 診断コマンドで詳細を確認
openclaw doctor --verbose --include-auth
ログメッセージ 意味 対処法
refresh_token_reused 複数エージェントが同時に更新を試みた mutex設定または別プロファイルへ移行
token_expired アクセストークンが期限切れ 通常はauto-refreshで解決。出続ける場合はプロファイルリセット
invalid_grant リフレッシュトークンが無効化された openclaw auth reset --profileで再認証
rate_limit_exceeded OAuth APIのレートリミットに達した 5分待ってから再試行。頻発する場合はAPIキー方式に移行

📌 refresh_token_reused対策の優先順位

  1. 今すぐ:openclaw.jsonにmutex: trueを設定する
  2. 短期:エージェントごとに独立したOAuthプロファイルを作成
  3. 中期:CoPilotプロキシへの移行でOAuth依存をなくす
  4. 長期:APIキー方式への完全移行でトークン問題を根絶

VPN07でOpenClaw複数エージェントを安定化

OAuth認証を保護する1000Mbpsグローバル回線・10年の安定実績

複数のOpenClawエージェントを安定稼働させるには、すべてのエージェントが安定した高速接続を維持できることが重要です。VPN07の1000Mbps千兆回線は、70か国以上のグローバル拠点を持ち、どこからでも安定したAPI接続を保証します。月額$1.5・30日間返金保証付き。

$1.5/月
低月額料金
1000Mbps
千兆回線速度
70+国
グローバル拠点
30日
返金保証

関連記事

月額$1.5 · 10年の実績
VPN07を無料で試す