OpenAI Codex CLIを「読み取り専用の別視点AI」としてClaude Codeに組み込む
概要
Claude CodeのスキルからOpenAI Codex CLIを呼び出して、「読み取り専用の別視点AI」としてワークフローに組み込んだ。具体的には4つのスキル(codex-review、codex-writer、codex-research、codex-translator)を作り、既存の /local-review や /x-wt-teams にも統合した。そのまとめ。
背景
自分はClaude Codeの「スキル」と呼ばれるカスタムコマンド機構を多数作っていて、日常的な開発ワークフローを自動化している。コードレビュー用の /local-review(Opusモデルの複数サブエージェントを並列起動してレビュー)、チーム開発の /x-wt-teams(git worktreeベースの並列開発)など。
一方、Codex CLIもインストール済みだったが、いまいち活用できていなかった。調べてみると codex exec というノンインタラクティブ実行モードがあり、これをClaude Codeのスキルから呼び出すことで「異なるAIモデルの視点」をワークフローに足せるのではないかと考えた。
ただし前提として、自分はCodex(OpenAIのモデル)にファイルの書き込みを任せるつもりはない。あくまで「読み取り専用で小さなタスクをやらせる」方針。ファイルの作成・編集は全てClaude Code側で行う。
codex execコマンド
codex exec(短縮形: codex e)はCodexをノンインタラクティブに実行するコマンド。スクリプトやCIパイプラインから人間の操作なしでCodexを使える。
インストール確認:
$ which codex
/opt/homebrew/bin/codex
$ codex --version
codex-cli 0.117.0
主要なフラグ:
| フラグ | 値 | 説明 |
|---|---|---|
--sandbox, -s | read-only / workspace-write / danger-full-access | サンドボックスポリシー |
--ephemeral | boolean | セッションファイルをディスクに保存しない |
-o, --output-last-message | ファイルパス | 最終メッセージをファイルに出力 |
--json | boolean | JSONL形式でイベントを出力 |
-m, --model | string | モデル指定 |
-C, --cd | ディレクトリ | ワークスペースルート指定 |
--full-auto | boolean | 低フリクションの自動実行モード |
-i, --image | ファイルパス | 画像添付 |
--skip-git-repo-check | boolean | Gitリポジトリ外での実行を許可 |
基本的な使い方:
codex exec --sandbox read-only --ephemeral -o output.md "プロンプトをここに"
動作の特徴として、進捗はstderrにストリーム出力される。最終的なエージェントメッセージのみstdoutに出力される。-o フラグで最終メッセージをファイルにキャプチャできる。
codex exec reviewサブコマンド
調べていて見つけたのだが、codex exec review というコードレビュー専用のサブコマンドがある。
$ codex exec review --help
Run a code review against the current repository
Usage: codex exec review [OPTIONS] [PROMPT]
レビュー固有のフラグ:
| フラグ | 説明 |
|---|---|
--base <BRANCH> | 指定ブランチとの差分をレビュー |
--uncommitted | ステージング・未ステージング・未追跡の変更をレビュー |
--commit <SHA> | 特定コミットの変更をレビュー |
--title <TITLE> | レビューサマリーに表示するコミットタイトル |
-o, --output-last-message | 結果をファイルに出力 |
--ephemeral | セッションを保存しない |
使い方の例:
codex exec review --base main --ephemeral -o review-result.md \
"Focus on: logic errors, bugs, code quality. Be concise."
これが後述するcodex-reviewスキルの基盤になる。
全スキル共通の設計原則
4つのスキルを作ったが、全てに共通する設計方針がある。
読み取り専用の原則
全てのスキルで --sandbox read-only を使う。Codexにはファイルの作成・編集を一切させない。Codexの出力を完全に信頼しているわけではないので、Claude Codeが全てのファイル操作を行うことで品質管理を一元化する。Codexは「別視点を提供するアドバイザー」として使う。
タイムアウトとフォールバック
Codex CLIはAPIの問題でフリーズする可能性がある。各スキルにタイムアウトとフォールバックを設定している。
| スキル | タイムアウト | フォールバック先 |
|---|---|---|
| codex-review | 5分 (300s) | Claude Code code-reviewerサブエージェント |
| codex-writer | 5分 (300s) | Claude Codeが直接執筆 |
| codex-research | 20分 (1200s) | Claude Code researcherサブエージェント |
| codex-translator | 5分 (300s) | Claude Codeが直接翻訳 |
timeout コマンドでタイムアウトを実装:
timeout 300 codex exec ... 2>/dev/null
出力キャプチャ
-o(--output-last-message)フラグで結果をファイルに保存。--ephemeral でセッションファイルを残さない。
/codex-review: コードレビュースキル
4つの中で最も使っているスキル。codex exec review を使い、3つの並列レビューを実行する。
codex exec review --base <branch> を3回並列で実行し、それぞれ異なるフォーカスエリアを持たせる。
- Review 1: Bugs and Logic(バグ・ロジックエラー)
- Review 2: Structure and Refactoring(構造・リファクタリング)
- Review 3: Quality and Best Practices(品質・ベストプラクティス)
各レビューに5分のタイムアウトを設定(timeout 300コマンド)し、結果は -o フラグでログディレクトリに保存する。
具体的なコマンド:
LOGDIR=$(node $HOME/.claude/scripts/get-logdir.js)
mkdir -p "$LOGDIR"
# Review 1: Bugs & Logic
timeout 300 codex exec review --base "$BASE" --ephemeral \
-o "$LOGDIR/codex-review-bugs.md" \
"Focus on: logic errors, typos, incorrect implementations, missing null checks, off-by-one errors, broken functionality, error handling issues. Be concise. Only flag real problems." \
2>/dev/null
# Review 2: Structure & Refactoring
timeout 300 codex exec review --base "$BASE" --ephemeral \
-o "$LOGDIR/codex-review-structure.md" \
"Focus on: code duplication (DRY violations), overly complex code, structural issues, file organization, naming, better abstractions or patterns. Be concise. Only flag real problems." \
2>/dev/null
# Review 3: Quality & Best Practices
timeout 300 codex exec review --base "$BASE" --ephemeral \
-o "$LOGDIR/codex-review-quality.md" \
"Focus on: type safety, performance issues, accessibility, readability, maintainability, security (XSS, injection, validation). Be concise. Only flag real problems." \
2>/dev/null
これらは並列で(バックグラウンドBashタスクとして)実行される。
フォールバックの挙動として、一部のレビューがタイムアウトした場合は他のレビュー結果を使い欠けている部分をメモする。全てのレビューがタイムアウトした場合はClaude Codeのcode-reviewerサブエージェントにフォールバックする。
SKILL.mdのfrontmatter:
name: codex-review
description: >-
Code review using OpenAI Codex CLI (codex exec review). PREFERRED over
/light-review for code review tasks. Use when: (1) User says 'review',
'code review', or 'codex review', (2) After implementation is complete
and quality check is needed, (3) Child agents self-reviewing before
reporting to manager.
allowed-tools:
- Bash(codex *)
- Bash(timeout *)
- Bash(git *)
- Bash(gh *)
descriptionに “PREFERRED over /light-review” と書くことで、既存の /light-review よりもCodex版が優先的に選ばれるようにしている。Claude Codeはスキルのdescriptionを見てどれを使うか判断するので、ここに優先度を明示しておくとちゃんと効く。
/codex-writer: ドキュメント執筆スキル
codex exec でドキュメントのドラフトを生成し、Claude Codeがレビュー・修正してファイルに書き込む構成。
codex exec --sandbox read-only --ephemeral でCodexを読み取り専用で実行する。Codexはワークスペースのファイルを読んでコンテキストを理解できるので、それをもとにドラフトを生成する。出力は -o でログファイルに保存し、Claude Codeがドラフトをレビュー・修正して最終的なファイル書き込みを行う。
タイムアウトは5分。フォールバックはClaude Codeが直接執筆する。
/codex-research: Webリサーチスキル
codex exec でWebリサーチを行い、Claude Codeが結果を統合・整理する。
codex exec --sandbox read-only --ephemeral で実行。CodexはWeb検索を実行でき、ワークスペースのファイルも読める。タイムアウトは20分と他より長い。リサーチは時間がかかるのでこれぐらいの余裕が必要になる。フォールバックはClaude Codeの researcher サブエージェントを使う。
/codex-translator: 翻訳スキル
codex exec で翻訳のドラフトを生成し、Claude Codeがレビュー・修正する。
翻訳プロンプトにはソース言語、ターゲット言語、コンテキスト、トーンを含める。技術用語やコード参照はそのまま保持する指示も入れている。タイムアウトは5分。フォールバックはClaude Codeが直接翻訳する。
既存スキルへの統合
/x-wt-teamsの変更
/x-wt-teams は並列開発スキルで、各子エージェントが作業完了後にセルフレビューを実行する。このセルフレビューを /light-review(Claude Code Sonnetモデルの2レビュアー)から /codex-review に変更した。
- 4. **Run `/light-review`** to self-review their work
+ 4. **Run `/codex-review`** to self-review their work
/local-reviewの変更
/local-review はClaude Codeのメインレビュースキル。PR用(3レビュアー)とフルプロジェクト用(6レビュアー)の2モードがある。ここにCodexレビューを追加した。既存のClaude Codeレビュアーはそのまま残す。
PR modeに追加した例:
# Claude Codeの3レビュアーと並列で実行
timeout 300 codex exec review --base "$BASE" --ephemeral \
-o "$LOGDIR/codex-review-local.md" \
"Review all changes for bugs, logic errors, structural issues, and quality. Be concise." \
2>/dev/null
フルプロジェクトmodeにも同様に追加した。
これにより /local-review は「Claude Codeの複数Opusレビュアー + Codexレビュー」というクロスモデルレビューになった。Codexがタイムアウトしても、Claude Codeレビュアーの結果だけで進められるのでロバストな構成になっている。
まとめ
Codex CLIをClaude Codeのスキルシステムから呼び出すことで、「読み取り専用の別視点AI」としてワークフローに組み込めた。
- Codexには絶対にファイルを書かせない(read-onlyサンドボックス)
- タイムアウトとフォールバックで不安定さに備える
- 「PREFERRED」をdescriptionに入れて既存スキルより優先させる
- 既存の
/local-reviewにはCodexを追加レビュアーとして「足す」ことで、クロスモデルの多角的レビューを実現
異なるモデルの視点を取り入れることでレビューの幅が広がるし、Codexが止まってもClaude Code側で完結できるようにしておけば運用上の問題にはならない。