OPENAI CODEX CLI クイックリファレンス
CLI の使い方、モード、設定、主要コマンド
はじめに
インストール
npm install -g @openai/codex
認証
export OPENAI_API_KEY="sk-..."
シェルプロファイルまたは .env ファイルに設定
初めての実行
codex "explain this project"
codex "add input validation to app.py"
コマンド
インタラクティブ(デフォルト)
codex # start interactive session
codex "fix the login bug" # with initial prompt
codex exec
codex exec "write unit tests for utils.py"
codex exec "refactor db.py to use async"
非インタラクティブ — タスクを完了まで実行
codex review
codex review # review staged changes
codex review --diff HEAD~3 # review last 3 commits
モード
承認モード
| suggest | 提案された変更を表示し、全ての編集とコマンドに承認が必要 |
| auto-edit | ファイル編集は自動適用、シェルコマンドには承認が必要 |
| full-auto | 編集とコマンドを承認なしで適用 |
モードの設定
codex --approval-mode suggest "add tests"
codex --approval-mode auto-edit "refactor"
codex --approval-mode full-auto "fix lint"
設定
設定ファイル
# ~/.codex/config.yaml
model: o4-mini
approval_mode: suggest
providers:
- name: openai
api_key_env: OPENAI_API_KEY
プロジェクトルートの .codex/config.yaml でプロジェクト別に上書き可能
プロジェクト指示
# AGENTS.md (in project root)
- Run tests with: uv run pytest
- Use ruff for linting
- Never modify migration files
便利な設定オプション
| model | 使用するモデル(例: o4-mini、o3) |
| approval_mode | デフォルトの承認モード |
| providers | API プロバイダー設定(キー、ベース URL) |
| history | 会話履歴の保存: true / false |
サンドボックス
仕組み
Codex は意図しない副作用を防ぐためにサンドボックス環境でコマンドを実行します。
ネットワークアクセスはデフォルトで無効です。
ファイルの書き込みはプロジェクトディレクトリに制限されます。
サンドボックスオプション
| macOS | Apple Seatbelt(デフォルト、組み込み) |
| Linux | Docker ベースのサンドボックス |
| --full-auto | サンドボックスを有効にする必要あり |
| --dangerously-auto-approve | サンドボックスをスキップ(非推奨) |
ヒント
効果的なプロンプト
| 具体的に | "fetch_data() にリトライロジックを追加" > "コードを改善" |
| ファイルを参照 | "src/auth.py のバグを修正" でスコープを絞る |
| 制約を明記 | "パブリック API は変更しない" で境界を設定 |
| 繰り返し改善 | 同じセッション内でフォローアップして精度を上げる |
ワークフローパターン
# Explore → plan → execute
codex "explain the auth module"
codex "plan how to add OAuth support"
codex --approval-mode auto-edit "add OAuth"
# Review before commit
git add -A
codex review
よく使うフラグ
| --model, -m | このセッションのモデルを上書き |
| --approval-mode | 承認モードを設定 |
| --quiet, -q | 出力を最小限に |
| --no-project-doc | AGENTS.md を無視 |