このドキュメントは、Codex CLI(v0.77.0)が生成するログファイル ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl の 観測ベース スキーマ定義です。
- 形式: JSONL(JSON Lines)
- 構造: 1行 = 1JSONオブジェクト
- エンコーディング: UTF-8
rollout-*.jsonl
├── session_meta (1件) # セッション開始時のメタ情報
├── turn_context (N件) # 各ターンの実行コンテキスト
├── event_msg (N件) # リアルタイムイベント
│ ├── token_count # トークン使用量
│ ├── agent_reasoning # エージェントの思考プロセス
│ └── user_message # ユーザー入力
└── response_item (N件) # レスポンス要素
├── message # メッセージ
├── reasoning # 思考要約
├── function_call # ツール呼び出し(開始)
├── function_call_output # ツール呼び出し(終了)
├── custom_tool_call # MCPツール呼び出し(開始)
├── custom_tool_call_output # MCPツール呼び出し(終了)
└── ghost_snapshot # Git変更前スナップショット
すべてのレコードは以下のトップレベル構造を持ちます:
{
"timestamp": "2026-01-02T21:34:19.350Z", // ISO 8601形式のタイムスタンプ
"type": "session_meta" | "turn_context" | "response_item" | "event_msg",
"payload": {} // タイプごとに異なる構造
}| フィールド | 型 | 説明 |
|---|---|---|
timestamp |
string (ISO 8601) | レコード生成時刻 |
type |
string (enum) | レコードタイプ(後述) |
payload |
object | タイプ固有のデータ |
用途: セッション開始時に1回だけ記録されるメタ情報
payload構造:
{
"id": "uuid形式のセッションID",
"cwd": "/path/to/working/directory",
"cli_version": "0.77.0",
"originator": "codex_cli_rs",
"instructions": "長文の指示テキスト(AGENTS.mdやSkills一覧を含む場合あり)",
"git": {
"commit_hash": "abc123...",
"branch": "main",
"repository_url": "https://github.com/..."
}
}フィールド詳細:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
id |
string | ✓ | セッションを一意に識別するUUID |
cwd |
string | ✓ | セッション開始時の作業ディレクトリ |
cli_version |
string | ✓ | Codex CLIのバージョン |
originator |
string | ✓ | 実行元(通常は codex_cli_rs) |
instructions |
string | △ | セッションに適用される指示(長文の場合あり) |
git |
object | △ | Gitリポジトリ情報(存在する場合) |
git.commit_hash |
string | △ | 現在のコミットハッシュ |
git.branch |
string | △ | 現在のブランチ名 |
git.repository_url |
string | △ | リポジトリURL |
用途: 会話の1ターン(1往復)ごとの実行コンテキスト
payload構造:
{
"cwd": "/path/to/working/directory",
"approval_policy": "...",
"sandbox_policy": "...",
"model": "claude-3-5-sonnet-20241022",
"effort": "medium"
}フィールド詳細:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
cwd |
string | ✓ | ターン実行時の作業ディレクトリ |
approval_policy |
string | △ | 承認ポリシー設定 |
sandbox_policy |
string | △ | サンドボックスポリシー設定 |
model |
string | △ | 使用するAIモデル名 |
effort |
string | △ | 実行努力レベル(例: medium) |
用途: リアルタイムで発生するイベント通知
payload.type でイベント種別が分岐します。
用途: トークン使用量のスナップショット
payload構造:
{
"type": "token_count",
"info": {
"total_token_usage": {
"input_tokens": 1234,
"output_tokens": 567,
"reasoning_output_tokens": 0,
"total_tokens": 1801
},
"model_context_window": 200000
}
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
info.total_token_usage.input_tokens |
number | 入力トークン数 |
info.total_token_usage.output_tokens |
number | 出力トークン数 |
info.total_token_usage.reasoning_output_tokens |
number | 推論出力トークン数 |
info.total_token_usage.total_tokens |
number | 合計トークン数 |
info.model_context_window |
number | モデルのコンテキストウィンドウサイズ |
HUDでの派生値計算:
used = total_token_usage.total_tokensleft = model_context_window - total_token_usage.total_tokensusagePercent = used / model_context_window * 100
用途: エージェントの現在の思考プロセスを表す短い説明テキスト
payload構造:
{
"type": "agent_reasoning",
"text": "**Searching for relevant plugin**"
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
text |
string | 思考プロセスの説明(Markdown形式の場合あり) |
HUDでの利用: ステップ表示として使用
用途: ユーザー入力の別形式記録(メッセージ本文、画像など)
payload構造:
{
"type": "user_message",
"message": "ユーザーのメッセージ本文",
"images": ["base64エンコードされた画像データ..."]
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
message |
string | ユーザーのメッセージ本文 |
images |
string[] | 添付画像(base64エンコード) |
用途: レスポンスの構成要素
payload.type で要素種別が分岐します。
用途: ユーザー/アシスタントのメッセージ
payload構造:
{
"type": "message",
"content": [
{
"input_text": "メッセージ内容"
}
]
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
content |
array | メッセージコンテンツの配列 |
content[].input_text |
string | テキストコンテンツ |
用途: 思考プロセスの要約/スナップショット
payload構造:
{
"type": "reasoning",
"summary": [
{
"summary_text": "思考の要約テキスト"
}
],
"encrypted_content": "暗号化された非公開コンテンツ"
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
summary |
array | 要約の配列 |
summary[].summary_text |
string | 要約テキスト |
encrypted_content |
string | 暗号化された非公開コンテンツ(HUDでは使用しない) |
HUDでの利用: ステップ表示として使用
用途: 標準ツール(主に shell_command)の呼び出し(開始/終了)
開始イベント (function_call):
{
"type": "function_call",
"name": "shell_command",
"arguments": "{\"command\": \"ls -la\"}",
"call_id": "unique-call-id-123"
}終了イベント (function_call_output):
{
"type": "function_call_output",
"call_id": "unique-call-id-123",
"output": "Exit code: 0\nfile1.txt\nfile2.txt",
"duration_ms": 150
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
name |
string | ツール名(例: shell_command) |
arguments |
string | 引数(JSON文字列の場合あり) |
call_id |
string | 呼び出しを一意に識別するID(開始/終了で同一) |
output |
string | 実行結果(終了時のみ) |
duration_ms |
number | 実行時間(ミリ秒、終了時のみ、付与される場合あり) |
HUDでの処理:
call_idをキーに開始/終了イベントを照合- 未終了レコード → 「進行中」として表示
- 完了済みレコード → 「直近完了」として表示
- 経過時間: 進行中は
now - start.timestamp、終了後はduration_msがあれば採用、なければend.timestamp - start.timestampを計算 - 成功/失敗判定:
outputからExit code: 0やError文字列を検出
用途: MCP/拡張ツールの呼び出し(開始/終了)
開始イベント (custom_tool_call):
{
"type": "custom_tool_call",
"name": "apply_patch",
"call_id": "unique-call-id-456",
"input": {
"file": "src/main.ts",
"patch": "..."
}
}終了イベント (custom_tool_call_output):
{
"type": "custom_tool_call_output",
"call_id": "unique-call-id-456",
"output": "{\"success\": true, \"message\": \"Patch applied\"}",
"duration_ms": 200
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
name |
string | ツール名(例: apply_patch) |
call_id |
string | 呼び出しを一意に識別するID(開始/終了で同一) |
input |
object | 入力パラメータ(開始時のみ) |
output |
string | 実行結果(JSON文字列の場合あり、終了時のみ) |
duration_ms |
number | 実行時間(ミリ秒、終了時のみ) |
HUDでの処理:
function_callと同様の処理- MCP判定:
custom_*系イベントを検出した場合、🧰 アイコンを付与
用途: Git変更前のスナップショット情報
payload構造:
{
"type": "ghost_snapshot",
"ghost_commit": {
"id": "commit-hash",
"parent": "parent-commit-hash"
}
}フィールド詳細:
| フィールド | 型 | 説明 |
|---|---|---|
ghost_commit.id |
string | コミットID |
ghost_commit.parent |
string | 親コミットID |
1. session_meta (1件)
↓
2. turn_context (ターン開始)
↓
3. event_msg (各種イベント)
├── token_count
├── agent_reasoning
└── user_message
↓
4. response_item (レスポンス要素)
├── message
├── reasoning
├── function_call → function_call_output
├── custom_tool_call → custom_tool_call_output
└── ghost_snapshot
↓
5. turn_context (次のターン)
...
ツール呼び出しは call_id で開始/終了イベントを紐付けます:
function_call (call_id: "abc")
↓
[実行中...]
↓
function_call_output (call_id: "abc")
並列実行: 異なる call_id のレコードが同時に存在することで並列実行を表現
処理フロー:
call_idをキーに開始/終了イベントを照合- 未終了レコード → 「進行中」として表示
- 完了済みレコード → 「直近完了」として表示
経過時間の計算:
- 進行中:
now - start.timestamp - 終了後:
payload.duration_msがあれば採用、なければend.timestamp - start.timestampを計算
成功/失敗判定:
function_call_output/custom_tool_call_outputのpayload.outputを解析Exit code: 0を含む → 成功(✓)Errorを含む → 失敗(×)
MCP判定:
custom_tool_call/custom_tool_call_outputを検出 → 🧰 アイコンを付与
利用可能な情報源:
event_msgのagent_reasoning.textresponse_itemのreasoning.summary[].summary_text
注意: ToDoリスト/サブエージェントの明示イベントは存在しないため、上記の情報源を「ステップ」として表示
- 異なる
call_idのレコードが同時に存在することで並列実行を表現 - 各アイテムに経過時間を個別表示
- このドキュメントは Codex CLI v0.77.0 の観測結果に基づいています
- 将来のバージョンで構造が変更される可能性があります
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
- 観測対象バージョン: Codex CLI v0.77.0
- ドキュメント更新日: 2026-01-03(観測日時点)