OAuth token forbidden (403) — missing scope, org access, or network not allowed by org が出て bridge が切れるときの切り分けまず、この症状に当てはまるかを見ます。claude --chrome や Claude in Chrome の side panel で、接続が一度つながったように見えてもすぐ切れ、再接続のたびに OAuth token forbidden (403) — missing scope, org access, or network not allowed by org が返るなら、今回の issue 群とかなり近いです。報告されているのは #108547 と #108765 です。どちらも、見た目は接続できているのに bridge 側で 403 が返り、結果として切断が繰り返されています。
報告内容だけを見ると、原因はローカルの壊れたトークンより、アカウントや組織側の認可条件にあるようです。#108547 では、WebSocket はしばらく動くものの、サーバー側が code 1008 で閉じ、その後の再接続で毎回 upstream_403 が返っています。さらに、claude setup-token で新しく long-lived token を作り、CLAUDE_CODE_OAUTH_TOKEN に入れて claude --chrome を実行しても同じ挙動だった、とコメントされています。つまり、このケースでは「古いトークンを入れ直せば直る」という話ではありませんでした。#108765 でも、side panel 自体は signed in で動いているのに、Claude Code 側の bridge だけが 403 で拒否され、「Browser extension is not connected」と表示されると報告されています。
実際に貼られているログは、症状の見分けにかなり役立ちます。#108547 の要点はこうです。
{"type":"error","error":"OAuth token forbidden (403) — missing scope, org access, or network not allowed by org","reason":"upstream_403","upstream_status":403,"transient":false}
同じ issue では、接続が続いたあとに consecutive_1008 を理由として token が消され、side panel が disconnect したとも書かれています。#108765 側では、claude-in-chrome の各 tool が Browser extension is not connected を返す一方で、実際の原因は extension へ届く前に bridge が 403 を返していることだと整理されています。
コメントの追試もあります。claude setup-token で fresh token を作って CLAUDE_CODE_OAUTH_TOKEN に設定しても、少し長くつながるだけで同じエラーに戻ったという報告です。これは、少なくともその報告者の環境では、トークンの種類を変えても根本原因は消えなかったことを示しています。
現時点で言えるのはここまでです。公開された issue からは、利用者側で確実に効く回避策は確認できませんでした。再現報告には、Org で Claude in Chrome が有効であることを確認済みでも失敗する例や、plan が Pro / Team / Max と違っても同じ upstream_403 に落ちる例が含まれています。なので、もし自分の環境で同じ文字列が出ているなら、まずは「ローカルの認証キャッシュが壊れた」というより、「そのアカウント/組織に対する bridge の認可が通っていない」ケースを疑うのが自然です。
ただし、どの条件が不足しているのかは、この issue だけでは分かりません。missing scope なのか、org access なのか、network not allowed by org なのかも、ユーザー側からは切り分け切れていません。少なくとも報告上は、同じ文字列が出る限り、トークンを作り直しても解消しない例がある、というところまでです。
OS : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python : 3.8.13
検証日時 : 2026-11-11T08:56:51+09:00