원클릭으로
codex
codex CLI (OpenAI Codex) を直接実行してコード生成・レビュー・調査を外部AIに委譲する手順。`codex exec` をバックグラウンド実行する。サンドボックス制約の回避、stdin/stderr経路、バックグラウンド待機パターンを扱う。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
codex CLI (OpenAI Codex) を直接実行してコード生成・レビュー・調査を外部AIに委譲する手順。`codex exec` をバックグラウンド実行する。サンドボックス制約の回避、stdin/stderr経路、バックグラウンド待機パターンを扱う。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
修正を複数ブランチに適用する際のブランチ戦略。featureブランチへの先行commitとcherry-pickによる短命branchへの適用手順。環境別branch(qa/staging/epsilon等)への修正適用時に参照する。
DeepWiki (Devin MCP) のドキュメント内容を対象リポジトリの Markdown ファイルとして転載する。セクション構成維持・番号付きファイル分割・GFM 準拠補正・日本語翻訳 (オプション) まで自動処理。
PRのレビューコメントを確認し、優先度に応じてコード修正を実行する。サブエージェント (general-purpose) 起動にも対応。--defer-nit / --severity-min で対応範囲を制御。
実装プランファイル作成・更新の手順。実装開始時およびPR作成時にissues/配下の実装プランの有無を確認し、なければ会話履歴・git log・git diffから生成する。複数ファイル変更・新規機能追加・DBマイグレーション伴う変更が対象。
調査レポート作成のルール。否定的結論のエビデンス要件、残課題の記載フォーマット、ハルシネーション防止のための裏取り原則を扱う。DB調査に限らずコードベース調査・仕様調査一般に適用。
ログを追加・修正する際のガイドライン。ログレベルの選択基準、ループ内ログの制御、エラー蓄積パターン、機密情報の扱いを扱う。言語/FW非依存の原則。
| name | codex |
| description | codex CLI (OpenAI Codex) を直接実行してコード生成・レビュー・調査を外部AIに委譲する手順。`codex exec` をバックグラウンド実行する。サンドボックス制約の回避、stdin/stderr経路、バックグラウンド待機パターンを扱う。 |
| when_to_use | 外部 AI へコード生成 / レビュー / 調査を委譲したいとき。Triggers: 'codexで調査', 'codexレビュー', '第二意見レビュー', 'codex exec', 'external AI review' |
codex CLI(OpenAI Codex、通常は /usr/bin/codex または npm 経由でインストール)を直接実行して、コード生成・独立レビュー・コードベース調査を外部AIに委譲するためのスキル。
ローカルファイルの逐語照合レビューや大規模コードベース調査に向いている。
corder エージェントはこの skill の手順に従って Codex CLI を呼び出すmcp__codex__* ツールは存在しないcorder エージェントに委譲。手順の詳細を自分で制御したい or 複雑なプロンプトを出したい → 本 skill を参照して直接 codex exec 起動# インストール確認
which codex
codex --version
# ログイン状態確認(初回のみ必要)
codex login
未インストールの場合は以下でセットアップ:
# npm 経由
npm install -g @openai/codex
# 動作確認
codex exec --help
codex のデフォルトサンドボックスは bubblewrap (bwrap) に依存する。以下の環境では bwrap が動作せず、exec で実行するシェルコマンドがすべて失敗する:
unprivileged_userns_clone が無効)該当環境では --dangerously-bypass-approvals-and-sandbox を付けて起動する必要がある。
# ❌ サンドボックス有効(bwrap 失敗で exec コマンドが全滅)
codex exec -s read-only -C "$PWD"
# ✅ サンドボックスバイパス(外側が既にコンテナ等で隔離されている前提)
codex exec --dangerously-bypass-approvals-and-sandbox -C "$PWD"
判断基準: 既にDocker / devcontainer / VM / CIランナー等で外部的にサンドボックスされているなら --dangerously-bypass-approvals-and-sandbox は実用上安全。ホスト直接実行でコード全書き換えされたくない場合はフラグを付けずに対処(後述「bwrap代替」)。
# Debian/Ubuntu 系でホスト user namespace を有効化
sudo sysctl kernel.unprivileged_userns_clone=1
# 永続化
echo 'kernel.unprivileged_userns_clone=1' | sudo tee /etc/sysctl.d/00-local-userns.conf
長いプロンプトをシェル引数に渡すとエスケープ地獄になるので、一時ファイル経由でstdinに流すのが基本。
# Step 1: プロンプトを一時ファイルに書く
cat > /tmp/codex-prompt.md <<'EOF'
## タスク
以下のファイルを読み込み、設計意図とコードの整合性をレビューしてください。
## 対象ファイル(絶対パスで指定)
/absolute/path/to/design.md
## 出力形式
Markdown で標準出力に吐いてください。
EOF
# Step 2: codex exec に stdin で流す(バックグラウンド実行)
codex exec --dangerously-bypass-approvals-and-sandbox -C "$PWD" \
< /tmp/codex-prompt.md \
> /tmp/codex-output.md \
2> /tmp/codex-err.log &
エージェントからの書き方: ファイル書き込みツールで /tmp/codex-prompt.md を作ってから、シェル実行ツールの「バックグラウンド実行」オプションで codex を起動する。
codex CLI の出力構造:
| ストリーム | 内容 |
|---|---|
| stdout | 最終 assistant message のみ(Markdown本文)。出ないことがある(後述) |
| stderr | プロンプトのエコー + 実行したコマンドと結果 + codexの思考プロセス + ^tokens used$ sentinel |
実務上の扱い:
stdout をそのまま採用…ただし stdout が空になるケースがあるので必ずファイル出力も併用(下記 3.5 参照)stderr をデバッグ用に保存codex exec ... > /tmp/codex-output.md 2> /tmp/codex-err.log
# 成果物 = /tmp/codex-output.md(stdout が空でないことを必ず確認)
# デバッグ = /tmp/codex-err.log(大きめ、数千行になる)
Codex CLI(特に gpt-5-codex / 高 reasoning_effort)は、長時間調査の末に
最終 assistant message を返さずにセッションを終えることがある。
このとき stdout は空のままになり、stderr のイベントログ(数十万バイト)には
コードを実際に読んだ痕跡だけが残る。^tokens used$ は出ているのに stdout が空、という状態。
根本対策: プロンプトに「最終結果は指定ファイルへ書き出すこと」を必須化する。
Codex は最終 message を返さなくても apply_patch ツールでファイルを作成できるため、
ファイル経由なら確実に結果を回収できる。
## 出力先(必須)
最終的なレビュー / 調査結果を以下のファイルに **必ず書き出してください**:
`/tmp/codex-output-<task-name>.md`
書き出しは `apply_patch` で新規ファイル作成してください。
**stdout への出力だけでは不十分です**(セッション終了で失われる場合があるため)。
書き出し後、念のため stdout にも同じ内容を出力してください(冪等で問題ありません)。
# 1. ファイルが存在するかを最優先で確認(stdout が空でもこちらに本文が残る)
OUTPUT_FILE=/tmp/codex-output-pr13734-review.md
if [ -s "$OUTPUT_FILE" ]; then
cat "$OUTPUT_FILE"
elif [ -s /tmp/codex-stdout.md ]; then
# 2. ファイルがなければ stdout フォールバック
cat /tmp/codex-stdout.md
else
# 3. どちらも空なら stderr の末尾から拾う最後の手段
echo "WARN: Codex の最終出力を回収できませんでした。stderr 末尾を確認してください:" >&2
tail -200 /tmp/codex-err.log
fi
reasoning_effort を medium に下げる (--config reasoning.effort=medium)
high だと思考に偏って最終 message を返さなくなる頻度が上がる--json モードでイベント採取 (codex exec --json)
JSON Lines で event.type=assistant_message を grep すれば確実に取れるcodex は 5〜10分かかることが普通。多くのエージェントハーネスはシェル実行に2〜3分のタイムアウトを課すので、必ずバックグラウンド実行する。
# 1. プロンプトファイル書き出し(ファイル書き込みツール)
# -> /tmp/codex-prompt.md
# 2. codex をバックグラウンドで起動(`&` でシェル自体は即時終了)
codex exec --dangerously-bypass-approvals-and-sandbox -C "$PWD" \
< /tmp/codex-prompt.md \
> /tmp/codex-output.md \
2> /tmp/codex-err.log &
# 3. PID を控える
echo "PID: $!"
# 4. 待機(他の作業を進める or スケジューラで再開)
# 5. 完了検知 — ps -p は zombie に騙される。stderr の "tokens used" sentinel を見る
until grep -q '^tokens used$' /tmp/codex-err.log 2>/dev/null; do
sleep 30
done
⚠️ 罠: & でバックグラウンド実行するとラッパーシェルは即終了し「タスク完了通知」が発火するが、codex 本体はまだ動いている。ps -p $PID は zombie (defunct) も 0 を返す ため until ! ps -p $PID は永久ループになりうる。grep -q '^tokens used$' /tmp/codex-err.log を脱出条件にする (codex が最終回答を吐き終わると stderr 末尾に必ず出る sentinel)。
エージェントの context cache TTL は通常5分。これを超えると prompt cache がミスして再送料金が発生する:
codex の典型実行時間(5〜10分)に対しては 270秒ポーリング か 1200秒一括待ち の二択。
# 完了したか (stderr 末尾の "tokens used" が最も信頼できる)
grep -q '^tokens used$' /tmp/codex-err.log && echo DONE
# 最新の作業内容を覗く
tail -30 /tmp/codex-err.log
nl -ba, sed -n, rg 等でファイルを読むため)/tmp/codex-output-<task>.md のような明示パスへ
apply_patch で必ず書き出させる。stdout だけに頼ると最終 message が落ちて空になる事故が起きる(3.5 節参照)あなたは<役割(例: シニアバックエンドエンジニア / セキュリティレビュアー)>として、
以下をレビューしてください。
## 対象ファイル(必ず最初に読むこと)
`/absolute/path/to/target.md`
## 観点
1. <観点1: 例「仕様とコードの整合性」>
2. <観点2: 例「既存APIとの後方互換性」>
## 調査対象コード(必要に応じて読む)
- `src/...`
- `lib/...`
## 背景コンテキスト
- <プロジェクト概要>
- <関連PR / Issue番号>
- <既存レビューで対応済みの事項(重複指摘を避けるため)>
## 出力形式
以下を Markdown で**`/tmp/codex-output-<task-name>.md` に必ず書き出してください**
(`apply_patch` で新規ファイル作成)。書き出し後、stdout にも同内容を出力してください。
**stdout のみへの出力は不可**(セッション終了時に失われる場合があるため):
# <タイトル>
## 総評
## 1. <観点1> に関する指摘
### 1.1 正確な主張
### 1.2 訂正推奨
## 2. <観点2> に関する指摘
## 3. 追加提案
## 4. 承認可否
**必須**: 行番号・ファイルパスに紐付けて具体的に指摘してください。400〜500行程度、日本語で出力してください。
**必須**: tool 呼び出しのみで終了せず、最後に必ず assistant message として 1 回出力してください。
以下の実装タスクを実行してください。
## タスク
<具体的な実装内容>
## 制約
- <技術制約: 言語バージョン、依存ライブラリ>
- <コーディング規約: ESLint / Prettier / rustfmt等>
- <テスト要件: ユニットテスト必須等>
## 対象ファイル
- <既存ファイルのパス>
- <新規ファイルのパス案>
## 背景
<なぜこの実装が必要か、設計判断の経緯>
## 完了基準
- [ ] テストがパスする
- [ ] 型チェック / lint がパスする
- [ ] <追加の受け入れ条件>
**必須**: ファイル編集は実際に行い、最後に変更ファイル一覧と要点を
`/tmp/codex-output-<task-name>.md` に書き出してください(`apply_patch` で新規作成)。
書き出し後、stdout にも同内容を出力してください。
**stdout のみへの出力は不可**(セッション終了時に失われる場合があるため)。
tool 呼び出しのみで終了せず、最後に必ず assistant message として 1 回出力してください。
# === 1. プロンプト書き出し ===
# ポイント: 最終出力先ファイルをプロンプト内で明示し、apply_patch で書かせる
FINAL=/tmp/codex-output-api-v2-review.md
cat > /tmp/review-prompt.md <<EOF
あなたはシニアバックエンドエンジニアとして、以下をレビューしてください。
## 対象ファイル(必ず最初に読むこと)
/workspace/docs/design/api-v2.md
## 観点
1. コードとの一致(行番号・件数・関数シグネチャ)
2. API後方互換性(v1クライアントが壊れないか)
## 調査対象コード
- src/api/v2/**
- src/api/v1/** (比較用)
## 出力先(必須)
最終的なレビュー結果を **必ず** 以下のファイルに書き出してください:
\`${FINAL}\`
\`apply_patch\` で新規ファイル作成してください。
**stdout への出力だけでは不十分です**(セッション終了時に失われる場合があるため)。
書き出し後、念のため stdout にも同じ内容を出力してください(冪等で問題ありません)。
## 出力形式
Markdown で 400〜500 行、日本語。tool 呼び出しのみで終了せず、最後に必ず assistant message として 1 回出力してください。
EOF
# === 2. バックグラウンド起動(reasoning_effort=medium 推奨) ===
codex exec --dangerously-bypass-approvals-and-sandbox \
--config reasoning.effort=medium \
-C /workspace \
< /tmp/review-prompt.md \
> /tmp/codex-stdout.md \
2> /tmp/codex-err.log &
PID=$!
echo "codex PID: $PID"
# === 3. 完了確認(^tokens used$ sentinel を待つ) ===
until grep -q '^tokens used$' /tmp/codex-err.log 2>/dev/null; do
sleep 30
done
echo DONE
# === 4. 成果物を安全に回収(ファイル優先 → stdout fallback) ===
if [ -s "$FINAL" ]; then
cp "$FINAL" ./review-result.md
echo "✅ Codex 書き出しファイルから回収"
elif [ -s /tmp/codex-stdout.md ]; then
cp /tmp/codex-stdout.md ./review-result.md
echo "⚠ stdout からフォールバック回収(ファイル書き出しなし)"
else
echo "❌ Codex の最終出力を回収できませんでした。stderr 末尾を確認してください:" >&2
tail -200 /tmp/codex-err.log
exit 1
fi
原因: codex がまだ最終回答を出す前に停止した、または 最終 assistant message を出さずにセッションが終わった(gpt-5-codex の高 reasoning_effort で発生しやすい既知挙動)。
対処:
grep -q '^tokens used$' /tmp/codex-err.log で終了 sentinel が出ているか確認(まだなら動作中なので追加待機)apply_patch で /tmp/codex-output-<task>.md へ必ず書き出させる指示を追加--config reasoning.effort=medium も付けると最終 message を返す傾向が上がるbwrap: No permissions to create a new namespace で exec 失敗原因: --dangerously-bypass-approvals-and-sandbox を付け忘れ、かつ環境が user namespace 非対応。
対処:
-s read-only / -s workspace-write も bwrap を使うので同じ結果になる点に注意原因:
対処:
--dangerously-bypass-approvals-and-sandbox を追加-C <workdir> で cwd を明示原因: & で起動したラッパーシェルが先に終了して通知が出ているだけで、codex 本体は動作中。または既に終わっているが zombie (defunct) として残っており ps -p $PID が 0 を返し続けている。
対処: 検知を「PID の存在」ではなく stderr の ^tokens used$ sentinel で行う。codex は最終回答を吐き終えると必ずこの行を stderr に書く。
# ❌ 永久ループ化しうる
until ! ps -p $PID; do sleep 30; done
# ✅ zombie 安全
until grep -q '^tokens used$' /tmp/codex-err.log 2>/dev/null; do
sleep 30
done
原因: プロンプトで広すぎる調査範囲を指定した、または codex が探索ループに入った。
対処:
kill <PID> で打ち切り、プロンプトを絞り込んで再実行原因: codex がトークン上限に達した可能性。
対処: プロンプトで「400行以内」など出力サイズを指定。または観点を絞って再実行。
Unauthorized / token expired)原因: ログインセッション失効。
対処:
codex logout
codex login
本スキルは CLI を直接呼び出す詳細手順を記述している。簡易に独立レビューを取りたいだけなら corder エージェントに委譲した方が手間が少ない:
| 観点 | corder エージェント | 本スキルで直接 CLI 起動 |
|---|---|---|
| 使い勝手 | Agent(subagent_type: "corder", ...) で委譲するだけ | プロンプト書き出し・バックグラウンド起動・PID 管理を自分で制御 |
| プロンプト制御 | corder 側で整形 | 自由に設計可 |
| バックグラウンド実行 | agent 側が制御 | & で非同期化、他作業と並列 |
| スケジュール連携 | 難しい | /schedule / Monitor と組み合わせやすい |
指針: 迷ったら corder 経由。プロンプト細部や非同期タイミングを自分で握りたい場合のみ本スキルの手順で直接起動。
--dangerously-bypass-approvals-and-sandbox で回避必須2> /tmp/... にリダイレクトcodex login が必要。未ログインだと即座に失敗するcodex resume でセッション再開可能corder エージェント: 本スキルの手順で Codex CLI を呼び出す独立レビュー担当 (v4.0.0 以降は MCP ではなく CLI 経由)codex --help / codex exec --helpgemini, claude, ollama 等のCLI も同様のパターンで利用可