Codexの codex exec -o でAIの最終回答をMarkdownに保存する — 10分でsummary.mdを作る
Codexの回答を画面からコピーして、メモ帳へ貼り直す。これ、1回なら小さい手間なんですが、続くと地味に面倒ですよね。
この記事では、Codex CLIの -o オプション1つだけ を扱います。ゴールは、練習用のREADMEをCodexに読ませて、最終回答を summary.md へ直接保存することです。
10分後、次のファイルができて中身を読めたら成功です。
summary.md
CIや複雑な自動化、JSON出力には進みません。今日は「AIエージェントの回答を、自分のファイルとして1つ残せた」までで十分です。
codex exec -o は何をする機能か
Codex は、OpenAIのコーディング用AIエージェントです。AIエージェントは、質問に答えるだけでなく、許された範囲でファイルを読んだり、コマンドを実行したりして、目標まで作業を進める仕組みです。
Codex CLI は、そのCodexをCLIで使う方法です。CLIとは、画面のボタンではなく、ターミナルへ文字を入力して操作する方式のこと。ターミナルは、Macなら「ターミナル」、Windowsなら「PowerShell」のような、コマンドを打つ画面です。
今回使う基本形はこれです。
codex exec -o summary.md "README.mdを3行で要約してください"
codex exec は、対話画面を開かずにCodexへ1つの仕事を頼む 非対話モード です。非対話という言葉は少し硬いですが、「質問を1回渡して、回答を受け取ったら終わる実行方法」と考えれば大丈夫です。
-o summary.md は、Codexの 最終回答を保存する場所 を指定します。-o は --output-last-message の短縮形です。
公式ドキュメントによると、codex exec の進行状況は標準エラー出力へ流れ、最終回答は標準出力へ出ます。-o を付けると、その最終回答を指定ファイルにも書けます。
つまり -o は、回答の置き場所を先に決める札みたいなものです。
なぜ便利なのか
画面に出た回答を読むだけなら、もちろん保存しなくても大丈夫です。
ただ、次のような時はファイルに残すと楽になります。
- リポジトリの説明を、あとで読み返したい
- 調査結果をチームへ渡す前に、自分で確認したい
- 毎回コピーして貼る作業を減らしたい
- 回答をGit差分で見直したい
省けるのは、派手な作業ではありません。画面から回答を選択し、コピーし、ファイルを作り、貼り付ける数十秒です。
でも、自動化の最初の一歩って、こういう「同じ転記を1回なくす」ところから始まるんですよね。
事前準備: Codex CLIを使える状態にする
すでに codex --version でバージョンが表示される方は、次の章へ進んでください。
macOS / Linuxへインストール
公式のスタンドアロンインストーラーは次です。
curl -fsSL https://chatgpt.com/codex/install.sh | sh
Windowsへインストール
PowerShellで実行します。
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
インストール後、ターミナルを開き直して確認します。
codex --version
codex-cli とバージョン番号が表示されれば、CLI本体は見つかっています。
初回サインイン
まずCodexを起動します。
codex
初回は画面の案内に沿って、ChatGPTまたは利用可能な方法でサインインします。公式では、ローカルのCodex CLIはChatGPTサインインとAPIキーの両方に対応しています。
認証状態は次でも確認できます。
codex login status
APIキーそのものを記事、チャット、Gitリポジトリへ貼らないでください。認証情報が入るファイルも、パスワードと同じように扱います。
10分で summary.md を作る
ここからはmacOS / Linuxのターミナル例で進めます。Windowsでも、Gitが使えるターミナルなら同じ考え方です。
1. 練習用フォルダを作る
mkdir -p ~/codex-output-practice
cd ~/codex-output-practice
git init
Git は、ファイルの変更履歴を記録する仕組みです。リポジトリ は、Gitで履歴を管理するプロジェクト用フォルダのことです。
公式ドキュメントでは、codex exec は安全のためGitリポジトリ内での実行を求めます。今回は練習フォルダを自分で作るので、ここで git init しておきます。
2. 練習用READMEを作る
次をそのまま実行します。
printf '%s\n' \
'# Sample Timer' \
'' \
'This repository is a practice project.' \
'' \
'- Purpose: show a 25-minute focus timer' \
'- Command: npm test' \
'- Status: draft' \
> README.md
README は、そのプロジェクトの目的や使い方を書く説明書です。
中身を確認します。
sed -n '1,20p' README.md
Purpose、Command、Status の3項目が見えれば準備完了です。
3. 最初の状態をGitへ記録する
git add README.md
git commit -m "Add practice README"
初めてGitを使う環境では、名前とメールアドレスの設定を求められることがあります。その場合は、つまずきポイントで案内します。
4. -o 付きでCodexを1回実行する
次が今日の主役です。
codex exec \
--sandbox read-only \
-o summary.md \
"README.mdだけを読み、目的・確認コマンド・状態を日本語で3行に要約してください。ファイルは変更しないでください。"
各部分の意味はこうです。
| 部分 | 意味 |
|---|---|
codex exec |
Codexへ1つの仕事を頼む |
--sandbox read-only |
Codexが作業中にファイルを書き換えない範囲で動かす |
-o summary.md |
最終回答を summary.md へ保存する |
| 最後の日本語 | Codexへ渡す仕事の指示 |
ここで少し不思議に見える点があります。read-onlyなのに summary.md は作れるのか、という点です。
--sandbox read-only は、モデルが実行するコマンドや編集の範囲を読み取りに制限する指定です。一方、-o はCodex CLI自身が最終回答を書き出すためのオプションです。今回は、エージェントにコードを編集させず、CLIの出力だけを保存します。
5. ファイルができたか確認する
test -s summary.md && echo "summary.md was created"
次の1行が出れば、ファイルが存在し、中身も空ではありません。
summary.md was created
6. 保存された回答を読む
sed -n '1,20p' summary.md
READMEに書いた次の3点が、要約へ含まれているか確認してください。
- 25分の集中タイマーを表示する目的
- 確認コマンドは
npm test - 状態は
draft
この3点が原文と合っていれば成功です。
AIの回答は、ファイルになっただけでは正しいと保証されません。最後に元の README.md と見比べるところまでが、ひとつの手順です。
今日の成功確認
次の3つが全部できていれば、AIエージェントを1つ動かせています。
-
codex execが終了した -
summary.mdが作られた - 要約の3項目をREADME原文と照合できた
「自動化」と聞くと、最初からCIやスケジュール実行まで作るイメージがあるかもしれません。でも、今日は回答の転記を1回なくせました。それで十分です。
つまずきポイント
1. codex: command not found と出る
Codex CLIが未インストールか、インストール後のターミナル再起動が必要です。まず公式のインストール手順を実行し、ターミナルを開き直してから確認します。
codex --version
2. サインインを求められる、または401で止まる
認証がない、または期限切れの可能性があります。
codex login status
codex
2つ目の codex で起動し、画面の案内に沿って再度サインインします。APIキーをコマンド履歴へ直接書く方法は避けてください。
3. Gitリポジトリではないと言われる
いまいる場所を確認します。
pwd
git status
練習用フォルダへ戻り、まだなら初期化します。
cd ~/codex-output-practice
git init
公式にはチェックを飛ばすオプションもありますが、最初の練習ではGitリポジトリを作る方が安全です。
4. git commit で名前とメールを求められる
Gitの初回設定です。公開してよい自分の情報を設定してください。練習だけなら、次のようにこのリポジトリ内だけへダミー値を設定できます。
git config user.name "Example User"
git config user.email "example@example.com"
git commit -m "Add practice README"
5. summary.md が空、または作られない
まずCodexコマンドの終了直前にエラーが出ていないか確認します。認証エラー、ネットワークエラー、利用制限があると、最終回答まで到達しません。
次に、フラグのつづりを確認します。
codex exec --help
ヘルプに -o, --output-last-message <FILE> が表示されることを確認してください。
6. 既存の summary.md を消したくない
同じ名前を使う前に、存在を確認します。
test -e summary.md && echo "summary.md already exists"
表示されたら、別名に変えます。
codex exec --sandbox read-only -o summary-2.md "README.mdを3行で要約してください"
大切な既存ファイルを保存先に指定しないのが、いちばん簡単な回避策です。
7. 画面にも文字がたくさん出る
-o は画面を完全に無音にする指定ではありません。公式では、進行状況は標準エラー出力へ流れ、最終回答は標準出力へ出ます。-o は最終回答をファイルにも書く機能です。
完全な実行ログを保存する機能とは違うので、そこは分けて考えると迷いにくいです。
8. 要約がREADMEと違う
保存に成功しても、内容が正しいとは限りません。指示を狭くして、原文と照合します。
README.mdだけを読み、Purpose、Command、Statusを順番に抜き出してください。推測を加えないでください。
それでも違う場合は、その回答を成果物として採用せず、元ファイルを正解にしてください。
よくある質問
-o と --output-last-message は違いますか
同じオプションです。短く書くなら -o、意味を読み取りやすくするなら --output-last-message を使えます。
codex exec --output-last-message summary.md "README.mdを3行で要約してください"
Markdownとは何ですか
# 見出し や - 箇条書き のような記号で文章の構造を書くテキスト形式です。拡張子は .md。今回の summary.md も普通のテキストファイルなので、多くのエディタで開けます。
summary.md はGitへコミットすべきですか
内容次第です。チームで共有する正式な説明ならレビュー後に候補になります。一時的な調査結果なら、コミットしない方がよいこともあります。AIが生成したという理由だけで自動的に正解にはならないので、人が確認して決めます。
コードも自動で修正できますか
codex exec には書き込みを許す使い方もありますが、この記事の主題ではありません。最初はread-onlyで読み取りと保存だけを体験する方が、何が起きたかを追いやすいです。
この方法が向かない条件
一度だけ回答を画面で読み、その後は使わないなら -o を付ける必要はありません。保存するファイルが増えるほど、整理や削除の手間も増えます。
また、-o が保存するのは 最終回答 です。途中でCodexが読んだファイル、実行したすべての処理、判断の完全な監査記録ではありません。完全な実行履歴が必要な用途では、別のログ設計が必要です。
見分け方はシンプルです。
- 後で読み返す、比較する、渡す →
-oが向く - その場で一度読むだけ → 画面表示で十分
- 完全な監査ログが必要 →
-oだけでは足りない
筆者の確認範囲
2026年8月25日に次を確認しました。
codex-cli 0.147.0-
codex exec --helpに-o, --output-last-message <FILE>があること - 練習用READMEの作成、Git初期化、初回コミット
-
codex login statusが未ログインを返すこと
手元環境では認証が切れており、codex exec は401で停止しました。そのため、モデルの回答取得と summary.md の生成は筆者未確認 です。コマンド構文と挙動の説明は、当日の公式Non-interactive modeとCLIヘルプで照合しています。
まとめ
今日の主役は、この1箇所でした。
-o summary.md
codex exec の最終回答を、画面からコピーせず summary.md へ残します。
まずはダミーREADMEをread-onlyで要約し、ファイルの存在と中身を確認する。AIの回答は原文と見比べる。ここまでできたら、最初の小さな自動化は完了です。
参考リンク
- 更新日: 2026年8月25日
- Codex CLI公式ドキュメント
- Non-interactive mode公式ドキュメント
- Authentication公式ドキュメント
- OpenAI Codex公式リポジトリ
生成AI活用エンジニア&3児のパパ。AI×開発の実践知を毎日発信しています。X: https://x.com/akira_papa_IT