期間: 2026-09-30 〜 2026-10-02 · PR 136 件(新機能 7 / 変更・修正 15 / その他 114)

この回について

取り込み期間は 2026-09-30T00:23Z〜2026-10-02T00:52Z。PR 数が maxPrs(30)を超えたため、106 件は collect の段階で本文を持たない brief: true の PR で、「その他」に領域ごとにタイトルからまとめてある。

期間内に安定版 rust-v0.159.3 と rust-v0.160.0 が公開された。rust-v0.160.0 の中身は主に前回(2026-09-30 の変更)の PR。この回の PR は 128 件がプレリリース rust-v0.162.0-alpha.1 に収録済みで、8 件が未リリース。

新機能

TUI の音声設定でローカルのマイク・スピーカーを選べるように(#49437)

何ができるようになったか

これまで音声会話はシステム既定のマイクとスピーカーを使っていた。音声の選択と並んで入力・出力デバイスのピッカーが追加され、リモートの app-server に接続している場合も含めて使うデバイスを選べる。

  • 設定: 選択は TUI が動くマシンの audio.microphone と audio.speaker に保存される(プロジェクトの設定レイヤーには保存しない)。次の音声会話から適用
  • ピッカーには「System default」と戻る操作がある。名前が重複して区別できないデバイスは選べないようにしている
  • デバイスの列挙では音声ストリームを開かない。選んだデバイス名は起動時に音声ヘルパーへ渡される

📦 rust-v0.162.0-alpha.1 に収録 · トピック: リアルタイム音声

TUI のコマンドセンターに会話のフォーク操作を追加(#49517)

何ができるようになったか

コマンドセンターで選んだ会話を f でフォークし、新しいセッションを開けるようになった。

  • 設定: キーは TUI のキーマップの agents.fork で変更可能。コマンドセンターのヘルプとキーマップのピッカーにも表示
  • 既定の検索ショートカットは F3 と / に移動(独自のキー割り当てと衝突する場合は、隠れていない既定を残す)
  • アタッチ・フォーク中もキューに入った入力は元の会話に残る。サイドの会話を開いている間は、閉じてからでないと別のタスクをフォークできない

📦 rust-v0.162.0-alpha.1 に収録 · トピック: TUI

マルチエージェントのモデルカタログをコンテキストに置くオプション(#49560)

何ができるようになったか

利用可能なモデルの説明が更新されると spawn_agent のツールスキーマが変わってしまう。新しい機能 model_catalog_in_context(既定は無効、マルチエージェント V1・V2 の両方)を有効にすると、モデルの一覧をツールの説明から developer メッセージの <model_catalog> に移し、ツール定義とそれまでの入力を変えずにモデルの選択肢を最新に保てる。

  • 一覧はピッカーに表示される互換モデルの説明・推論エフォート・サービスティアを含み、1,000 バイトまで
  • 描画内容が変わったときだけ新しい一覧を追加し、欠けた一覧は復元。当てはまらなくなった一覧は無効にする
  • spawn_agent のガイダンスは最新のカタログを参照するようになる

📦 rust-v0.162.0-alpha.1 に収録 · トピック: マルチエージェント

ゴール(goal)の編集に origin を付け、ユーザーの編集をモデルの履歴に残すように(#49598)

何ができるようになったか

thread/goal/set と thread/goal/clear に省略可能な origin(user / automatic)が追加された。TUI からのゴール操作は user として送られる。ユーザーによる目標・ステータスの編集やクリアは、ゴールの状態を変える前にユーザー指示としてモデルの履歴に記録される(スレッドがアンロードされていてもコンパクション中でも)。

  • origin を省略した場合と自動のゴール更新は、ユーザーの認可として扱われない
  • 記録に失敗した場合、ゴールの状態は変わらない
  • スレッドの再開と調整し、コンパクションの入力スナップショット後に受け付けた編集も保持する。生成されるプロトコルのスキーマと TypeScript・Python のバインディングも更新

📦 rust-v0.162.0-alpha.1 に収録 · トピック: セッション・スレッド管理

MCP の ID-JAG 交換の前に認可サーバーを発見・検証(#49478)

何ができるようになったか

exchange_ema_auth_token が追加され、エンタープライズの ID 資格情報を解決して ID-JAG のトークン交換を行う前に、MCP リソースの認可サーバーを発見・検証するようになった(低レベルの交換処理は非公開に)。

  • 発見: エンタープライズ管理の認可拡張を付けて server/discover を問い合わせ、既知のレガシーな拒否応答にも対応。protected-resource metadata のチャレンジや well-known へのフォールバックをたどる
  • 検証: 設定されたリソースと issuer の制約を照合し、公開クライアントの JWT bearer 対応の広告を必須とする。トークンエンドポイントのメタデータを検証(認可エンドポイントは不要)
  • 制限: 共通のタイムアウト、リダイレクト数・認可サーバー数の上限。クロスオリジンのメタデータのリダイレクトを拒否し、プライベートな宛先の認可サーバーを制限(ローカルのループバックでの発見は許可)

📦 rust-v0.162.0-alpha.1 に収録 · トピック: MCP

デスクトップアプリの音声を managed requirements で制御する in_app_voice(#49683)

何ができるようになったか

in_app_voice が stable・既定で有効な機能として登録され、設定スキーマに追加された。managed requirements からデスクトップアプリでの音声の許可を制御するためのゲートで、許可しても音声が使えることやプロバイダの対応を保証するものではない。

  • 使い方: requirements.toml(クラウド管理の requirements を含む)で in_app_voice = false。ユーザー設定で true にしていても無効になり、ユーザー設定は書き換えない
  • requirements と機能一覧の応答に反映される

📦 rust-v0.162.0-alpha.1 に収録 · トピック: 管理要件、リアルタイム音声

ブラウザのアノテーション API を requirements で制御する browser_annotation_api(#49784)

何ができるようになったか

browser_annotation_api が stable・既定で有効な機能として登録された。ユーザー設定ではなく requirements 向けで、デスクトップアプリで Web サイトがアノテーションツールを開いたりカスタマイズしたりすることを制御する(ユーザー自身の通常のアノテーション操作とは別)。

  • 使い方: エンタープライズの requirements で browser_annotation_api = false にすると無効になる
  • #18956 で入ったブラウザの requirements 対応を拡張したもの

📦 rust-v0.162.0-alpha.1 に収録 · トピック: 管理要件

変更・修正

Linux サンドボックスが拒否ファイルを複数指定すると起動しない問題を修正(#50059)

Before

bubblewrap は --ro-bind-data のマウントごとにファイルディスクリプタを消費して閉じるため、複数のファイルマスクで 1 つのディスクリプタを使い回すとサンドボックスが起動しなかった。

After

空ファイルのマスクごとに別の /dev/null のディスクリプタを開いて保持する。正確なパスと glob の拒否ルールの両方で、起動・拒否ファイルの読み書き不可・許可ファイルへのアクセスをテストで確認。

📦 rust-v0.162.0-alpha.1 · トピック: サンドボックス

TUI の権限設定を接続先サーバーの定義に従うように(#49472)

Before

クライアント側の権限定義や制約が、接続先の app-server のものと食い違うことがあった。受け付けた権限の変更が、設定の通知が届く前のタスク遷移で失われることもあった。

After

権限プロファイルとその可否をサーバーから取得し、選択は thread/settings/update で適用する(カスタムプロファイルを含む)。サーバーの実効設定を採用し、受け付けた選択と承認設定を新しいタスク・フォーク・サイドの会話・ディレクトリ変更・再接続・安全のための再試行をまたいで保持する。名前の無いプロファイルでも現在の組み込みプリセットを認識する。

📦 rust-v0.162.0-alpha.1 · トピック: TUI、サンドボックス

選択したファイルパスをプレーンテキストでコピー(#49564)

Before

描画されたローカルのファイル参照(repo/foo_bar! など)をコピーすると、Markdown のエスケープが付くことがあった。

After

ファイル参照の内側に収まる選択(部分選択や表の中を含む)はプレーンテキストとしてコピーする。隣り合うファイル参照とインラインコードはまとめて扱い、周りの内容を含む選択では Markdown のエスケープを保つ。

📦 rust-v0.162.0-alpha.1 · トピック: TUI

Responses のリトライとフォールバックでサーバーの再試行の指示に従うように(#49441)

Before

Responses の過負荷やリクエスト回数超過のエラーは、サーバーが再試行を指示していても終了してしまうことがあった。WebSocket から HTTP へのフォールバックが、指示された時刻より前にリクエストを出すこともあった。

After

サーバーの指示があれば ServerOverloaded と RetryLimit も設定されたリトライ回数の範囲で再試行する。拒否された WebSocket アップグレードの Retry-After を保持し、その時刻まで待ってから HTTP にフォールバックする。クォータ・利用上限・ポリシーによる失敗は、再試行の指示があっても終了のまま。

📦 rust-v0.162.0-alpha.1 · トピック: モデル・接続設定

認証の変更後も bootstrap の設定発見を維持(#49432)

Before

embedded の app-server の設定発見(bootstrap)は、ログインやワークスペースの変更の後も使える必要があり、一方で以前のアカウントに与えたコンテンツへのアクセスは取り消す必要があった。

After

AuthRouteConfig にアプリケーション用の別のネットワークポリシーを持たせ、アカウント所有のコンテンツ用クライアントはそれを使い、認証されたオーナーが変わったら無効にする。ローカルでエンドポイントを限定した bootstrap のポリシーは維持する。

📦 rust-v0.162.0-alpha.1 · トピック: 認証

スレッド再開時に確実な最新のリプレイ履歴を返すように(#49599)

Before

保存済みの履歴のスナップショットは、再開したスレッドが書き込みの所有権を得る前に古くなることがあった。

After

ThreadStore::resume_thread がリプレイのコンテキストを返し、セッションの復元とメタデータの初期化に使う。ローカルストアは書き込みの所有権を持った状態でスナップショットを読み直し、コンテキストの読み込みに失敗したら所有権を手放す。

📦 rust-v0.162.0-alpha.1 · トピック: セッション・スレッド管理

スレッド再開時に変わっていない履歴スナップショットを再利用(#49600)

Before

事前に読み込んだスナップショットが変わっていなくても、スレッドの再開で保存済みの履歴を読み直していた。

After

保存済み履歴とモデルコンテキストのリビジョンをスレッド・エージェントの再開経路に渡し、書き込みの所有権を得た後に照合する。一致すれば共有のスナップショットを再利用し、リビジョンが無い・変わった場合は読み直す。圧縮されたスナップショットは展開前に検証し、アーカイブ済みスレッドの制限を正規のパスで適用する。

📦 rust-v0.162.0-alpha.1 · トピック: セッション・スレッド管理

ターン中止のコールバックが終わってから TurnAborted を出すように(#49475)

Before

拡張の中止コールバックが終わる前に TurnAborted が出ることがあり、後片付けが残っているのに終了イベントが見えてしまっていた。

After

タスクの中止処理の中で on_turn_abort を待ってから TurnAborted を出す(既にキャンセル済みのタスクにもコールバックを届ける)。on_turn_stop と on_turn_abort が対応する終了イベントより先に完了することをドキュメントに明記。

📦 rust-v0.162.0-alpha.1 · トピック: セッション・スレッド管理

--remote のセッションコマンドで接続先サーバーの認証を使うように(#49624)

Before

--remote を付けたセッションコマンドでも、呼び出し側の資格情報やランタイムの初期化を行っていたため、workload identity を設定していて ID トークンを読めない環境では問題になっていた。

After

queue・archive・unarchive・delete は設定の検証後、指定したリモートの app-server に直接接続し、そのサーバーの認証と実行環境を使う。呼び出し側の作業ディレクトリの上書きは保持する。

📦 rust-v0.162.0-alpha.1 · トピック: セッション・スレッド管理

Guardian レビューでホストのスキル発見を省略(#49584)

Before

Guardian はスキルを使わないのに、ホストのスキル発見のせいで、主要な executor がオフラインのときに Guardian の起動やターン作成が止まることがあった。

After

Guardian のセッション初期化ではプラグインとスキルのウォームアップを省き、ターンのコンテキストには空のホストスキルのスナップショットを使う。

📦 rust-v0.162.0-alpha.1 · トピック: Guardian

MCP のエンタープライズ管理トークン交換を rmcp SDK に移行(#49473)

Before

エンタープライズ管理(EMA)のトークン交換(2 段階の ID-JAG 交換とトークン検証)を Codex 内で独自に実装していた。

After

rmcp を 3.3.0 の固定 Git リビジョンに上げて auth-enterprise-managed を有効にし、交換と検証を SDK に任せる(HTTP のルーティングと資格情報のライフサイクルの方針は Codex 側に残す)。SDK のエラーは交換の段階ごとに対応づけ、invalid_grant でエンタープライズの ID の失敗とリソースの認可の失敗を区別する。insufficient_user_authentication の扱いは維持。

📦 rust-v0.162.0-alpha.1 · トピック: MCP

ログインシェルの起動後に executor のツールのパスを戻す(#49467)

Before

ログインシェルの起動で PATH がリセットされ、executor が報告したディレクトリにある同梱ツール(rg など)がコマンドやその子プロセスから見つからないことがあった。

After

login_shell_package_path が有効なとき、POSIX のログインシェル内で、PATH に無い executor のディレクトリを先頭に追加してから要求されたコマンドを実行し、子コマンドにも PATH を export する。明示的な PATH の上書きを尊重し、シェルの診断と $LINENO は元のスクリプトに合わせる。この機能は引き続き既定で無効。

📦 rust-v0.162.0-alpha.1 · トピック: シェル・コマンド実行

診断ログを経過時間とデータベースサイズで定期的に削除(#49425)

Before

期限切れのログの削除は起動時だけで、長時間のセッションでは残り続けた。また保持期間だけではデータベースの使用量を制限できなかった。

After

初期化直後と 30 分ごとにバックグラウンドで削除する。10 日の保持期間から始め、使用中の SQLite のページが 64 MiB に収まるか期間が 1 秒になるまで期間を半分にしていく(最後の 1 秒分は超過しても残す)。空きページは予算に含めない。

📦 rust-v0.162.0-alpha.1 · トピック: 状態データベース

デーモンが起動する app-server で分析を既定で有効に(#49426)

Before

デーモンが起動する app-server は、ファーストパーティのクライアントと同じ分析の既定値を使っていなかった。

After

PID バックエンドが app-server を起動するとき(リモートコントロールの有無にかかわらず)--analytics-default-enabled を渡す。config.toml の analytics.enabled = false で引き続き無効にできる。

📦 rust-v0.162.0-alpha.1 · トピック: デーモン

//server/share 形式の Windows UNC パスを正しく推定(#49424)

Before

LegacyAppPathString は //server/share/project を POSIX のパスとして扱い、PathUri の推定で UNC としての解釈が失われていた。

After

API のパスが区切り文字 2 つで始まる場合は、スラッシュやバックスラッシュの混在を含めて、ホストに関係なく Windows の構文と推定する(例: file://server/share/project)。ダブルスラッシュの POSIX パスには明示的な PathConvention::Posix が必要。

📦 rust-v0.162.0-alpha.1 · トピック: 実行環境アクセス

その他

本文のある PR のうち、テスト・内部実装・ログに関するもの(8 件):

  • app-server の time provider をローカル変数に束縛(#49411)📦 rust-v0.162.0-alpha.1
  • SQLite ログから tokio_graceful::guard・tokio_graceful::trigger の TRACE を除外(#49414)📦 rust-v0.162.0-alpha.1
  • プロトコルのデバッグ出力で入力テキストを 512 バイトまでに切り詰め(#49415)📦 rust-v0.162.0-alpha.1
  • 複数行の ANSI 警告ログに内容を出さず、input_bytes・line_count だけを記録(#49416)📦 rust-v0.162.0-alpha.1
  • JSONL の逆方向スキャンで改行の検索に memrchr を使用(#49444)📦 rust-v0.162.0-alpha.1
  • 実験的なスレッド予測のプロトコル型(thread/prediction/request・thread/prediction/updated)を定義。リクエストは未実装で method-not-found を返す(#49480)📦 rust-v0.162.0-alpha.1
  • 分析のバッチ間でアカウントを切り替えた場合の回帰テストを追加(#49489)📦 rust-v0.162.0-alpha.1
  • 実行ファイルのテストフィクスチャを descriptor 安全なヘルパーで書き込み・コピー(#50018)📦 rust-v0.162.0-alpha.1

本文の無い brief: true の PR(106 件、タイトルから領域ごとにまとめ):

  • TUI の表示・操作(質問への回答下書きの復元とエスケープ、フォーク時のバックグラウンド要求の保持、サーバーの Web 検索設定・モデル既定値の尊重、ショートカットのプラットフォーム別修飾キー表示、ローカル起動時の権限の保持、Enter 前の貼り付けバーストの処理、ブラウザ起動成功メッセージの削除、サービスティア保存エラーの文言、管理者権限の Windows TUI での embedded モード、利用状況・クレジットのリンク先を ChatGPT の設定に、起動時の表示と実行設定の分離、personality の配線の削除、不正なキーバインドの検証エラーの保持、ファイル検索の古い結果の表示防止、トランスクリプトの検索(Find)の改善、フルスクリーンのプロンプトのスクロール、フッターや読み込み表示の整理など) 24 件(#49678、#49783、#49799、#49804、#49809、#49810、#49816、#49822、#49835、#49855、#49867、#49874、#49875、#49876、#49910、#49946、#50013、#50039、#50045、#50052、#50105、#50109、#50112、#50128)📦 rust-v0.162.0-alpha.1 20 件 / ⏳ 未リリース 4 件
  • Daybreak(codex exec での選択、TUI の /daybreak トグル、継続・バックグラウンドタスクでの設定の尊重、ステータス行と端末タイトルへの表示) 4 件(#49856、#49858、#49859、#49861)📦 rust-v0.162.0-alpha.1
  • Guardian まわり(非同期サンプリング・v2 非同期分類での会話の保持、分類の継続での同期レビューの重複防止、保持コンテキストの省略通知の重複排除、送信者レビューに直前のアシスタントの文脈を含める、非同期の履歴プレフィックスの維持、Guardian decisions の API キーを環境変数の転送から保護、ハンドオフのコンテキストでユーザーの制限を保持、Decisions トランスポートと Guardian V2 のオプトインの比較) 10 件(#49792、#49793、#49795、#49796、#49951、#49993、#50019、#50026、#50066、#50099)📦 rust-v0.162.0-alpha.1 9 件 / ⏳ 未リリース 1 件
  • MCP 関連(MCP のサンドボックスのメタデータに MXC バックエンドを含める、フックの引数展開の正規表現のキャッシュ、更新可能な EMA の HTTP 認証と資格情報のバージョン管理、レガシーなプロトコルでのツール一覧のページング、リモート MCP サーバーへの Windows の環境変数の保持) 5 件(#49781、#49956、#49987、#50035、#50129)📦 rust-v0.162.0-alpha.1 4 件 / ⏳ 未リリース 1 件
  • サンドボックス・権限まわり(managed requirements で Windows MXC サンドボックスを無効化、管理者権限の Windows サンドボックスで PowerShell の相対パスを保持、サンドボックス内のファイルオープン専用のパラメータ、権限の付与を元のターンに紐付け、拡張のファイルシステムアクセスをコールバックの権限に限定、一時的な構造化スレッドで承認ポリシーを尊重) 6 件(#49642、#49690、#49818、#49880、#49898、#49912)📦 rust-v0.162.0-alpha.1
  • exec-server・シェル実行まわり(ファイル読み取りのチャンク間でのキャンセル、ファイルハンドル管理の識別子の改名、ストリーミングでのファイル書き込みのプロトコル型と書き込み可能なファイルストリーム、非対応の fs/writeBlock の処理、環境情報のキャッシュと出力チャンクのバッファ共有、失敗したシェルスナップショットのプロセスグループの片付け、TCP トンネルの JSON 診断(オプトイン)) 9 件(#49696、#49702、#49778、#49782、#49798、#49805、#49811、#49972、#50131)📦 rust-v0.162.0-alpha.1 8 件 / ⏳ 未リリース 1 件
  • モデル・プロバイダ・認証まわり(Responses のルーティング項目を大きな入力より先にシリアライズ、API キーの cyber access プログラムをモデル発見から分離、API キーでのモデル発見を既定で有効に、Amazon Bedrock Mantle の AWS GovCloud リージョン対応と要件チェック、モデルカタログによる TUI の cyber 拒否時の案内、exec と SDK でターンごとの Cyber access プログラム選択、TUI のアカウントのセキュリティ設定リマインダー) 8 件(#49675、#49714、#49715、#49807、#49813、#49817、#49857、#49939)📦 rust-v0.162.0-alpha.1
  • マルチエージェント(リモートのメッセージボード通知を実行中のターンに届ける、コンテキストのカタログ向けの V2 の spawn のモデル上書きガイダンス、ローカルのエージェントツリーの協調シャットダウン、新しい V2 サブエージェントへの動的ツールの継承、セッション退避時にキュー中のエージェントメールを保持) 5 件(#49686、#49786、#49814、#50082、#50087)📦 rust-v0.162.0-alpha.1
  • スレッド・履歴・状態管理まわり(rollout の検索・一覧・履歴の射影を blocking ワーカーへ、セッションインデックスの I/O を非同期ランタイムの外へ、起動時の SQLite 破損の検出と復旧用バックアップ・型付きエラーコードでの分類、空のページ分割スレッドの命名時の永続化、スレッドの無いリプレイ専用のサイド会話の片付け、ターンごとのホスト拡張データと world-state スナップショットの保存、スレッドの添付ファイルの逆引きと所有者の検索、クラウドのスレッドの再開・アタッチ用のネイティブ gRPC クライアント、セッションインデックスのテスト) 16 件(#49692、#49693、#49694、#49701、#49708、#49710、#49785、#49800、#49806、#49846、#49847、#49894、#49959、#50083、#50094、#50113)📦 rust-v0.162.0-alpha.1 15 件 / ⏳ 未リリース 1 件
  • デーモン・診断(作業ディレクトリ削除後のデーモン起動とアップデータの再実行の復旧、デーモンの診断の保持とレポートへのアップデータのログ追加、Windows のデーモンの子プロセスを専用の作業ディレクトリで起動、レポート添付の失敗の診断改善) 4 件(#49819、#49843、#49850、#49852)📦 rust-v0.162.0-alpha.1
  • プラグイン・スキル・指示(スキル呼び出しイベントの OpenTelemetry 出力、シャドウのスキルランキングをターン準備の経路の外へ、プラグイン・スキルのスナップショットをステップごとに、共有の指示プロバイダの自己委譲の防止) 4 件(#49689、#49812、#50050、#50093)📦 rust-v0.162.0-alpha.1
  • 音声: 音声会話でマイクのチャンネルを選べるように(#49836)📦 rust-v0.162.0-alpha.1
  • 性能・内部整理(トークン予算の切り詰めで文字列全体を走査しない、トークン推定のフィルタをトレースのサブスクライバで直接確認) 2 件(#49712、#50054)📦 rust-v0.162.0-alpha.1
  • ビルド・CI・テスト・リポジトリ整理(ネットワーク承認テストの順序非依存化、npm の alpha dist-tag の後退防止、argument comment lint のツールチェーンと Dylint の更新、リポジトリ内の Codex 向けガイダンス・スキル・環境設定の削除、Bazel のテストデータから AGENTS.md を削除、Windows の音声ビルドのキャッシュキーの安定化、windows-sys 0.61.2 への更新) 8 件(#49595、#49704、#49706、#49713、#49787、#49801、#50046、#50058)📦 rust-v0.162.0-alpha.1