原文(日本語に翻訳)
複数のOAuth MCPサーバーを使用する際のmacOSキーチェーン破損を修正しました。大きなOAuthメタデータのブロブが security -i の標準入力バッファをオーバーフローさせ、古い資格情報が残ってしまい、繰り返し /login プロンプトが表示される原因になっていました
原文(英語)
Fixed macOS keychain corruption when using multiple OAuth MCP servers. Large OAuth metadata blobs could overflow the security -i stdin buffer, silently leaving stale credentials behind and causing repeated /login prompts.
概要
複数のOAuth対応MCPサーバーを同時に使用すると、各サーバーのOAuth認証情報がmacOSのキーチェーンに保存されますが、認証データが大きい場合に security -i コマンドの標準入力バッファをオーバーフローさせてしまうバグがありました。この結果、キーチェーンに古い(無効な)認証情報が残り続け、/login プロンプトが何度も表示されるという問題が発生していました。修正により、大きなOAuthデータも正しくキーチェーンに保存されるようになります。
基本的な使い方
この修正は自動的に適用されます。アップデート後、繰り返し表示されていた /login プロンプトが解消されます。
bash
# アップデート後に再ログインして認証情報をリセット
/login
# → 正しくキーチェーンに保存される
# → 次回からは /login プロンプトが繰り返し表示されない実践例
複数のOAuth MCPサーバーを使用するケース
json
// .mcp.json の例
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"oauth": true
},
"google-drive": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-gdrive"],
"oauth": true
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"oauth": true
}
}
}bash
# 修正後は複数OAuthサーバーを同時使用しても
# キーチェーンが破損しなくなった
claude
# → 各サーバーの認証情報が正しく保存・管理される破損した認証情報のクリーンアップ(修正前の問題への対処)
bash
# macOS キーチェーンから古い Claude Code の認証情報を削除
security delete-generic-password -s "claude-code-mcp-oauth" 2>/dev/null || true
# Claude Code を再起動して再認証
claude
/login注意点
- この問題はmacOS固有のバグです(Linux/Windowsでは発生しません)
- 複数のOAuth MCPサーバーを使用していなかった場合は影響を受けません
- アップデート後も
/loginプロンプトが続く場合は、一度キーチェーンの認証情報を手動で削除してから再認証してください - OAuthトークンのサイズは使用するサービスや設定によって異なります