mcpField
C
codex-exec

codex-exec

github.com/boshu2エージェントワークフロー45055 回インストール今日更新
リポジトリ

codex-exec について

codex-exec は、指定された Codex プロンプトを一度だけ実行し、結果を保存するためのランタイムアダプターです。サンドボックス、期限、出力取得で単一プロセスを制限し、実行状況を報告して終了します。

主な機能

  1. 01指定された Codex プロンプトを一度実行
  2. 02許可された操作に応じたサンドボックス選択
  3. 03実行時間の制限と標準入力の処理
  4. 04バイト数を制限した出力取得
  5. 05終了状態とクリーンアップ状況の報告

活用シーン

  1. 01読み取り専用モードでコードレビューを実行
  2. 02ワークスペース編集を許可したプロンプトの実行
  3. 03CIやスクリプトからのCodex実行
  4. 04単一実行の出力と状態の保存

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/boshu2/agentops --skill codex-exec

インストール後、Claude Code で/codex-execを入力して読み込まれたか確認します。

同梱ファイルreferences/guarded-runner.md

詳細

Codex Exec — ワンショット実行アダプター

呼び出し元が指定した Codex プロンプトを、1 つのプロセスとしてちょうど 1 回実行し、その結果を取得します。このスキルは作業を選択したり、再試行、検証、継続したりしません。1 つのプロンプト、1 つのプロセス、1 つの取得済み成果物により、すべての出力バイトを単一の呼び出しまで追跡できます。

コマンドを変えるルール

  • 宣言された影響に基づいてサンドボックスを設定します。 レビューや分析には -s read-only を使用し、許可された編集に限り workspace-write を使用します。ネットワークアクセスや、より広いアクセスは、呼び出し元がその影響を明示的に要求した場合にのみ使用します。「必要になるかもしれない」は、宣言された影響ではありません。実行中に権限が拒否された場合(ソケットのバインド、OS の権限チェック、またはピア資格情報のプローブによる EPERM や「Operation not permitted」)は、選択したモードによってブロックされた内容だけを示す可能性があります。サンドボックス内では、ホストまたはコード自体が失敗するかどうかは確認できません。その内容を引用し、そのチェックをサンドボックスによる制限付きとして、「未実行」/not_checked として報告します。合格でも失敗でもありません。同じプローブについてホスト側で確認した内容は引き続き有効であり、ホスト上で実行するかどうかは呼び出し元が判断します。
  • 標準入力を閉じます。 プロンプト引数が指定されていない場合、codex exec は標準入力からプロンプトを読み取り、プロンプト引数が指定されている場合は、パイプされた標準入力をプロンプトに追加します。標準入力が開いたままの非 TTY 実行(CI やスクリプト)は、永遠に待機することがあります。これが標準入力ハングです。プロンプトを標準入力から渡して入力を終了させるか、</dev/null にリダイレクトしてください。
  • 期限は 1 つだけ設定し、延長しません。 最初の試行の前に、絶対期限を 1 つ決めます。呼び出し元が再試行を決めた場合も含め、各実行に与えられるのは、その期限までの残り時間だけです。再試行に新たな時間枠を与えてはいけません。各試行に新しいタイムアウトを設定するループは、呼び出し元の制限時間を気付かないうちに何倍にも延ばします。制限時間の指定がない、ゼロ、負数、または形式が不正な場合は起動できません。期限切れの場合は、実行前に停止します。
  • ここでは再試行しません。 タイムアウト、エラー、または空の出力は、そのまま報告します。別の実行を行うかどうかは、同じ期限内で呼び出し元が判断します。
  • 上限付きで出力を取得し、終了コードを報告します。 バイト数の上限を設けて出力をファイルに取得し、終了ステータスを報告します。タイムアウトは結果ではありません。

実行方法

AgentOps のソースチェックアウト内では、ガード付きライブラリを使用します。期限、出力合計の上限(デフォルトは 10 MiB)、プロセスグループのクリーンアップ、エコー検出を適用します。

# DEADLINE_EPOCH: absolute Unix time fixed once by the caller and reused by
# every invocation in its scope.
. "$AGENTOPS_ROOT/scripts/lib/codex-exec.sh"
CODEX_EXEC_DIR="$WORKSPACE" CODEX_EXEC_SANDBOX=read-only \
CODEX_EXEC_PROMPT_FILE="$PROMPT_FILE" CODEX_EXEC_DEADLINE_EPOCH="$DEADLINE_EPOCH" \
CODEX_EXEC_MAX_OUTPUT_BYTES=10485760 CODEX_EXEC_OUT_FILE="$OUTPUT" \
  codex_exec_guarded </dev/null

インストール済みのスキルに含まれるのはこのファイルだけなので、ソースチェックアウトの外には scripts/lib/codex-exec.sh はありません。代わりに codex exec を直接実行します(フラグは codex-cli 0.156.1 時点のものです。codex exec --help で確認してください。macOS では Homebrew の coreutils が timeout を gtimeout という名前で提供している場合があります)。

remaining=$(( DEADLINE_EPOCH - $(date +%s) ))
[ "$remaining" -gt 0 ] || { echo "deadline passed; not launched" >&2; exit 124; }
timeout -k 10 "$remaining" \
  codex exec -C "$WORKSPACE" -s read-only - <"$PROMPT_FILE" 2>&1 \
  | head -c 10485760 >"$OUTPUT"
rc=${PIPESTATUS[0]}  # 124 timed out, 137 killed after grace, else codex's status

Git リポジトリの外では --skip-git-repo-check を追加し、最終メッセージを別途保持するには(上限の対象外)、-o <file> を追加します。出力ファイルが上限とちょうど同じサイズの場合、出力は切り詰められており、そのステータスが示すのはパイプのクローズであって、レビューの結果ではありません。フォールバックには残存プロセスの確認もエコー検出もありません。どちらも適用されていないことを報告してください。

終了コード(ガード付きライブラリ)

終了コード意味
0Codex が完了し、出力を生成しました
2前提条件の不備:バイナリがない、制限が無効または未指定、必要な機能を利用できない、またはクリーンアップを検証できない。結果ではありません
122Codex の終了後も子孫プロセスが残存しました。実行状態は劣化しています
123取得またはプロンプト準備の上限に達しました。部分的な証拠は保持されています
124期限切れ、または正常終了したものの出力が空でした。停止状態であり、結果ではありません
125出力がプロンプトを繰り返しています。結果ではありません
128+Nシグナル N によってキャンセルされました(129 HUP、130 INT、143 TERM)
その他Codex 自身の 0 以外のステータスをそのまま返します

予約済みコードは実行時の証拠であり、意味上の判定ではありません。Codex 自身のステータスが予約済みコードと一致する場合がありますが、ランナーの標準エラー出力にある診断メッセージで区別できます。ガード付きランナーの内部仕様では、入力、ホスト要件、プロセス監視、外部サンドボックスラッパーについて説明しています。

報告してから停止

command:  exact argv or library call (prompt by reference)
sandbox:  -s value and the declared effect that needs it
bound:    absolute deadline and seconds remaining at launch
capture:  output path, byte cap, truncated yes/no
exit:     status and its meaning from the table
cleanup:  library result, or "not enforced" for the direct fallback

Codex バリデーターは、 判定レシートの規約 とエージェントネイティブのモデル振り分けレシピに従います。要求されたモデルフラグや モデル自身の説明は、どのモデルが実行されたかの証明にはなりません。関連するものとして、 ヘッドレスな Claude プロンプトが 1 つあります:claude-exec、AGY は agy-native、ワーカーバッチは agent-native です。

コメント