Codex 非対話モード
非対話モードを使用すると、スクリプト、CI/CD パイプライン、またはヘッドレス環境で Codex を使用できます。このセクションでは、非対話モードの設定と使用方法について詳しく説明します。
基本的な使い方
単一タスクの実行
基本的な exec コマンド
# 簡単なタスクを実行
codex exec "現在のディレクトリの Python ファイルを一覧表示"
# 複雑なコマンドには二重引用符を使用
codex exec "src/ ディレクトリのコード構造を分析"
codex exec "現在のディレクトリの Python ファイルを一覧表示"
# 複雑なコマンドには二重引用符を使用
codex exec "src/ ディレクトリのコード構造を分析"
標準入力から読み込む
stdin 入力
# パイプから読み込む
echo "このコードを説明" | codex exec --stdin
# ファイルから読み込む
codex exec --stdin < task.txt
# 複数行の入力
cat <<EOF | codex exec --stdin
階乗を計算する関数を作成する
この関数をテストする
EOF
echo "このコードを説明" | codex exec --stdin
# ファイルから読み込む
codex exec --stdin < task.txt
# 複数行の入力
cat <<EOF | codex exec --stdin
階乗を計算する関数を作成する
この関数をテストする
EOF
非対話モードは、自動化タスクやスクリプト統合に非常に適しています。
コマンドライン引数
よく使う引数
| 引数 | 説明 |
|---|---|
exec "任务" | 指定されたタスクを実行する |
--stdin | 標準入力からタスクを読み込む |
--model, -m | モデルを指定する |
--no-auto-approve | 自動確認を無効にする |
--output, -o | ファイルに出力する |
完全な例
完全な引数例
# モデルを指定
codex exec -m gpt-5.4-mini "コードをレビュー"
# ファイルに出力
codex exec "README を作成" -o README.md
# 自動確認を無効化
codex exec --no-auto-approve "テストを実行"
# 組み合わせて使用
codex exec -m gpt-5.4 "PR をレビュー" --output review.md
codex exec -m gpt-5.4-mini "コードをレビュー"
# ファイルに出力
codex exec "README を作成" -o README.md
# 自動確認を無効化
codex exec --no-auto-approve "テストを実行"
# 組み合わせて使用
codex exec -m gpt-5.4 "PR をレビュー" --output review.md
設定
設定ファイルの設定
非対話モードの設定
# 非対話モードのデフォルト設定
[exec]
# デフォルトモデル
default_model = "gpt-5.4"
# 自動承認しきい値
auto_approve_threshold = "medium"
# タイムアウト時間(秒)
timeout = 300
[exec]
# デフォルトモデル
default_model = "gpt-5.4"
# 自動承認しきい値
auto_approve_threshold = "medium"
# タイムアウト時間(秒)
timeout = 300
実行ポリシー
非対話モードでは、デフォルトポリシーは通常deny(副作用が発生する可能性のある操作を拒否)です:
実行ポリシーの設定
# ask ポリシーを使用
codex exec --approval ask "ファイルを作成"
# approve ポリシーを使用(注意して使用)
codex exec --approval approve "テストを実行"
# deny ポリシーを使用(読み取り専用)
codex exec --approval deny "コードを分析"
codex exec --approval ask "ファイルを作成"
# approve ポリシーを使用(注意して使用)
codex exec --approval approve "テストを実行"
# deny ポリシーを使用(読み取り専用)
codex exec --approval deny "コードを分析"
セキュリティ上の理由から、非対話モードでは副作用が発生する可能性のある操作はデフォルトで無効になっています。
Shell スクリプト統合
基本的なスクリプト
Shell スクリプトの例
#!/bin/bash
# Codex を使用してコードレビューを実行
codex exec "src/ ディレクトリ内のコードをレビュー" --output review.md
if [ $? -eq 0 ]; then
echo "レビューが完了し、結果は review.md に保存されました"
else
echo "レビューに失敗しました"
fi
# Codex を使用してコードレビューを実行
codex exec "src/ ディレクトリ内のコードをレビュー" --output review.md
if [ $? -eq 0 ]; then
echo "レビューが完了し、結果は review.md に保存されました"
else
echo "レビューに失敗しました"
fi
一括処理
一括処理スクリプト
#!/bin/bash
# 複数のファイルを一括レビュー
for file in $(find src -name "*.py"); do
echo "レビュー:$file"
codex exec "レビュー$fileファイル" --output "review_$(basename $file).md"
done
# 複数のファイルを一括レビュー
for file in $(find src -name "*.py"); do
echo "レビュー:$file"
codex exec "レビュー$fileファイル" --output "review_$(basename $file).md"
done
条件付き実行
条件付き実行
#!/bin/bash
# ファイル数に応じて Codex を使用するか決定
FILE_COUNT=$(find src -name "*.py" | wc -l)
if [ $FILE_COUNT -gt 10 ]; then
echo "ファイルが多い場合は、Codex で一括レビューを実行"
codex exec "すべての Python ファイルをレビュー" --output full_review.md
else
echo "ファイルが少ない場合は、1つずつレビュー"
for file in $(find src -name "*.py"); do
codex exec "簡単なレビュー$file"
done
fi
# ファイル数に応じて Codex を使用するか決定
FILE_COUNT=$(find src -name "*.py" | wc -l)
if [ $FILE_COUNT -gt 10 ]; then
echo "ファイルが多い場合は、Codex で一括レビューを実行"
codex exec "すべての Python ファイルをレビュー" --output full_review.md
else
echo "ファイルが少ない場合は、1つずつレビュー"
for file in $(find src -name "*.py"); do
codex exec "簡単なレビュー$file"
done
fi
CI/CD 統合
GitHub Actions
GitHub Actions ワークフロー
span style="color: green;">
name: Code Review
on: [pull_request]
jobs:
codex-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Codex
uses: openai/codex-action@v1
- name: Run Code Review
run: |
codex exec "Review code changes in this PR" \
--output review.md
- name: Upload Review
uses: actions/upload-artifact@v4
with:
name: code-review
path: review.md
name: Code Review
on: [pull_request]
jobs:
codex-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Codex
uses: openai/codex-action@v1
- name: Run Code Review
run: |
codex exec "Review code changes in this PR" \
--output review.md
- name: Upload Review
uses: actions/upload-artifact@v4
with:
name: code-review
path: review.md
GitLab CI
GitLab CI 設定
span style="color: #0053A6;">
codex_review:
image: node:20
before_script:
- npm install -g @openai/codex
script:
- codex exec "Review changes in this merge request" --output review.md
artifacts:
paths:
- review.md
codex_review:
image: node:20
before_script:
- npm install -g @openai/codex
script:
- codex exec "Review changes in this merge request" --output review.md
artifacts:
paths:
- review.md
Jenkins
Jenkins Pipeline
pipeline {
agent any
stages {
stage('Code Review') {
steps {
sh 'codex exec "Review changed files" --output review.md'
}
}
}
post {
always {
archiveArtifacts 'review.md'
}
}
}
agent any
stages {
stage('Code Review') {
steps {
sh 'codex exec "Review changed files" --output review.md'
}
}
}
post {
always {
archiveArtifacts 'review.md'
}
}
}
Codex を CI/CD パイプラインに統合することで、自動コードレビューと品質チェックを実現できます。
ベストプラクティス
出力処理
- 使用する
--output結果をファイルに保存する - 戻りコードを確認して実行が成功したかどうかを判断する
- 発生する可能性のあるエラーを処理する
パフォーマンス最適化
- 使用する
gpt-5.4-miniコストを削減する - 複数のタスクを一括処理する
- 適切なタイムアウト時間を設定する
セキュリティ
- 使用を避ける
--approval approve - CI/CD で読み取り専用モードを使用する
- API キーを保護する
本番環境で非対話モードを使用する際は、セキュリティに特に注意してください。
よくある質問
Q: 非対話モードはすべての機能をサポートしていますか?
ほとんどの機能をサポートしていますが、対話による確認が必要な一部の機能は使用できない場合があります。
Q: 確認が必要な操作はどのように処理しますか?
使用する--no-auto-approveパラメータ、または設定ファイルで実行ポリシーを設定します。
Q: 出力形式はカスタマイズできますか?
現在はプレーンテキスト出力と Markdown 出力に対応しています。
Q: Docker ではどのように使用しますか?
Codex を Docker イメージにインストールし、CI/CD パイプラインで呼び出します。
その他の拡張