「Session token not found」— Bedrockでの原因と直し方
Bedrock接続でSession token not found or invalidが毎回出るのは、v2.1.207に限定されたリージョン解決の不具合が原因です。切り分け方とv2.1.208での修正点を書きました。
AWS認証情報が正しいのに毎回失敗するBedrockのエラー
Amazon BedrockでClaude Codeを使っていて、プロンプトを送るたびに次のエラーで止まることがあります。
API Error: UnauthorizedException: Session token not found or invalidaws sts get-caller-identityは成功します。aws bedrock-runtime invoke-modelを直接叩いても、同じ認証情報でモデルの応答が返ります。それでもClaude Codeだけが失敗し続けるパターンです。/setup-bedrockウィザードの検証ステップは成功し、直後に送った最初のメッセージが同じエラーで落ちる、という報告もあります。
これはissue #76701で報告された、Claude Code v2.1.207に限定されたリグレッションです。原因はAWS側の認証情報ではなく、Claude Code内部のリージョン解決にあります。v2.1.208で修正されています。
v2.1.207の不具合が出て直るまで
- 2026年7月11日 00:52(UTC)v2.1.207が公開される
Bedrockまわりでは、主モデルの既定と資格情報の扱いが変わったリリースです。
- 2026年7月11日issue #76701が立つ
WSL2上のユーザーが「資格情報は有効なのに毎回失敗する」と報告します。同日中にmacOSでの再現報告が続きます。
- 2026年7月14日 01:10(UTC)v2.1.208が公開される
リリースノートに、
sso_regionがBedrockのリージョンと異なるSSOプロファイルの認証失敗を直したと書かれます。
なぜ検証は通るのにリクエストだけ失敗するのか
原因は、AWS SSOプロファイルが認証情報を取得するsso_regionと、Bedrockモデルを呼び出すリージョンが食い違う構成です。公式ドキュメントは次のように説明しています。
Claude Code requests role credentials from the IAM Identity Center region named by the profile's
sso_region, which doesn't need to match the region you run Amazon Bedrock in. In v2.1.207, the Amazon Bedrock region overrodesso_region, so a profile whose IAM Identity Center instance is in a different region failed to authenticate with aSession token not found or invaliderror.
v2.1.207では、本来は別々でよい2つのリージョンのうち、Bedrock側がsso_regionを上書きしていました。issue #76701の報告者はsso_region = eu-north-1、Bedrockのリージョンがeu-central-1という構成でした。後から加わったZedの利用者はsso_region = eu-west-1、Bedrockがus-west-2で、同じ食い違いです。
公式の説明はAWS SSOプロファイルについてのものです。一方でissueの報告者は、AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYによる静的IAM認証情報でも同じエラーになったと書いています。この2つの関係は、公式の説明からは読み取れません。
AWS CLIの直接呼び出しは、Claude Codeとは別にリージョンを解決するため通ります。/setup-bedrockウィザードの検証が通る理由は、公式ドキュメントにもissueにも書かれていません。issueのデバッグログでは、ListInferenceProfiles(推論プロファイルの一覧取得)も同じエラーで失敗していました。特定のAPIではなく、リージョンを解決する処理全体が影響を受けていたと読めます。
起動済みのセッションは動き続け、新しくclaudeを起動したセッションだけが失敗する、という報告が2件あります。
症状から切り分ける
次の順で確かめると、v2.1.207の不具合かどうかを短時間で判定できます。
v2.1.207の不具合かを確かめる順番
- 1
バージョンを見る
claude --versionが2.1.207なら当たりです。それ以外のバージョンで同じ文面が出るなら、別の原因を疑います。 - 2
2つのリージョンを比べる
~/.aws/configのプロファイルにあるsso_regionと、Bedrockを呼ぶ側のリージョンを見比べます。Bedrock側はAWS_REGION、AWS_DEFAULT_REGION、プロファイルのregion、us-east-1の順に決まります。Claude Code内で/statusを実行すると、解決されたリージョンを確認できます。 - 3
AWS側を単独で確かめる
同じプロファイルで
aws sts get-caller-identityとaws bedrock-runtime invoke-modelが通れば、AWS側の資格情報は問題ありません。バージョンがv2.1.207で、sso_regionとBedrockのリージョンが違うなら、このリグレッションに当たっています。
claude --version
aws sts get-caller-identity --profile your-profile
grep -A3 "sso_region\|^region" ~/.aws/config--debug apiのログで見分ける
claude --debug apiで起動すると、資格情報の解決とAPIリクエストの順序がログに出ます。ログをファイルに残すなら--debug-file <path>も使えます。
issue #76701に貼られたログは、次の流れでした。
[API:timing] dispatching to bedrock model=eu.anthropic.claude-haiku-4-5-20251001-v1:0
[API:auth] resolving default AWS provider chain (region: eu-central-1)
[ERROR] API error (attempt 1/11): UnauthorizedException: Session token not found or invalid
[API:auth] AWS credential resolve start
[API:auth] AWS credential resolve done in 1052ms注目点は2つあります。1つはresolving default AWS provider chain (region: eu-central-1)の括弧内で、ここにBedrock側のリージョンが出ています。この報告者のSSOプロファイルはsso_region = eu-north-1なので、資格情報の取得先とは別のリージョンでチェーンを解決しようとしたことが読み取れます。
もう1つは、attempt 1/11のエラーのあとに資格情報の再解決が成功し、それでも次の試行が同じエラーで落ちる点です。再解決は毎回成功し、リクエストだけが拒否されます。資格情報の解決そのものが失敗する「Could not load credentials」とは挙動が違います。
issue #76701への報告は、macOS・WSL2・ネイティブLinuxにまたがっていました。Sonnet 4.6やSonnet 5などのモデルで起きており、共通点はv2.1.207だった点です。最初の報告者はUbuntuのバージョン差を疑っていましたが、のちにmacOSでも同じ症状が出て、OS固有の問題ではないことがはっきりしました。
直し方
v2.1.208以降へアップデートします。 v2.1.208のリリースノートに、このリグレッションの修正が書かれています。
Fixed Bedrock auth failing with "Session token not found or invalid" for AWS SSO profiles
whose sso_region differs from the Bedrock region (2.1.207 regression)アップデート後も、sso_regionとBedrockのリージョンが異なる構成のままで構いません。直ったのはリージョン解決のロジックなので、どちらかを揃え直す必要はありません。issueには、v2.1.208で動いたという確認の報告もあります。
アップデートできない場合の回避策は2つです。
アップデートできないときの回避策
v2.1.206以前に固定する
ネイティブインストールなら、バージョンを指定して入れ直します。
curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.206macOSでは、起動ランチャーのシンボリックリンクを2.1.206に差し替えたうえで、Desktopアプリが更新し直さないようchflags uchgで固定した報告もあります。
リージョンを揃える
sso_regionとBedrockのリージョンを同じにすれば、食い違い自体が起きません。
IAM Identity Centerのインスタンスを動かせない組織では使えません。
固定する場合は、自動更新を止める設定も要ります。公式のセットアップ手順では、settings.jsonのenvにDISABLE_AUTOUPDATERを"1"で入れるとバックグラウンドの更新確認が止まります。ただしclaude updateは動くので、手動更新も止めるならDISABLE_UPDATESを使います。
古いバージョンに戻したあと、更新時に変わること
v2.1.206から先へ更新するときは、リージョン解決以外にも変わる点があります。v2.1.207のリリースノートは、Bedrock・Vertex AI・Claude Platform on AWSの既定モデルをClaude Opus 4.8にしたと書いています。
Bedrockドキュメントによると、v2.1.207より前の主モデルの既定はSonnet 4.5でした。主モデルを固定していない構成は、更新後にOpusの単価で課金されます。Sonnet 4.5を使い続けたいなら、ANTHROPIC_MODELにフルのモデルIDを指定します。
現行版の既定は、Bedrockドキュメントの表ではOpus 5.5です。固定をやめて最新版へ戻すときは、この既定モデルの変更も見ておくと、請求の増え方に驚かずに済みます。
IDE拡張機能や外部クライアントでは別に更新が要る
CLIバイナリをv2.1.206に固定しても直らなかった、という報告がissueにあります。原因は、VS Code拡張機能が自前でClaude Codeの実行ファイルを持ち、PATH上のバイナリとは別に更新される点です。拡張機能側も揃えるには、拡張機能パネルの歯車アイコンから「Install Another Version」でv2.1.207より前のバージョンを選び直します。
Claude Codeのバイナリを呼ばず@anthropic-ai/claude-agent-sdkに依存する外部クライアントでは、別の落とし穴があります。issueのZed利用者は、Zedの外部エージェントが使う@agentclientprotocol/claude-agent-acpの0.59.0が、修正前のclaude-agent-sdk 0.3.207に依存していると報告しました。7月14日のコメントの時点では、CLIがv2.1.208に上がっても、この版では同じエラーが残りました。以後の版はclaude-agent-sdkが更新されています。外部クライアントで再現するときは、クライアント側が依存するSDKのバージョンを個別に見ます。
似た文面のエラーと混同しない
BedrockやAWS認証まわりには、文面の似たエラーがいくつかあります。原因も対処も別なので、次の表で見分けます。
| エラー文面 | 原因 | 詳細記事 |
|---|---|---|
Session token not found or invalid | 原因v2.1.207のリージョン解決リグレッション | 詳細記事この記事 |
AWS credentials expired or invalid | 原因Claude Platform on AWSまたはMantleエンドポイントが返す、期限切れ・無効なセキュリティトークンの401。v2.1.273以降はawsAuthRefreshの有無に関係なく表示される | 詳細記事AWS credentials expired or invalidの直し方 |
Could not load credentials | 原因AWSの資格情報プロバイダーチェーンまたはGoogleのアプリケーションデフォルト認証情報から、資格情報を取得できない(SSOの期限切れなど) | 詳細記事「Could not load credentials」の直し方 |
AWS authentication failed | 原因Bedrockが返す認証失敗(403または401)。期限切れと権限拒否は区別されない | 詳細記事— |
claude.ai rejected the session token | 原因claude.aiログイントークンの失効 | 詳細記事「rejected the session token」エラーの対処 |
claude.ai rejected the session tokenは、文言に「session token」を含むため特に紛らわしいエラーです。Bedrockの認証エラーではなく、Claude Code自身のclaude.aiログイントークンが失効した状態を指します。/mcpのコネクタ詳細画面に表示されますが、コネクタの認可とは別物です。
IAMポリシーの設計やクロスリージョン推論プロファイルの組み方で詰まっているなら、Claude Code Bedrock IAM設定とクロスリージョン推論プロファイルの組み方が受け皿になります。
Bedrock APIキー認証と資格情報キャッシュの関係
issue #76701の報告は、AWS SSOプロファイルと静的IAM認証情報、つまりAWSのデフォルト資格情報プロバイダーチェーンをたどる経路のものです。AWS_BEARER_TOKEN_BEDROCKによるBedrock APIキー認証は、公式ドキュメント上でこのチェーンを経由しない方式です。報告にBedrock APIキーでの再現例は含まれていません。SSOプロファイルの運用が重いCI環境では、APIキーへの切り替えも選択肢です。
Claude Codeは、解決した資格情報をメモリ上に保持します。有効期限の5分前まで、有効期限がなければ1時間再利用する仕組みです。APIから資格情報エラーが返るとキャッシュを捨て、次のリクエストで再解決します。このキャッシュはv2.1.207以降で働き、v2.1.207のリリースノートにも「SSO資格情報を毎リクエスト取り直していた挙動を修正」とあります。
issueのログでは、キャッシュを捨てた再解決が毎回成功しても、同じエラーが続いていました。再解決では直らなかったのは、エラーがリージョン解決の側にあったためです。キャッシュを切って毎回チェーンを解決したいときはCLAUDE_CODE_SKIP_AWS_CRED_CACHE=1を設定しますが、Bedrock APIキー認証にはそもそもこのキャッシュが働きません。
まとめ
認証情報が正しいのにSession token not found or invalidが毎回出るなら、まずバージョンと、sso_regionとBedrockのリージョンが食い違っていないかを見ます。v2.1.207でsso_regionを別リージョンにしていた構成だけが対象で、更新すれば構成はそのままで直ります。VS Code拡張機能や、SDKに依存する外部クライアントは、CLIとは別に更新が要ります。固定をやめて最新版へ戻すときは、Bedrockの既定モデルがOpus 5.5に変わっている点も見ておくと、請求の変化に驚きません。