Claude Code から Codex を呼び出す方法

はじめに
Claude Code で作業していると、別の視点がほしくなることがあります。自分は Codex にセカンドオピニオンを求めるために Codex MCP を使っていましたが、長時間の作業でタイムアウトや応答なしが発生し、安定しませんでした。
owayo さんの記事 を参考に Skills ベースに切り替えたところ安定性が改善しました。さらにセッション継続やコードレビューの仕組みも追加しています。
できること
同梱 Skills
| Skills | モデル | 推論強度 | 用途の例 |
|---|---|---|---|
| claude-session | Claude | – | Codex 側から Claude に意見を求める |
| codex-session | gpt-5.2 | high | 計画・設計・コーディング以外の意見 |
| codex-impl | gpt-5.3-codex | xhigh | 計画・設計・実装 |
| codex-spark | gpt-5.3-codex-spark | high | 高速実装・Playwright |
| codex-review | gpt-5.3-codex | – | コードレビュー |
Claude Code が SKILL.md を読み取り、内部でシェルスクリプトを実行する仕組みです。
セッション継続(resume)
各スキルは セッションIDを自動保存し、次回呼び出し時に前回の文脈を引き継ぎます。
例えば Claude Code に「Codex の意見も聞いてみて」と伝えたりするだけで、スキルが呼び出されます。2回目以降は前回のセッションを自動で resume するため、手動でセッションIDを管理する必要はありません。
コードレビュー
codex review コマンドと同等のことを Skills から実行できます。
内部で実行されるコマンド:
# 未コミット差分のレビュー
codex review --uncommitted -c 'model="gpt-5.3-codex"'
# ベースブランチとの差分レビュー
codex review --base main -c 'model="gpt-5.3-codex"'
設計のポイント
トークン節約:最終回答だけ返す
呼び出し元の Claude Code が Codex の全出力を読み込むとコンテキストが圧迫されます。
Codex のログには途中のツール呼び出しなども全て記録されていますが、このスキルでは Codex の最終的な回答だけを Python で抽出して返しています。ログが取れない場合のフォールバックでも最大100行に切り詰めます。
# ログの各行を走査し、最後の output_text を取得
for line in f:
data = json.loads(line)
payload = data.get("payload") or {}
for item in payload.get("content") or []:
if item.get("type") == "output_text":
last_text = item.get("text")
排他ロック
同一セッションの二重実行を防止するため、flock(Linux)または mkdir(macOS)による排他ロックを実装しています。
共通コアアーキテクチャ
各スキルのスクリプトは環境変数をセットして共通コアに exec するだけの薄いラッパーです。
# codex-impl/scripts/start.sh(全5行)
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CORE="$SCRIPT_DIR/../../.shared/codex-session-core.sh"
exec env SESSION_PREFIX="codex-impl-session-" MODEL="gpt-5.3-codex" \
REASONING_EFFORT="xhigh" SESSION_DISPLAY_NAME="Codex Impl" "$CORE" start "$@"
セットアップ
前提条件
claudeコマンド(Claude Code CLI)が使えることcodexコマンドが使えること(codex login済み)- 使用するモデルへのアクセス権があること
インストール
skills/ 配下を ~/.claude/skills/ にコピーするだけです。Claude Code や Codex にやらせても、手動でやっても構いません。
モデル・推論強度のカスタマイズ
同梱のモデル設定は筆者の環境に合わせたものです。利用可能なモデルやプラン、好みに応じて書き換えてください。
変更するファイルと該当箇所:
| ファイル | MODEL | REASONING_EFFORT |
|---|---|---|
| skills/codex-session/scripts/start.sh | gpt-5.2 | high |
| skills/codex-session/scripts/send.sh | 同上 | 同上 |
| skills/codex-impl/scripts/start.sh | gpt-5.3-codex | xhigh |
| skills/codex-impl/scripts/send.sh | 同上 | 同上 |
| skills/codex-spark/scripts/start.sh | gpt-5.3-codex-spark | high |
| skills/codex-spark/scripts/send.sh | 同上 | 同上 |
各ファイルの exec env ... MODEL="ここ" REASONING_EFFORT="ここ" の部分を書き換えてください。
REASONING_EFFORT の選択肢は low / medium / high / xhigh です。
コマンドリファレンス
普段は Claude Code や Codex が自動で呼び出しますが、中で何が実行されているか知りたい方向けに記載します。
セッション操作
# セッション作成
~/.claude/skills/codex-impl/scripts/start.sh [--cd <dir>] <name> "<prompt>"
# セッション継続
~/.claude/skills/codex-impl/scripts/send.sh [--cd <dir>] <name> "<prompt>"
# セッション一覧
~/.claude/skills/codex-impl/scripts/list.sh
# セッション削除
~/.claude/skills/codex-impl/scripts/clear.sh <name>
~/.claude/skills/codex-impl/scripts/clear.sh --all
コードレビュー
# 未コミット差分レビュー
~/.claude/skills/codex-review/scripts/review-uncommitted.sh \
--cd /path/to/repo \
--model gpt-5.3-codex \
--max-wait-seconds 1200
# ベースブランチ差分レビュー
~/.claude/skills/codex-review/scripts/review-base.sh main \
--cd /path/to/repo
内部で実行されるコマンド
参考として、各スキルが内部で実行しているコマンドを記載します。
セッション新規作成:
codex exec --json --model <MODEL> \
-c 'model_reasoning_effort="<EFFORT>"' \
[-C <work_dir>] \
"<prompt>"
セッション継続:
codex exec --json --model <MODEL> \
-c 'model_reasoning_effort="<EFFORT>"' \
[-C <work_dir>] \
resume <session_id> "<prompt>"
Claude セッション新規作成:
claude -p --output-format json "<prompt>"
Claude セッション継続:
claude -r <session_id> -p "<prompt>"
私の使い方
参考までに、私はこんな使い方をしています。
- コミット前のレビュー: codex-review でレビューさせて、問題がなくなるまで修正を繰り返す
- サブエージェントの代わり: 実装計画や実装を Codex に任せる。Claude Code のサブエージェントと同じ感覚で使える
この Skills を入れると Claude Code から Codex を、Codex から Claude を呼び出せるようになるので、これをベースに自分なりの Skills やカスタムスラッシュコマンドを作ってみてください。Skills 自体ももっといい方法があると思うので、参考にしてアレンジしてもらえると嬉しいです。
また、自分は ~/.codex/skills を ~/.claude/skills へのシンボリックリンクにして、Skills を一箇所で管理しています。
ln -s ~/.claude/skills ~/.codex/skills
こうすると Codex 側からも同じ Skills を呼び出せるため二重管理しなくて済みますし、Codex から Claude Code を呼ぶこともできます。ただし、Claude Code にだけ入れたい Skills や Codex にだけ入れたい Skills がある場合は分けて管理するほうが合うかもしれません。
配布
本パックは無保証です。自己責任で利用してください。
モデル名・推論強度は執筆時点(2026年2月)のものです。最新の利用可能モデルに合わせて適宜変更してください。
参考
- Claude Code から Codex を Skill で呼び出して進捗を監視する – owayo さん
