PaPoo
cover

OAuth session expired and could not be refreshed が出るときにまず確認したいこと

この症状は、少なくとも issue #81937#93521 で報告されています。どちらも「OAuth のセッションが期限切れで、更新できない」という同じ文言に見えますが、出方が少し違います。

#81937 では、macOS の zsh で claude -p を使うと失敗する一方、同じ端末・同じディレクトリで対話モードの claude は正常に通っています。報告文には、最初は次のような認証エラーも出ていたとあります。

Failed to authenticate: OAuth session expired and could not be refreshed
Failed to authenticate. API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"OAuth access token has been revoked."},"request_id":null}

一方 #93521 は、VSCode 拡張でブラウザ認証を完了した直後でも、すぐに同じエラーが出るという報告です。こちらは macOS 14.3 のローカルセッションで、SSH やリモート接続は使っていないと書かれています。

Failed to authenticate: OAuth session expired and could not be refreshed

筆者の環境で確認できた実測値は、OS と Python の情報だけです。今回の一次情報には、実際に claude を叩いたときの出力は含まれていません。なので、「この手順をやれば直る」とまでは書けません。

[env_summary]
OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-09-12T08:51:41+09:00

現時点で言えるのは、少なくとも次の2パターンがあることです。ひとつは、対話モードでは通るのに claude -p だけ落ちるケース。もうひとつは、VSCode 拡張側でブラウザログイン直後に落ちるケースです。つまり、同じ文言でも「CLI の非対話実行だけが失敗している」のか、「拡張機能や認証状態の受け渡しで詰まっている」のかを切り分けたほうがよさそうです。

もし自分の環境でこの症状が出ているなら、まず見るべきなのは次の2点です。

対話モードの claude は通るか。#81937 ではここが通っていました。もしここだけ通るなら、問題は非対話実行に寄っている可能性があります。

VSCode 拡張だけで再現するか。#93521 では、ブラウザ認証成功後も拡張側で同じ失敗が出ていました。CLI 単体とは別の経路で認証情報を読んでいる可能性がありますが、これは推測です。

代表 issue のコメントとしては、/login を対話モードの Claude 内で実行して直ったという短い報告がありました。ただし、これは「この症状は必ずこれで直る」という意味ではありません。別の人からは有用ではないという反応も付いていて、少なくとも再現条件が揃っていないと決定打にはならないようです。

いま挙がっている報告だけを見る限り、恒久的な解決策はまだ確立していません。再認証で回復するケースはありそうですが、毎日あるいは数日に一度ぶり返すというコメントもあり、安定した解決とは言い切れません。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-09-12T08:51:41+09:00

参照した Issue(anthropics/claude-code): #81937, #93521

同じ著者の記事