先に答え:失敗は約9回に1回。『止まらずに続けられる設定』を先に用意しておく価値があります
自分もこの設定で試すべきか:Codex に任せると、終了コード付きの結果が分かるコマンド 43,509 回のうち 4,813 回(11.1%)が失敗で終わっていました。約9回に1回です。失敗が普通に出る前提で、1回の失敗で依頼全体を止めない運用(再試行の指示、AGENTS.md への手順)を先に決める価値があります。
1回の依頼の長さは、真ん中の値で 4.5 分、10分を超えた依頼が 648 回(15.3%)ありました。
記録の条件
| 項目 | 内容 |
|---|---|
| 数えた日 | 2026年11月1日 |
| CLI の版 | 履歴の中の版は 0.137 から 0.147 まで。今回数えるのに使った CLI は codex-cli 0.162.0-alpha.17.2(Windows) |
| 環境 | Windows 11 の自分のPCに残る Codex の履歴(ChatGPT デスクトップアプリで使った分) |
| 期間 | 最初のセッション 2026年6月8日 〜 最後のセッション開始 2026年8月11日(履歴の中の最後の記録は10月13日) |
| 数え方の単位 | セッション=履歴ファイル1本。ターン=1回の依頼(task_started の記録1件)。コマンド=shell_command という名前の呼び出し1回 |
課題とコマンド
課題:コマンドの種類ごとの回数と失敗率、1回の依頼の長さを数える。
node aggregate.js
node aggregate3.js
# 画面には件数と分類名だけを出し、本文は出さない
数え方
数え方:対象は、Codex が PC に残している履歴ファイル 215 本のうち、読めた 214 本(2026年6月8日〜8月11日に始まった作業)。1本は大きすぎて読み込みに失敗したため含めていません。数えたのは Node で書いた集計スクリプト(aggregate.js)で、画面にも記録にも本文やコマンドの中身は出していません。出したのは件数と分類名だけです。失敗は、コマンドの出力に Exit code: N が付いていて N が0以外のものです。出力にこの印が無いコマンド(17回)は数えていません。
出力(集計の結果・抜粋)
集計スクリプトが書いた aggregate.json と aggregate3.json の数字から、この面に使った部分です。ほかの項目は載せていません。
{
"セッション数": 214,
"読めなかったファイル": 1,
"コマンド総数_shell_command": 43540,
"終了コード0": 38696,
"終了コード0以外": 4813,
"終了コードの印なし": 17,
"終了コード別": {
"0": 38696,
"1": 4684,
"2": 7,
"124": 112,
"128": 1,
"9009": 1,
"-1": 5,
"-65536": 3
}
}{
"ターン開始": 4493,
"ターン完了": 4320,
"中断_interrupted": 47,
"完了したターンの所要_秒": {
"件数": 4247,
"中央値": 270,
"p90": 791
},
"10分超のターン": 648,
"60分超のターン": 33
}
計測した時間
| 集計スクリプト | かかった時間(実測) |
|---|---|
aggregate.js(種類・ターン・パッチ・承認・モデルなどを一度に数える) | 15.9 秒 |
aggregate2.js(承認要求の行方・上限100の日・8月2日と3日の呼び出し) | 15.1 秒 |
aggregate3.js(種類別の失敗・月別の権限・8月2日と3日の詳細) | 17.1 秒 |
最初に aggregate.js を回した時は18.6秒でした。上の表は、集計を作り直して回した時の値です。履歴は圧縮された状態で215ファイル・約2.5GBあります。各1回の実行です。
使われた道具の内訳(呼び出し回数)
| 道具名(ログの記録名) | 回数 |
|---|---|
shell_command(コマンドの実行) | 43,540 |
exec | 24,285 |
apply_patch(ファイルの編集) | 7,942 |
js | 4,374 |
wait | 2,355 |
update_plan | 603 |
view_image | 452 |
spawn_agent(サブエージェントを立てる) | 117 |
exec と js が何をする道具かは、中身を読んでいないので分類していません。
結果:種類別の回数と失敗率
| コマンドの種類 | 回数 | うち失敗 | 失敗率 |
|---|---|---|---|
| python | 22,634 | 2,506 | 11.1% |
| 読み取り(Get-Content・cat・ls など) | 15,602 | 749 | 4.8% |
| 検索(rg・grep・Select-String) | 7,473 | 1,165 | 15.6% |
| 通信(curl・Invoke-WebRequest・ftp・ssh など) | 3,269 | 308 | 9.4% |
| git | 3,109 | 496 | 16.0% |
| node | 2,644 | 590 | 22.3% |
| 書き込み・移動・削除(Set-Content・Remove-Item など) | 1,821 | 146 | 8.0% |
| npm・npx・pnpm | 1,586 | 242 | 15.3% |
| 上のどれにも当てはまらない | 865 | 128 | 14.8% |
1つのコマンド文に複数の語が含まれると、それぞれの種類に数えています(合計は総数と一致しません)。python を含むコマンドが 52% を占めていました。node が最も失敗しやすく 22.3%、読み取り系が最も低く 4.8% でした。
終了コード別では、1が 4,684 回で大半、124(時間切れの終了コード)が 112 回ありました。
ほかに数えたこと
| 項目 | 数 |
|---|---|
exec の出力のうち、終了コードの印があったもの | 12,535 / 24,284(その中で失敗 1,606 回 = 12.8%) |
apply_patch の結果に『verification failed』を含むもの | 337 / 7,942(4.2%) |
| 出力の中に、文字化けでよく見かける文字(縺・繧・蟷エ など)を含むもの | 3,383 / 53,614(6.3%)。文字で拾っただけの目安 |
| 1セッションあたりのターン数 | 真ん中の値 4・最大 481 |
| 1セッションあたりのコマンド数 | 真ん中の値 18・最大 8,434 |
| サブエージェントを立てた回数 | 117 |
| 履歴の圧縮(compacted)の回数 | 824 |
数えられなかったもの:exec の出力の約半分(11,749 回)は終了コードの印が無く、成功か失敗かを判定できていません。コマンドの用途(何を作るためのコマンドか)も分類していません。
分かったこと
- 失敗は特別な事故ではなく、約9回に1回の通常の出来事だった。
- 文字化けに見える文字を含む出力が、約16回に1回あった(目安の数え方)。同じ日の別の実行でも日本語を含む .ps1 が動かなかった(推論の記録)。
- 1回の依頼は5分前後が普通で、10分を超えるものも6〜7回に1回あった。待つ前提でほかの作業を並べると進む。
向かない場面
- 『Codex は9回に1回失敗する』という一般論として使うこと。このPCのこの2か月の作業の記録です。
- 失敗率の低い種類(読み取り系)を、安全なコマンドの目安にすること。失敗率は安全さを表さない。
- 文字化けの割合を正確な値として使うこと。文字で拾った目安の数え方。
公式ドキュメント
- Agent approvals & security(OpenAI 公式)(2026年11月1日に開いて確認)
- Developer commands(OpenAI 公式)(2026年11月1日に開いて確認)
