0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code から画像生成する — OpenAI 公式 Codex プラグインで Images 2.0 を呼ぶ(4つの罠と委譲設計)

0
Posted at

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", ...)。サンドボックス越えの cpls -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:rescueslash 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:rescuecodex:codex-rescue は別物、スキルからは Agent() 経由)
  • 委譲先の「完了しました」は信用せず、サンドボックス越えの cp と検証(ls -laRead)は親に集約する。この責務分業は Codex に限らず MCP 経由の委譲全般に効く
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?