Claude Code v2.1.318 — ログイン期限の表示と共有ネットワークホームの設定保護
Claude Code v2.1.318は、claude.aiログインの期限を確認できるようにし、共有ネットワークホームで設定やログインが消える問題を多数直しました。gatewayのMantleにassume_roleも加わります。
このリリースで何ができるようになるか
Claude Code v2.1.318の追加は、認証まわりの見通しと、gatewayとmodの小さな拡張です。修正は約50件あり、多くは共有ネットワークホームでの設定・ログインの保全と、クラウドセッション・Remote Controlに関するものです。
v2.1.318で影響が大きい4つの変更
claude.aiログインの期限が見える
claude auth statusにloginExpiresAt、claude -pのJSON結果にcredential_expires_atが加わりました。期限の10日前から、claude -pのテキスト出力にstderrの警告が1行出ます。共有ネットワークホームで設定が消えにくい
~/.claude.json、設定ファイル、保存済みログインが、保存の途中で空になったり古い写しに戻ったりする問題が複数直りました。gatewayのMantleでassume_role
Claude apps gatewayの
mantleupstreamにassume_roleが使えます。別AWSアカウントのロールを引き受けられ、開発者ごとのコスト集計にも使えます。modのforkにeffortを指定
$.model.forkにeffortが加わりました。セッションのeffortに関係なく、軽い補助処理をlowで動かせます。
あなたの開発フローはどう変わるか
| 使い方 | 影響 | 何が変わるか |
|---|---|---|
claude -p やSDKで無人実行し、claude.aiログインを使う | 影響明確な恩恵あり | 何が変わるか期限が数値で取れ、切れる前に警告が出る |
| ホームディレクトリをNFSなど共有ネットワーク上に置く | 影響明確な恩恵あり | 何が変わるか設定・ログイン・信頼済みフォルダの欠落が起きにくくなる |
| Claude apps gatewayでBedrock Mantleを使う | 影響明確な恩恵あり | 何が変わるか別アカウントのロール経由と、開発者別の集計ができる |
| modを書いている | 影響条件次第 | 何が変わるかforkのeffort指定と prompt.submit の扱いの変更が効く |
deniedMcpServers でコネクタを制限している | 影響条件次第 | 何が変わるかクラウドセッションとRunnerでは、コネクタ自身のURLが渡される場合だけURL指定も効き、それ以外は名前で拒否する。Claude Codeが自分で取得するclaude.aiコネクタは serverUrl 指定が勧められている |
| サブエージェントを多用する | 影響条件次第 | 何が変わるかモデル切替の確認、3分でのバックグラウンド移行、要約の待ち時間が変わる |
| 手元のターミナルでの対話利用 | 影響小さな改善が中心 | 何が変わるか設定変更は要らない |
claude.aiログインの期限を数値で取れる
3つの追加は、いずれも保存済みのclaude.aiログインが対象です。
認証のドキュメントには、/login で作ったログインが期限の3日前になると、起動時に Your login expires in 3 days · run /login to renew と出るとあります。changelogが述べる claude -p のテキスト出力の10日前警告は、これとは別に書かれています。
期限が過ぎて更新できないときの失敗も直りました。ログインが期限に達したことをエラーが述べるようになり、claude -p では claude auth login と claude setup-token が案内に出ます。
# JSONで状態を出す(--text で人向けの表示)
claude auth status
# 出力のloginExpiresAtを監視スクリプトで読む想定loginExpiresAt の値の形式(ISO形式かエポック秒か)は、changelogに書かれていません。監視に使う前に、手元の出力で形を確かめてください。
共有ネットワークホームでの保存を守る修正が束で入った
NFSなどの共有ネットワークホームで、設定やログインが失われる経路が一度に塞がれました。
| 症状 | 直った内容 |
|---|---|
| 保存に失敗しても成功と表示される | 直った内容/logout、claude auth logout、claude mcp remove が成功と報告し、信頼・同意・MCP設定の変更が黙って捨てられていた |
| ログインが空ファイルに置き換わる | 直った内容ネットワークホームの空き容量が尽き、新しいファイルだけ作れる状態で起きた |
| 設定ファイルが「無い」と誤報される | 直った内容起動時に読み直すようになり、MCPサーバーや信頼済みフォルダなしで始まる例が減った |
| MCP設定の書き込みに排他がない | 直った内容claude mcp add と remove はロックを待つか、終了コード1で終わる。ただし別ジョブの保存が、保存済みのサーバーを置き換えることは残る |
無人実行が毎回 ~/.claude.json を書き換える | 直った内容中身が変わらないときは書かなくなった |
壊れた ~/.claude.json がデフォルトで上書きされる | 直った内容非対話の起動は失敗し、復元方法を示して、ファイルはそのまま残す |
最後の行はissue #87551に対応します。変更後は起動が止まる代わりに、設定ファイルは消えずに残ります。スクリプトが claude -p を呼んでいるなら、失敗した場合のメッセージに復元コマンドが出るので、それに従います。
関連して、中身が空で控えのない ~/.claude.json は破損扱いにならず、ファイルが無いときと同じ起動になります。復元コマンドが空や途中で切れた控えを指す問題、読み取り専用ファイルで失敗する問題も直りました。
claude -p しか使わないホームでは、古い控えの整理で控えが残らないことがありました。今後は最後の正常な控えを消す前に新しい控えを取ります。
修正には、同じホームで別の端末やホストが同じアカウント・組織に再ログインした場合の Not logged in や、別のログインが保存した allowedProviders でセッションが起動拒否される例も含まれます。
Claude apps gatewayのMantleにassume_role
mantle upstreamに assume_role が使えるようになりました。gatewayの設定リファレンスでは、この項目はClaude Code v2.1.318以降のgatewayが必要と書かれています。古いgatewayは Unrecognized key(s) in object: 'assume_role' で起動に失敗するので、全レプリカを上げてから設定を足します。
upstreams:
- provider: mantle
region: us-east-1
models: [claude-opus-4-7, claude-haiku-4-5] # 必須
auth: {} # gateway自身のロールはSTS呼び出しだけに使う
assume_role:
role_arn: arn:aws:iam::222222222222:role/claude-gateway-mantle
session_name: email # 開発者ごとにセッションを分ける上の例は、Bedrock upstreamの assume_role の説明と、mantle の表に沿った形です。キーは role_arn、external_id、session_name の3つで、session_name に email か sub を入れると、開発者ごとに別のセッション名でSTSを呼びます。AWSからは、各開発者のリクエストが、それぞれ引き受けたロールのセッションとして見えます。
注意が3点あります。
- 引き受けるロールには、Mantle用のIAM操作を付けます。Mantleの操作は
bedrock-mantle:プレフィックスで、推論はbedrock-mantle:CreateInference、トークン数の計算はbedrock-mantle:CountTokensです。bedrock:の操作では足りません - STSが拒否または不達だったとき、gatewayはupstream自身の資格情報では送らず、次のupstreamを試します。次のupstreamに
assume_roleがなければ、その資格情報で処理されます - 厳密に開発者別で集計したいなら、並べた全てのBedrock系upstreamに
session_nameを付けます
gatewayのコスト集計APIは、v2.1.317の記事で扱いました。ユーザーIDを前段のプロキシに渡す設定はforward_user_identityの記事にあります。
modの変更はforkのeffortと prompt.submit
$.model.forkにeffortを渡せる。結果には、実際に送ったeffortが載るprompt.submitでmodが付け足す内容は、システムメッセージでなく、ユーザーのターンの中に留まる
forkは、会話をそのまま引き継いで末尾にプロンプトを足して送る呼び出しです。forkは直前のリクエストを繰り返すため、会話がキャッシュされている間は大部分がプロンプトキャッシュから返ります。会話と無関係な単発の問い合わせ向けには、$.model.complete が別にあります。使い分けはmodel.completeの記事にまとめています。
prompt.submit の変更は、入力に内容を添えるmodを書いている場合に効きます。ターンの外にあるシステムメッセージとして出ていた添付が、ユーザーのターン内に収まります。書き換えの基本はprompt.submitの記事を見てください。
modの turn.step フックに関する修正が2件あります。フックがあるとき、claude -p とAgent SDKがAPIエラーで途切れた返信を成功と報告する問題と、停止した返信が成功で終わる問題です。後者は、ヘッドレスで止めたはずの実行が完了扱いになっていました。キャッシュ使用量を読む例はturn.stepの記事にあります。
deniedMcpServersのURL指定が広がった
deniedMcpServers のURL指定は、次の2つにも効くようになりました。
- Anthropicが提供するサーバーのうち、上流のURLが一致するもの
- クラウドセッションとセルフホストRunnerのコネクタのうち、セッションにコネクタ自身のURLが渡される場合
クラウドセッションとセルフホストRunnerでは、それ以外のコネクタは名前で拒否します。MCPの説明ページには、クラウドセッションのプロキシがコネクタのURLを書き換えるため、コネクタ自身のURLで書いた serverUrl の指定は一致しない、という記述があります。"claude.ai Slack" のような serverName 指定も併用できますが、管理MCPのドキュメントはこれをセキュリティ制御ではないとしており、表示名が変わると外れます。クラウドセッションとセルフホストRunnerで serverUrl 指定が効くのは、コネクタ自身のURLが渡される場合だけです。Claude Codeが自分で取得するclaude.aiコネクタは、改名に強い serverUrl 指定が勧められています。
サブエージェントの挙動が3点変わった
- 「Switch models when a message is flagged」が「Ask each time」のとき、サブエージェントはモデルを切り替えず、停止する
- バックグラウンドのサブエージェントは、シェルコマンドが3分続くとバックグラウンドへ移す。全プロバイダー共通で、実行中にプロンプトキャッシュが切れないようにする狙い
- Bedrock、Vertex、Foundry、またはテレメトリをオフにした環境で、キャッシュが冷えているとき、サブエージェントの進捗要約は保留中の応答を最大5分待つことがある
主な変更点
追加・変更
- Claude Codeが、セッション中に書いたmodを有効にするか尋ねたときの答えを記録する
/permissionsの規則詳細、組み込み規則、削除確認の画面が標準ダイアログになった。ここでCtrl+Cを2回押すと、終了でなく戻る・取り消しになる- IDEのターミナルで起動したとき、IDE拡張を入れたり更新したりしない。入れるには外側のターミナルの
/ideか、エディターの拡張機能ビューを使う /claude-api managed-agents-onboardが、新しいエージェントの組み込みツールとクイックスタートのテンプレートのMCPツールに、既定でautoの権限ポリシー(Judge risky actions)を付ける。外すには「run without asking」と伝える- 2.1.288の修正の取り消し。2.1.286以前で始めた会話を再開するとき、モデルの以前の思考を残す処理が外れ、思考が落ちることがある
- 使用量上限メニューの「Ask your admin for more usage」が、依頼を1ステップで送る
- リモートセッションが、休止やスリープのあとで再接続する速度が上がった
- 自動更新で、リリースの検証中の一時的なネットワーク失敗を、次の確認まで待たず、すぐ再試行する
- MCPのツールエラー改善。ロード前に呼ばれたツールには、入力スキーマが返る
- macOS組み込みの
/bin/bashでBashツールを動かしているとき、gitコミットとPR作成の信頼性が上がった - 「You should know」トーストが、ターミナルでしか通じない「press 2」ではなく「try again」と言う
修正(認証・設定・接続)
forceLoginOrgUUIDのあるマシンで、許可された組織のsetup-tokenのトークンが起動時に拒否されていたNODE_EXTRA_CA_CERTSのファイルが空、PEMでない、または先頭の証明書が壊れていると、全接続が失敗した。読める証明書を使い、stderrに警告を出すclaude pluginコマンドが遅いトークン更新の保存前に終了し、次の実行でサインアウトされることがあったclaude plugin validateが通すカスタム名のマーケットプレイスファイルを、claude plugin marketplace addが拒否する不整合- バージョン確認で終了するstdioのMCPサーバーが、起動のたびに確認し直される問題。自分の都合で3秒未満に落ちるサーバーは、7日間、旧ハンドシェイクに固定される
- バージョン整理が、別ユーザー所有で動作中のClaude Codeプロセス(
sudo claudeの残りなど)を停止済みと誤認し、実行ファイルを消すおそれがあった
修正(セッション・会話)
- 不正なツール呼び出しの再試行が尽きたあと、
--continueが以前の会話を失うことがあった(2.1.314の退行) - アイドル時の圧縮が、要約でない返答で会話を置き換えることがあった
- macOSで多数のBashコマンドが動くと、メモリが増えてセッションが止まった
- 権限プロンプトが、メッセージ送信直後や、遅れて出たプロンプトより前に打ったキーに答えてしまう
claude -pとSDKのセッションで、カスタムスラッシュコマンドが失敗したときや、Claudeだけが呼べるときに、何も表示されない- ヘッドレスでは、モデル変更の直後に送ったメッセージがStopのあとも動き続けていた
- アイドルの非対話セッションの終了時に、削除済みのトランスクリプトが最後のプロンプトつきで作り直されていた
- 再起動したセッションが、APIエラーで失敗したメッセージを、後ろに待つ新しいメッセージより先に再送していた。大きな画像を読んだ直後やツール再試行の直後に再起動すると、中断したターンが落ちる例もあった
- 「Now using usage credits」の通知が、バックグラウンドのサブエージェントの実行中、約30秒ごとに出し直されていた
- 画像が20枚を超えるリクエストの、大きすぎる画像のエラーが、常に「2000px」を上限として示していた。APIの上限が表示されるようになった
- 使用量上限のあとにワークフローを再開すると、終わったエージェントが再実行された
- PushNotificationの呼び出しでstatusを省くと通知が重複する点を修正
- バックグラウンドシェルの詳細で、ダイアログを開いている間、実行時間が更新されなかった
修正(リモート・クラウド・外部アプリ)
claude remote-controlのホスト、バックグラウンドデーモン、セルフホストRunnerが、更新やバージョン整理で動作中プロセスの実行ファイルが消えたあと、新しいセッションを始められない(spawn ENOENT)問題/remote-controlは、接続に失敗したセッションを利用可能と表示していた/design revokeは、404で失敗したときに失敗と報告する- セルフホストRunnerやクラウドセッションの再起動後、承認済みのシェルコマンドが、頼まれたフォルダでなくセッションの開始フォルダで動いていた。そのフォルダに入れなければ実行しない
- クラウドセッションの再起動後、承認済みのコネクタツールが使えないことが、Claudeに伝わるようになった
- サービスが数分アップロードを拒むと、クラウドセッションがターンの途中で止まっていた
- 一部のクラウドセッションで、
SetupフックがCLAUDE_ENV_FILEに書いた変数がBashツールに届かないことがあった - クラウドセッションの
/mcpは、サーバーの行にモデルが使えるツールの数だけを出す - iPhoneアプリが、応答がツール呼び出しで切れたときや、拒否された画像・文書が取り除かれたとき、実行中のクラウドセッションのターンを完了と表示していた
- GitHub Actionsのログを読むとき、
gh run view --logとgh apiのログ請求が、到達できないリダイレクトでなくログを返す(多くの環境) - Create PRの失敗メッセージが、理由かGitHubへのリンクを出す。以前は「Try again」だけだった
- クラウドセッションに「No repository」の選択肢が加わり、Anthropicがホストする環境では、リポジトリを選ばずに始められる
- クラウドセッションに、Chrome系の通常名(
google-chrome、CHROME_PATH)が加わり、Playwright以外のツールも組み込みChromiumを見つけられる - 環境が削除されたクラウドセッションのカードに「New session」ボタンが出る
- コネクタの検索結果が、検索はコネクタ一覧の一部だけを対象とする、とClaudeに伝える
- Remote Controlで、同じリポジトリを並べてチェックアウトした環境が、環境メニューで区別できる
- Remote Controlで、作業フォルダが無いときの
spawn error: ENOENTが、フォルダ名を示す - Remote Controlで、ターミナルforkをさらにforkし、アプリがタイトルを付けない場合、タイトルが「Name (fork 2)」になる
- VS Codeで、組織の設定がサインインを拒む場合に、1分ごとにバックグラウンドで新しいClaude Codeプロセスが起動していた
- VS Codeで、チャットのエラーバナーの長い語が、閉じるボタンを押し出していた
- VS Codeのサインイン画面が、状態確認の失敗時に出力を表示する
- Claude Tagの管理画面で、フォーカスと読み上げが直った
- Code Reviewの分析画面が、失敗のあと1回再試行し、「Try again」バナーを出す
gatewayとセルフホストRunner
gatewayは、フェデレーション(external_account)の資格情報ファイルから得たGoogleのアクセストークンが期限間近のとき、ログに警告を出します。listen.trusted_proxies のログのヒントは、接続元アドレスを X-Forwarded-For に自分で足すプロキシだけを書くよう案内します。BedrockでAWS CountTokensが失敗したときの警告は、501が返ったあとにトークンを数えるのはgatewayではなくClaude Codeだと明示し、AWSがアクセスを拒んだ場合にだけIAMを指します。
セルフホストRunnerには、次の変更があります。
- オーケストレーターのspawn-runnerフックの環境に、
CLAUDE_RUNNER_SPAWN_REASONが入る。Anthropicがリクエストを送った理由で、runner_lost、resumedなど。リクエストが無ければ未設定 --release-idle-session-minが最後の引数で値がない、または空白だけのとき、起動時に警告する(値なしは従来どおり無視、空白のみは0として読む)- オーケストレーターのログ行の形が変わる。
ok session=…は全ログレベルでstdoutに出て、jti=…の後ろにreason=…が付く。nack session=…はretryable=…の後ろにreason=…で終わる。retryable=true:かretryable=false:に一致させるスクリプトは直す
関連バージョンの動き
| バージョン | 何が起きたか |
|---|---|
| v2.1.288 | 何が起きたか2.1.286以前で始めた会話の再開時に、モデルの以前の思考を残す処理が入った |
| v2.1.314 | 何が起きたか不正なツール呼び出しの再試行が尽きたあと、--continue が以前の会話を失うことがある退行が入った |
| v2.1.317 | 何が起きたかgatewayのコスト集計APIが加わった |
| v2.1.318 | 何が起きたかv2.1.288の処理を取り消し、--continue の退行を修正した |
ログイン期限の可視化は、無人実行の「突然のNot logged in」を事前に拾えるか
claude -p やSDKで動く自動化は、人が画面を見ていません。claude.aiのログインが切れると、ある朝から失敗が続き、理由は実行ログを遡って初めて分かります。v2.1.318は、その入口に3本の手当てを置きました。期限を機械が読める形で出す、切れる10日前に警告する、切れたときのエラーに対処を書く、の3つです。
効くのは、claude.aiのログインで無人実行を回している場合に限られます。長期運用のCIやスクリプト向けには、claude setup-token で作る長期トークンという別の手段があります。今回の期限表示は、そのトークンの代わりではなく、ログインに頼っている実行を事前に気づく道具です。claude auth status を定期ジョブに入れ、残りが少なければ通知する使い方が素直です。
一方で、手に入る値と警告は、保存済みのclaude.aiログインの期限です。それ以外の認証方式の期限は対象に含まれないため、別の監視が要ります。
同じ変更のなかで、共有ネットワークホームの保存が複数直ったのも、無関係ではありません。ログインが空ファイルに置き換わったり、別のターミナルの再ログインで Not logged in になったりする原因が、期限切れとは別にあったためです。期限を見ても説明のつかない Not logged in は、まずv2.1.318に上げて再現するかを確かめる価値があります。
まとめ
認証を無人で回している環境と、ホームを共有ネットワークに置いている環境は、このバージョンへ上げる効果が大きいリリースです。前者は期限の数値化と警告、後者は設定とログインの欠落の修正が効きます。
Mantleのassume_roleを使う予定のgateway管理者は、全レプリカをv2.1.318以降にしてから設定を足してください。手元で対話的に使うだけなら、設定の変更は要りません。一つ前のバージョンの内容はv2.1.317の記事、全体像はClaude Codeの全体ガイドにあります。
関連ガイド
このバージョン単体の位置づけや前後の版とのつながりは、Claude Code(クロードコード)の解説でまとめて確認できます。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。