TL;DR
- Claude Code 本体に画像生成機能はないが、OpenAI 公式の Codex プラグイン(
openai/codex-plugin-cc)を入れるとimagegen(Images 2.0 / GPT Image 2)に委譲でき、結果として Claude Code から画像生成できる - そのまま丸投げすると 4つの罠(バックグラウンド実行で死ぬ / サンドボックス書き込み制限 / CJK 文字化け /
Skill()経由のセッション hang)にハマる - 正解は
Skill()ではなくAgent(subagent_type="codex:codex-rescue", ...)。サンドボックス越えのcp・ls -la検証・目視は 親エージェント(Claude 側)が担う
仕組み
Claude Code 自体は画像を生成できない。だが OpenAI 公式の Codex プラグイン(openai/codex-plugin-cc、2026-03 リリース)を入れると、Codex の imagegen(Images 2.0 / GPT Image 2)に委譲できる。
Claude Code (親エージェント・Anthropic)
└─ codex:codex-rescue サブエージェントへ委譲 (Agent 経由)
└─ Codex CLI (子エージェント・OpenAI)
└─ imagegen スキル → Images 2.0
導入は以下(v1.0.4 以降推奨)。
/plugin marketplace add openai/codex-plugin-cc
/plugin install codex@openai-codex
/codex:setup # Codex CLI 本体の認証確認
「呼べる」と「スムーズに使える」は別物 — 4つの罠
罠1: バックグラウンド実行で黙って死ぬ
/codex:rescue に画像生成を素朴に頼むと、imagegen スキルを使います と返ったまま無反応になることがある。通知も来ず、ファイルもできず、TaskList / TaskOutput も Codex 内部の task id を認識しない。
原因: レスキューサブエージェントが状況により --background(fork)で起動し、子プロセスが harness から追跡不能になる。
対策: 委譲プロンプトに「バックグラウンドにせず、フォアグラウンドで完了まで走り切ること」を明示する。
罠2: サンドボックスのパス制限
保存先に ~/Downloads/... を指定すると Operation not permitted。
原因: Codex CLI はデフォルトで workspace-write サンドボックスで動き、書き込めるのは workspace(セッションを開始した作業ディレクトリ)内だけ。ホームディレクトリ直下は範囲外なので弾かれる。
対策: 委譲プロンプトに「書き込めない場合は workspace 内に保存して絶対パスを報告する」と入れ、保存後に親側で cp する。
cp /path/to/workspace/generated/codex-image-xxx.png ~/Downloads/example-image.png
罠3: CJK 文字化け
技術図のラベルに日本語を入れると「複雑」が「霊等」に化ける。Images 2.0 は CJK の長文ラベルが苦手。
対策: 文字が多い技術図は Mermaid を正本(canonical)にして、Codex 画像は見栄え用に回す。文字が少ない 1 枚絵なら Codex 単体で OK。画像に CJK を入れたいなら英語併記か短いラベルに限定する。
罠4(最大): Skill(codex:rescue) で hang する
自作スキルにまとめる段で、委譲をこう書いた。
Skill(skill="codex:rescue", args={prompt: "..."})
実行すると Launching skill: codex:rescue のまま固まり、中断するしかなかった。公式ドキュメント(commands/rescue.md)に呼び出し方の鉄則が明記されていた。
| 呼び出し方 | 結果 |
|---|---|
Skill(codex:rescue) |
NG — このコマンドに再入してセッションが hang する |
Skill(codex:codex-rescue) |
NG — そんな skill は存在しない |
Agent(subagent_type="codex:codex-rescue", prompt=...) |
OK — 正解 |
codex:rescue は slash command で、その内部で本物の subagent codex:codex-rescue を Agent ツール経由で起動する。スキルから Skill(codex:rescue) を呼ぶと slash command が再帰的に呼び出されて hang する。codex:rescue(slash command)と codex:codex-rescue(subagent)は 名前空間が別物、というのがポイント。
修正: 委譲を Agent() に書き換える。
# NG
Skill(skill="codex:rescue", args={prompt: "<delegation prompt>"})
# OK
Agent(subagent_type="codex:codex-rescue", prompt="<delegation prompt>")
委譲プロンプトテンプレ(コピペ可)
Agent(subagent_type="codex:codex-rescue") に渡すプロンプト。各行に過去の罠への対策が込めてある。
【タスク】
{用途・描画要素・スタイル・アスペクト比をここに記述}
【保存先】
{絶対パス。例: ~/Downloads/example-image.png}
【手順】
1. Images 2.0 / imagegen で画像を生成する
2. 上記の保存先パスに保存する。書き込めない場合は workspace 内に保存して、その絶対パスを報告する
3. `ls -la {保存先パス}` でファイルの存在とサイズを確認する
4. 完了報告にはファイルの絶対パスとバイト数を含める
【重要・厳守】
- バックグラウンドにせず、フォアグラウンドで完了まで走り切ること
- 保存と ls -la 確認を済ませてから報告すること(途中で止まらない)
- 日本語テキストを入れる場合は正確に描画する。CJK 文字が崩れる懸念があれば英語併記でよい
- imagegen スキルを呼び出した時点で停止せず、最後まで完遂すること
親側(Claude)の後処理は救出・検証・目視の 3 ステップで固定化する。
# 1. サンドボックス越え救出
if (codex の完了報告が workspace 内パスを返した):
cp {workspace 内パス} {ユーザー希望パス}
# 2. 実体検証(サイズ 0 でない・存在する)
ls -la {ユーザー希望パス}
# 3. 目視点検(CJK 文字化けがあれば再生成 / 英語版 / Mermaid 切り替え)
Read({ユーザー希望パス})
まとめ
- Claude Code 単体に画像生成機能はなくても、OpenAI 公式 Codex プラグイン経由で Images 2.0 に委譲すれば生成できる
- ただし実用化のキモは、画像生成そのものより 委譲の作法
- 呼び出し方は公式ドキュメントで確認する(
codex:rescueとcodex:codex-rescueは別物、スキルからはAgent()経由) - 委譲先の「完了しました」は信用せず、サンドボックス越えの
cpと検証(ls -la・Read)は親に集約する。この責務分業は Codex に限らず MCP 経由の委譲全般に効く