Codex CLI 0.156を実機で全部試した:フルスクリーン・/usage・音声会話・ワークツリー、GPT-6 Sol/Lunaまで

AI最新情報

はじめに

「新しいバージョンが出たらしいけれど、結局なにが変わって、どれを使えば得をするのか分からない」。AIコーディングツールを毎日使っていると、こうした状態になりがちです。更新内容の一覧を読んでも、実際に触らないと使いどころは見えてきません。

OpenAIのターミナル向けAIエージェント Codex CLI は、2026年9月22日(日本時間では23日早朝)に 0.156.0 を公開しました。さらに翌日、修正版の 0.156.1 も出ています。今回の更新には、画面表示の刷新、使用量の分析画面、音声会話、作業用コピー(ワークツリー)を使った並行作業、サンドボックスの強化、新モデル GPT-6 Sol / Luna への対応が含まれています。

この記事では、これらの新機能を 手元のMacで一通り動かし、画面と数値で確かめた結果をまとめます。特に次の3点は、公式のリリースノートだけでは分からない部分として実測しました。

  • 旧版(0.154.0)と新版(0.156.1)のサンドボックスで同じ検査を行い、何が拒否されるようになったか
  • 2つの作業を別々の作業用コピーで同時に進め、元のフォルダが汚れないか
  • GPT-6 Astra・Sol・Luna に同じ課題を各3回解かせたときの、合格率・所要時間・トークン数

想定読者は、Codex CLI を使ったことがある方、またはこれから使う予定の方です。専門用語には、初出時に短い説明を添えます。

最初に、今回の更新で変わった6つの点を1枚の図にまとめました。枠が順に光る箇所を追うと、この記事の流れがつかめます。

Codex CLI 0.156で変わった6つの点(画面と操作、使用量の見える化、音声会話、並行作業、安全性の強化、新モデル)を順番に強調する図

図1:0.156.0/0.156.1 の主な変更点。①〜⑥の順に、この記事の各章で実機の結果を紹介します(静止画版)

検証環境とこの記事の読み方

検証は2026年9月24日に、次の環境で行いました。

項目内容
マシンMac(Apple M5 Max、メモリ128GB)
OSmacOS 26.6.2
Codex CLI0.154.0 → 0.156.1(スタンドアロン版。~/.local/bin/codex)
サインインChatGPT(Pro プラン)
練習用リポジトリ~/codex-lab(読書記録の CSV と、ジャンル別に集計する summary.py だけの小さなもの)

リリースの基本情報は次のとおりです。公開日時は GitHub のリリースページで確認しました。

バージョン公開日時(日本時間)主な内容
0.156.02026-09-23 04:51新機能とバグ修正の本体
0.156.12026-09-23 11:41GPT-6 Sol / Luna をモデル選択に追加

記事中の端末画面は、疑似端末でCodexを実際に動かし、出力された文字と色をそのまま描き直したものです(OSのスクリーンショットではありません)。見やすさのために「Tip:」で始まる案内行を省き、ホームフォルダのパスを ~ に置き換えています。メールアドレスとアカウント名、エージェント一覧に出る別の作業の名前は、伏せ字(* や ░)にしました。

1. アップデート:codex update の1コマンドで8秒

スタンドアロン版を使っている場合、更新は次の1コマンドです。npm で入れている場合は npm install -g @openai/codex@0.156.1 を使います。

# 現在のバージョンを確認してから更新する
codex --version
codex update

手元での実行結果です(ホームフォルダのパスは ~ に置き換えています)。

Updating Codex via `sh -c 'curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh'`...
==> Updating Codex CLI from 0.154.0 to 0.156.1
==> Detected platform: macOS (Apple Silicon)
==> Resolved version: 0.156.1
==> Downloading Codex CLI
==> Installing standalone package to ~/.codex/packages/standalone/releases/0.156.1-aarch64-apple-darwin
Codex CLI 0.156.1 installed successfully.

🎉 Update ran successfully! Please restart Codex.

time で測ったところ、完了まで 8.1秒 でした。内部では公式のインストーラーが新しいフォルダに展開し、current という参照先を新版に付け替えています。旧版のフォルダは消えずに残るため、この記事では旧版をフルパスで直接起動して、新旧のサンドボックスを比べました。

codex update の5つの段階と、releases フォルダに新版が追加され current の参照先が 0.154.0 から 0.156.1 に切り替わる様子を示す図

図2:codex update の流れ。旧版(0.149.0・0.154.0)はフォルダに残ったままです(静止画版)

更新後に、機能の有効・無効を一覧できる codex features list を新旧で比べました。自分の設定の影響を受けないよう、空のフォルダを設定置き場(CODEX_HOME)に指定しています。

0.154.0 と 0.156.1 の features list の差分。worktrees が experimental/false から stable/true、realtime_conversation が removed/false から stable/true に変わっている

差分の < が旧版、> が新版です。ワークツリーと音声会話が「既定でオン」に変わりました

差分から読み取れる主な変化を表にまとめます。

機能名0.154.00.156.1意味
worktrees実験的・オフ安定版・オン作業用コピーでの並行作業が標準に
realtime_conversation削除扱い・オフ安定版・オン音声会話(F8)が標準に
personality安定版・オン削除応答スタイルの選択が廃止
transcript_v2開発中非推奨フルスクリーン表示は tui.fullscreen_transcript へ移行
daemon_auto_startなし実験的・オフバックグラウンドサーバーの自動起動(/experimental で切替)

既定でオンになった機能を社内で止めたい場合は、config.toml の [features] で worktrees = false や realtime_conversation = false を指定します。

2. 画面が変わる:/tui とフルスクリーン表示

/tui は「次回起動時」の表示方式を選ぶ

新しいスラッシュコマンド /tui を実行すると、表示方式を選ぶ画面が出ます。選択肢は、これまでどおりターミナルの履歴に流す Scrollback と、Codexが画面全体を使う Fullscreen の2つです。

/tui を実行したときの選択画面。Scrollback (current) と Fullscreen の2択で、Restart to apply と書かれている

「Restart to apply(再起動で反映)」とあるとおり、いま開いている画面はすぐには切り替わりません

Fullscreen を選ぶと「Saved TUI mode: Fullscreen」と表示されます。設定ファイル ~/.codex/config.toml の [tui] に fullscreen_transcript = true が書き込まれ、次に codex を起動するとフルスクリーンで立ち上がりました。

Saved TUI mode: Fullscreen. Restart Codex to apply と表示された画面

保存後の表示。検証後は設定を元に戻しています

設定を書き換えずに1回だけ試したい場合は、起動時に指定します。起動時の指定は、保存した設定より優先されます。

# 設定ファイルは変えずに、今回だけフルスクリーンで起動する
codex -c tui.fullscreen_transcript=true
/tui で選ぶ Scrollback と Fullscreen の違いと、選択→設定保存→再起動→起動時指定の優先、の順に強調する図

図3:/tui の2つの表示方式と、設定が反映されるまで(静止画版)

なお、0.156.x での既定は Scrollback です。ただ、開発中の main ブランチには既定をフルスクリーンに変える変更(PR #47178)がすでに入っているので、次のリリースで既定が変わる可能性があります。

回答中の Mermaid 図と数式がそのまま描かれる

フルスクリーンで、summary.py の処理の流れを Mermaid(文字で図を書く記法)で、平均ページ数の式を数式で示すよう頼みました。すると、Mermaid のコードは枠と矢印の図として、$$...$$ で囲んだ数式は分数を縦に積んだ形で表示されました。

Codex の回答内で、Mermaid の flowchart が箱と矢印の図として描かれ、平均ページ数の式が分数の形で表示されている画面

Mermaid と数式の表示。箱の配置や矢印の引き回しは、ターミナルの文字だけで描いているため簡略的です

対応している図の種類は、flowchart、sequence、state、class、ER の一部です。閉じていないコードや大きすぎる図は、元の文字のまま表示されます。表示を止めたい場合は、tui.rendering.mermaid、tui.rendering.math、tui.rendering.tables を false にします。

F3 で探し、ドラッグで選び、右クリックでコピー

フルスクリーン表示の実用面での目玉は、会話内の検索と、マウスでのコピー です。これまでは、長い会話から1行を取り出すにはターミナル側の機能に頼るしかありませんでした。

手順は次の図のとおりです。

F3で検索欄を開く、文字を入力して該当箇所を強調、ドラッグで選択、右クリックでコピーという4段階を、画面の変化とともに示す図

図4:検索からコピーまでの流れ(静止画版)

実際に2往復の会話をしたあとで、F3 で「ページ」を検索しました。次に、回答中の「火星の人」をドラッグして右クリックしました。画面下に「Copied 4 chars to host clipboard」と表示され、4文字がコピーされたことを確認できました。

フルスクリーンでの操作録画。会話の表示、F3でページを検索、検索を閉じる、火星の人をドラッグして選択、右クリックでCopied 4 chars と表示されるまで

実機の操作を順につないだ録画(最後の画面)。選択中は「ctrl+c copy · enter copy & follow」と案内が出ます

検証では、コピーされた中身を記録するため、SSH接続時と同じ「端末へのコピー命令(OSC 52)」で受け取りました。受け取った文字列が「火星の人」であることも確認しています。フルスクリーン時のおもな操作を表にまとめます。

操作キー補足
会話内を検索F3Enter で次、ctrl+p で前。検索は大文字小文字を区別しない
マウスで選択ドラッグキーボードなら ctrl+space から
コピー右クリック / ctrl+c成功すると「Copied N chars」
作業ログを展開F4折りたたまれたコマンド実行の詳細を見る
警告の一覧F2画面右下の「⚠ 1 warning」の中身を確認
入力履歴を検索ctrl+r入力欄の履歴検索(0.154.0 にもあった機能)

「履歴検索」という言葉には注意が必要です。入力欄で過去の入力を探す ctrl+r は以前からあります。0.156 で新しく加わったのは、会話の表示そのものを探す F3 の検索 です。

新しいテーマが6種類

/theme の一覧に、ada、babbage、curie、cushman、dali、davinci の6種類が加わりました。一覧で選択を動かすと、右側の差分の見本がその場で切り替わります。

/theme で davinci を絞り込み、右側に差分表示の見本が出ている画面

「davinci」で絞り込んだところ。設定ファイルでは tui.theme = "davinci" のように指定します

3. /usage:使用量を画面で分析する

最初の2択に注意

/usage を実行すると、まず2つの選択肢が出ます。1つ目の View analytics は使用履歴の分析画面を開くだけです。2つ目の Redeem reset は、利用上限のリセットを確認・使用するための項目です。リセットは消費すると元に戻せないため、今回の検証では選んでいません。

/usage の最初の画面。1. View analytics と 2. Redeem reset の2つが並ぶ

使用量を見るだけなら 1 を選びます

/usage から View analytics と Redeem reset に分かれ、分析画面の6つのタブとダッシュボードの中身を順に強調する図

図5:/usage の画面構成(Pro プランで確認。静止画版)

Overview タブで全体像をつかむ

最初に開く Overview タブには、累計トークン数、最大トークン数(Peak tokens)、最も長いチャットの時間、連続利用日数が並びます。下には過去12か月の利用状況のカレンダー、Fast モードの使用率、よく使う推論レベル、よく使うプラグインとスキルが表示されます。

Usage の Overview タブ。Lifetime tokens 2.9B、Peak tokens 624.4M、Longest chat 10h 29m、連続22日、過去12か月のカレンダー、Most used plugins and skills の一覧

筆者のアカウントの Overview。メールアドレスとアカウント名は伏せています

z キーを押すと、各タブの要約をカードで並べたダッシュボードに切り替わります。

z キーで表示したダッシュボード。プロフィール、Total usage、Messages、Plugins の各カードが並ぶ

ダッシュボード表示。Enter で1枚のカードに集中できます

画面内のキー操作は ? で確認できます。

Usage shortcuts の一覧。Tab で次のレポート、1〜6 で直接移動、g でグループ切り替え、R で再取得、z でダッシュボードなど

分析画面のショートカット一覧

数値を読むときの注意

Usage タブの数値は「relative units(相対値)」で、「最大6時間遅れることがある」と画面に明記されています。そのため、1回1回の作業のコストを測る用途には向きません。アカウント全体の傾向、たとえば「どの機能・モデルで多く使っているか」を週単位で見る道具として使うのが適しています。作業単位での測り方は、第8章で紹介します。

4. 音声会話:F8 で話しかけ、声で返事をもらう

0.156.0 で、音声会話が既定で有効になりました。入力欄で F8 を押すと会話が始まり、もう一度押すと終わります。macOS 向けのパッケージにも、音声処理用のファイル一式(約20MB、codex-resources/voice)が同梱されていました。

検証では、マイクに向かって話す代わりに、macOS の say コマンドで質問を読み上げました。

# Codex の音声会話中(listening と表示されている状態)に、スピーカーから質問を読み上げる
say -v Kyoko "サマリー・ドット・パイは、何をするファイルですか? 一言で答えてください。"

結果、マイクが読み上げを拾い、質問が文字起こしされて入力欄の上に表示されました。Codex は「今確認するね。読書記録をジャンル別に集計するファイルです。」と声とテキストで答えています。

音声会話の録画。listening 状態、say での読み上げ後に質問が文字起こしされ、Codexが返答し、F8で終了するまで

F8 で開始 → 読み上げ → 文字起こしと返答 → F8 で終了(最後の画面)

音声会話中の画面。Voice conversation started の案内、文字起こしされた質問、Codexの回答、voice listening の表示と mic・codex の音量メーター

会話中は「voice ● listening」と、マイクと Codex の音量メーターが表示されます

F8で開始、話す、文字起こし、作業して返答、F8で終了の流れと、会話中の操作・声の選択を示す図

図6:音声会話の流れ(静止画版)

声の種類は /voice settings で選べます。選んだ声が使われるのは、次の音声会話から です。

/voice settings の画面。Select voice の見出しと、maple、spruce、ember、vale、breeze、arbor、sol、cove などの声の一覧

声の選択画面。「Applies to your next voice conversation.」と表示されます

音声会話で押さえておきたい点をまとめます。

  • 会話中は ctrl+x でミュート、/voice で停止できます。F8 の割り当ては tui.keymap.chat.toggle_voice で変えられます
  • 対応しているのは macOS、MSVC 版の Windows、glibc 版の Linux です(ソースコードのエラー文より)。musl 版の Linux などでは使えません
  • CLI の音声会話でどのモデルが使われ、料金がどうかかるのかは、公式ドキュメントに明記されていません(デスクトップアプリの音声は1分あたり1.25クレジットと公式に記載があります)
  • 共用の場所で意図せず音声が有効にならないよう、止めたい場合は features.realtime_conversation = false を設定します

5. 並行作業:agent command center とワークツリー

まずバックグラウンドサーバーを起動する

複数の作業をまとめて管理する画面 agent command center は、codex agents で開きます。ふだんの Codex の画面から /agents を実行した場合、共有のバックグラウンドサーバー(デーモン)が動いていないと、次のように案内されます。

Shared agents unavailable の画面。This session isn't connected to a shared background server と表示され、Start background server と Return to this session の選択肢がある

バックグラウンドサーバーが動いていないときの表示

別のターミナルで codex agents を実行すると、サーバーが起動し、すべてのプロジェクトの作業が一覧で表示されました。サーバーが動いている間は、/status に「Server: Local background server」と表示されます。/daemon では、動いているサーバーのバージョン(v0.156.1)を確認できました。

/status の出力。Server: Local background server の行がある

/status に接続先のサーバーが表示されるようになりました

/daemon の画面。Running daemon: v0.156.1 と、Install latest public stable、Use this CLI build の2つの選択肢

/daemon ではサーバーの更新方法を選べます(PR の説明では、選ぶと Codex がいったん終了して更新を実行します。今回は実行していません)

サーバーを使いたくない場合は、codex --no-daemon で起動します。ただし、この起動方法は codex agents とは組み合わせられません。実際に試すと、次のエラーが出ました。

$ codex --no-daemon agents
ERROR: --no-daemon cannot be used with codex agents. The agents overview requires a shared server. Use codex --no-daemon to work without it.

w キーで作業用コピーを作り、2つの作業を同時に任せる

agent command center で w を押すと、プロジェクトの既定ブランチから作業用コピー(ワークツリー:同じリポジトリを別フォルダに展開したもの)が作られ、その中で新しい会話が始まります。今回は ~/.codex/worktrees/4cbf/codex-lab に作られました。

ワークツリーのセッションで作業中の画面。directory が ~/.codex/worktrees/4cbf/codex-lab になっている

作業用コピーの中で会話が始まった状態。右下の「← for agents」で一覧に戻れます

ここで、2つの作業を並行して頼みました。

  1. 作業用コピーA:books.csv に1冊追加し、python3 summary.py の結果を見せる
  2. 作業用コピーB:summary.py にジャンル別の平均ページ数の表示を追加する

一覧に戻ると、2つの作業が「Working」から「Ready」に変わっていく様子を確認できました。右側の詳細欄には、各作業の最後の返答とトークン数(例:「Tokens: 140K in · 699 out」)が表示されます。

agent command center の録画。1つ目のワークツリー作成、作業開始、一覧で Working 表示、2つ目も Working、両方 Ready、Ready タブで絞り込み

実機の録画(最後の画面)。別プロジェクトの作業名は伏せ字にしています

Ready タブで絞り込んだ agent command center。~/codex-lab の2件だけが表示され、右側に平均ページ数の実行結果が出ている

上部のタブ(All / Needs you / Working / Ready / Inactive)は Tab キーで切り替えます

作業後の状態を git で確認しました。元のリポジトリには何の変更もなく、それぞれの作業用コピーにだけ差分が残っています。

$ git -C ~/codex-lab worktree list
~/codex-lab                       754c4ea [main]
~/.codex/worktrees/4cbf/codex-lab 754c4ea (detached HEAD)
~/.codex/worktrees/eee2/codex-lab 754c4ea (detached HEAD)
~/.codex/worktrees/f956/codex-lab 754c4ea (detached HEAD)

$ git -C ~/codex-lab status --short        # 元のリポジトリは変更なし
$ git -C ~/.codex/worktrees/4cbf/codex-lab diff --stat
 books.csv | 1 +
$ git -C ~/.codex/worktrees/f956/codex-lab diff --stat
 summary.py | 5 +++--

eee2 は、操作を確かめるために最初に w を押して作った空のコピーです。

元のリポジトリから w キーで作業用コピーA・Bを作り、それぞれ Working から Ready になる流れと、注意点3つを順に強調する図

図7:ワークツリーを使った並行作業(静止画版)

使うときの注意点は3つあります。

  • 作業用コピーは、既定ブランチのコミットから detached HEAD(ブランチに属さない状態)で作られます。fetch は行われないため、最新の状態から始めたいときは先に git pull しておきます
  • 結果は自動では取り込まれません。各コピーで差分を確認し、必要ならブランチを作ってコミットし、元のブランチへ取り込みます
  • 作業用コピーは ~/.codex/worktrees/ に残ります。不要になったら git worktree remove <パス> で片付けます

一覧を開かずに、起動時から作業用コピーで始めることもできます。

# 新しい作業用コピーで対話を始める
codex --worktree

# 対話なしで実行する場合(--ephemeral とは併用できない)
codex exec --worktree "books.csv の本の冊数を数えて、数字だけ答えて。ファイルは変更しないで。"

codex exec --worktree を実際に動かすと、workdir: ~/.codex/worktrees/2651/codex-lab と表示され、新しい作業用コピーの中で「7」と回答しました。なお、履歴を残さない --ephemeral と組み合わせると「–worktree cannot be combined with –ephemeral」というエラーになります。

6. サンドボックス強化:0.154.0 と 0.156.1 で同じ検査をする

サンドボックスとは、Codex が実行するコマンドの権限を、OSの仕組みで制限する機能です。0.156.0 では、この制限をすり抜けられる抜け道がいくつかふさがれました。リリースノートの記述だけでは実感しにくいので、新旧のバージョンで同じ検査を行いました。どの検査も「届くか・拒否されるか」を確かめるだけで、抜け道を悪用する操作はしていません。

サンドボックスの4つの修正点について、0.154.0 と 0.156.1 の結果を行ごとに強調する図

図8:ふさがれた抜け道と確認結果(静止画版)

検査1:読み取り専用のファイルに「書き換え系の fcntl」を発行する

macOS には、読み取り専用で開いたファイルでも中身を変えられてしまう fcntl(ファイルへの特殊な操作命令)があります。0.156.0 では、そのうち80番(F_MAKECOMPRESSED)と110番(F_TRANSFEREXTENTS)をサンドボックスで拒否するようになりました(PR #46500)。

検査には、読み取り専用で開いたファイルに命令を出し、結果だけを表示する小さなCプログラムを使いました。

// fcntl_probe.c : 読み取り専用で開いたファイルに fcntl を発行し、戻り値と errno を表示する
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/param.h>
#include <unistd.h>

static void probe(int fd, int cmd, const char *name, long arg) {
    errno = 0;
    int r = fcntl(fd, cmd, arg);
    printf("%-18s (cmd %3d): ret=%d errno=%d (%s)\n", name, cmd, r, errno, errno ? strerror(errno) : "OK");
}

int main(int argc, char **argv) {
    if (argc < 2) { fprintf(stderr, "usage: %s FILE\n", argv[0]); return 2; }
    int fd = open(argv[1], O_RDONLY);
    if (fd < 0) { perror("open"); return 1; }
    char path[MAXPATHLEN];
    probe(fd, F_GETPATH, "F_GETPATH", (long)path);      // 参照だけの命令(比較用)
    probe(fd, 80, "F_MAKECOMPRESSED", 0);               // 今回拒否されるようになった命令
    probe(fd, F_TRANSFEREXTENTS, "F_TRANSFEREXTENTS", -1);
    close(fd);
    return 0;
}

コンパイルして、新旧の codex sandbox の中で動かします。codex sandbox は、Codex と同じ制限をかけて任意のコマンドを実行するサブコマンドで、既定では読み取り専用・ネットワークなしで動きます。

# 自分の設定の影響を受けないよう、空のフォルダを CODEX_HOME にする
mkdir -p /tmp/codex-home-empty && export CODEX_HOME=/tmp/codex-home-empty
clang -O1 -o fcntl_probe fcntl_probe.c && echo sample > target.txt

# 旧版はフルパスで起動する(スタンドアロン版の例)
OLD=~/.codex/packages/standalone/releases/0.154.0-aarch64-apple-darwin/bin/codex
$OLD sandbox -- ./fcntl_probe target.txt
codex sandbox -- ./fcntl_probe target.txt
新旧の codex sandbox で fcntl_probe を実行した結果。0.154.0 では errno 70 と 22、0.156.1 では両方 Operation not permitted

0.154.0 では命令がカーネルまで届き(ダミーの引数のため失敗しただけ)、0.156.1 ではサンドボックスが「Operation not permitted」で止めています

画面の出力をテキストでも載せておきます。

$ $OLD sandbox -- ./fcntl_probe target.txt        # 0.154.0
F_GETPATH          (cmd  50): ret=0 errno=0 (OK)
F_MAKECOMPRESSED   (cmd  80): ret=-1 errno=70 (Stale NFS file handle)
F_TRANSFEREXTENTS  (cmd 110): ret=-1 errno=22 (Invalid argument)
$ codex sandbox -- ./fcntl_probe target.txt       # 0.156.1
F_GETPATH          (cmd  50): ret=0 errno=0 (OK)
F_MAKECOMPRESSED   (cmd  80): ret=-1 errno=1 (Operation not permitted)
F_TRANSFEREXTENTS  (cmd 110): ret=-1 errno=1 (Operation not permitted)

旧版で返ってきた errno 70 と 22 は、命令がカーネル側の処理まで進み、今回わざと渡したダミーの引数で失敗したことを示しています。つまり、サンドボックスには止められていませんでした。新版では、命令がカーネルに届く前に「Operation not permitted」で拒否されています。

検査2:ネット許可ありのコマンドから、制御用ソケットへ接続する

codex agents などで使うバックグラウンドサーバーは、Unix ソケット(同じマシン内でプロセス同士が通信する窓口)で命令を受け付けます。このサーバーはサンドボックスの外で強い権限で動いているため、サンドボックス内のコマンドから接続できてしまうと、制限を回避される恐れがあります(PR #45984)。

そこで、接続して閉じるだけのPythonスクリプトで確かめました。

# sock_probe.py : 指定した Unix ソケットに接続できるかだけを調べる(命令は送らない)
import os, socket, sys
for p in sys.argv[1:]:
    s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    try:
        s.connect(p)
        print("CONNECTED ", p.replace(os.path.expanduser("~"), "~"))
    except OSError as e:
        print("BLOCKED   ", p.replace(os.path.expanduser("~"), "~"), f"({e.strerror})")
    finally:
        s.close()
# バックグラウンドサーバーを起動しておき(codex agents で起動する)、ネット許可ありの設定で比べる
S=~/.codex/app-server-control/app-server-control.sock
NET='-c sandbox_mode="workspace-write" -c sandbox_workspace_write.network_access=true'
eval $OLD sandbox $NET -- python3 sock_probe.py $S
eval codex sandbox $NET -- python3 sock_probe.py $S
新旧の codex sandbox でソケット接続を試した結果。0.154.0 は CONNECTED、0.156.1 は BLOCKED (Operation not permitted)

旧版は接続できてしまい、新版は拒否しました

$ eval $OLD sandbox $NET -- python3 sock_probe.py $S     # 0.154.0
CONNECTED  ~/.codex/app-server-control/app-server-control.sock
$ eval codex sandbox $NET -- python3 sock_probe.py $S    # 0.156.1
BLOCKED    ~/.codex/app-server-control/app-server-control.sock  (Operation not permitted)

新版でも、https://example.com への通常の通信は HTTP 200 で成功しました。ネットワークの許可はそのままに、制御用ソケットだけを締め出していることが分かります。ソケットの実体は /private/tmp/codex-daemon-<ユーザーID>/ という、本人しか入れない権限(0700)のフォルダに置かれていました。

検査3:ポリシー文の差分で確認したもの

サンドボックスのルール(macOS の Seatbelt ポリシー)は Codex 本体に埋め込まれているので、新旧の実行ファイルから抜き出して比べました。すると、fcntl の拒否に加えて、XPC サービス(アプリに付属するサービス)の参照をすべて拒否する1行(PR #46583)が加わっていました。一方、com.apple.runningboard への接続許可は削除されていました(PR #46532)。

Windows のオフライン用サンドボックスで外部からの受信を遮断する修正(PR #44639)は、Mac では試せないため確認していません。Linux では、ファイルの制限がかかる実行に bubblewrap が必須になりました。features.use_legacy_landlock を有効にしている場合は、無効にする必要があります。

ここで大切な前提があります。これらの修正は、サンドボックスを有効にして使っているときにだけ 効きます。--dangerously-bypass-approvals-and-sandbox(いわゆる YOLO モード)で動かしている場合、そもそも制限がかかっていません。社内で使う設定を決めるときは、この点も含めて検討してください。

7. GPT-6 Sol / Luna:3モデルに同じ課題を解かせる

0.156.1 でモデル選択に追加

0.156.1 の変更点は、GPT-6 Sol と GPT-6 Luna のモデル選択への追加だけです。/model を開くと、Astra(既定)、Sol、Luna の順に並んでいました。

/model の画面。GPT-6-Astra (default)、GPT-6-Sol、GPT-6-Luna、GPT-5.6 系、GPT-5.5 が並ぶ

説明文は、Astra が「最も要求の厳しい作業向け」、Sol が「コーディングと日常作業の主力」、Luna が「簡単な作業向けの速くて安いモデル」です

OpenAI の発表と料金ページから、3モデルの違いを表にまとめます。

項目GPT-6 AstraGPT-6 SolGPT-6 Luna
位置づけ最上位普段のコーディング・エージェント作業決まった手順の繰り返し・大量処理
API 料金(入力/出力、100万トークンあたり)$10 / $50$2 / $10$0.10 / $0.50
Codex のクレジット(入力/キャッシュ/出力、100万トークンあたり)250 / 25 / 1,25050 / 5 / 2502.5 / 0.25 / 12.5
選べる推論レベルlow〜ultralow〜ultralow〜max(ultra なし)

Sol と Luna は、それぞれ GPT-5.6 Sol・Luna の半額です。提供範囲は Plus・Pro・Business・Enterprise・Edu の ChatGPT Work と Codex で、Free と Go はデスクトップアプリの Luna のみです。Enterprise では管理者による有効化が必要です。ChatGPT と Codex の GPT-5.5 は2026年10月14日に提供終了予定で、移行先には Sol(Free・Go は Luna)が案内されています。

5時間枠か週枠の使用率が90%に達したときに「安いモデルに切り替えますか?」と聞く案内も、0.156.1 から GPT-6 Luna を勧めるようになりました。この案内を出したくない場合は、表示された選択肢の「never show again」を選ぶか、notice.hide_rate_limit_model_nudge = true を設定します。

同じ課題を各3回解かせた結果

使い分けの目安を得るため、3モデルに同じ課題を解かせました。課題は、練習用リポジトリの summary.py に「月ごとの冊数を数える関数 by_month を追加し、unittest のテストを書いて通す」というものです。

  • 実行方法:codex exec --json --ephemeral(対話なし・履歴を残さない)
  • 推論レベル:3モデルとも medium にそろえた
  • 試行回数:各3回。毎回、元のリポジトリを複製した新しいフォルダで実行した
  • 合否:Codex が書いたテストが通ることに加え、こちらで用意した隠しテスト(7月2冊・8月3冊・9月2冊になるか、既存の集計が変わっていないか)にも通れば合格
モデル合格所要時間(中央値)入力トークン(うちキャッシュ)出力トークン実行コマンド数概算クレジット/回
GPT-6 Astra3/343.7秒107.5K(92.3K)93737.32
GPT-6 Sol3/336.8秒134.9K(118.5K)1,33981.74
GPT-6 Luna3/329.5秒157.8K(139.8K)92530.09

概算クレジットは、公式の単価に実測のトークン数を掛けて計算しました。入力は、キャッシュに当たった分とそれ以外を分けています。

この規模の課題では、3モデルとも全問正解でした。所要時間は Luna が最も短く、概算クレジットは Astra の約80分の1 です。Sol は Astra の4分の1以下で、今回はテストを実行し直すなど、実行コマンドがやや多めでした。

Astra・Sol・Luna の価格と実測値を並べ、最後に使い分けの順番を強調する図

図9:3モデルの比較と使い分けの目安(静止画版)

この結果の範囲について、補足しておきます。

  • 課題は小さく明確なもの1種類だけです。設計判断が必要な難しい課題では、差が出る可能性が高いと考えられます
  • 概算クレジットは単価からの計算値です。ChatGPT のプラン枠が実際にどれだけ減るかとは一致しない場合があります
  • Codex に同梱されたモデル一覧(カタログ)では、Sol と Luna の既定の速度設定が「priority(Fast)」になっています。Fast はクレジットを2.5倍消費するため、気になって確かめました。設定ファイルを空にした状態で Sol と Luna を起動しても、画面下のモデル表示に「fast」は出ませんでした。比較のため -c service_tier="priority" を付けて起動すると「GPT-6-Luna high fast」と表示されるので、表示上は Fast は無効です。ただし、判断材料は画面表示だけなので、心配な場合は /status や画面下のモデル表示を確認してください

8. 実務で「完了率 × トークン × 時間」を測る

AIエージェントの比較を「便利だった」という感想で終わらせないためには、1件の作業ごとに 完了したか・トークンをどれだけ使ったか・何秒かかったか を記録するのが近道です。0.156 では、そのための材料が3か所から取れるようになりました。

取得場所分かること向いている用途
codex exec --json の turn.completed1回の実行の入力・キャッシュ・出力トークン作業ごとの記録、モデル比較
agent command center の詳細欄作業ごとのトークン数(例:140K in · 699 out)並行して走らせている作業の見比べ
/usage の分析画面アカウント全体の傾向(機能別・モデル別・チャット別)週単位の振り返り

もっとも手軽なのは、codex exec の出力から使用量だけを抜き出す方法です。次のコマンドは、手元で実際に動かして確認しました(jq は JSON を整形する道具で、Homebrew なら brew install jq で入ります)。

# 1件の作業を実行し、かかった時間とトークン数を表示する
time codex exec --json --ephemeral -m gpt-6-luna -c model_reasoning_effort="medium" \
  -s workspace-write "summary.py の by_genre に docstring を1行追加して。" \
  | jq -c 'select(.type=="turn.completed") | .usage'
{"input_tokens":103526,"cached_input_tokens":88064,"cache_write_input_tokens":0,"output_tokens":346,"reasoning_output_tokens":0}

この出力を、課題の合否(テストが通ったか)と一緒に CSV などへためていけば、「このリポジトリの定型作業なら Luna で十分」「この種の不具合修正は Sol で完了率が上がる」といった判断を数字で下せます。今回のベンチマークに使ったスクリプトは、1件ごとにリポジトリを複製し、実行後に隠しテストで合否を判定する作りにしました。この形にしておくと、自分のリポジトリの課題にも流用できます。

トラブルシューティング

検証中に実際に見た表示と、公式情報で確認できた条件をもとに、つまずきやすい点をまとめました。

5つの症状と確認ポイントを、上から順に強調する図

図10:症状と確認ポイント(静止画版)

症状確認すること・対処
/agents で「Shared agents unavailable」表示された選択肢の 1 でサーバーを起動するか、別のターミナルで codex agents を実行します。--no-daemon で起動した画面からは使えません
F8 を押しても音声会話が始まらないポップアップが開いていないか、F8 を別の操作に割り当てていないかを確認します。musl 版 Linux などは非対応です。マイクの使用許可も確認します
/tui で選んだのに表示が変わらない反映は再起動後です。起動時の -c 指定、--no-alt-screen、tui.alternate_screen = "never" が優先されます
gpt-6-sol / luna が選べない・404 になるcodex --version で 0.156.1 以上か確認します。提供の広がり方が段階的なため、公開直後は失敗の報告もありました。Enterprise は管理者の有効化が必要です
ワークツリー作成時にサーバーが古いと言われる/daemon の「Use this CLI build」か、codex app-server daemon update で更新してから再起動します
画面右下に「⚠ 1 warning」が出続けるF2 で内容を確認します。筆者の環境では、開発中の機能を有効にしていることへの警告でした

まとめ

Codex CLI 0.156.0/0.156.1 を、このMacで一通り試した結果をまとめます。

  • 更新は codex update の1コマンドで8秒。 旧版はフォルダに残るので、比較検証にも使えます
  • /tui でフルスクリーン表示を選べます。 F3 検索、ドラッグでの選択、右クリックでのコピーを、ターミナル側の機能に頼らず使えます。Mermaid 図と数式も画面に描かれます
  • /usage で使用量を分析できます。 ただし数値は相対値で、最大6時間遅れます。最初の選択肢の「Redeem reset」は、リセットを消費する操作なので注意してください
  • F8 で音声会話ができます。 読み上げた質問が文字起こしされ、作業結果を声で返すところまで確認できました
  • w キーで作業用コピーを作り、並行して作業を任せられます。 元のリポジトリは汚れません
  • サンドボックスの抜け道がふさがれました。 0.154.0 では届いた fcntl と制御用ソケットへの接続を、0.156.1 は拒否しました
  • GPT-6 Sol / Luna が使えます。 小さな課題では3モデルとも全問正解で、Luna の概算クレジットは Astra の約80分の1でした

次の一歩としては、自分のリポジトリでよくある作業を3〜5件選び、codex exec --json で Sol と Luna に解かせてみることをおすすめします。完了率・トークン・時間の3つを記録すれば、「どの作業をどのモデルに任せるか」を数字で決められるようになります。

参考リソース

タイトルとURLをコピーしました