by Sateezg
Image generation (gpt-image-2) and GPT-5 subagents for Claude Code — through the Codex CLI login you already have. No OpenAI API key.
# Add to your Claude Code skills
git clone https://github.com/Sateezg/codex-bridgecodex-bridge is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Sateezg. Image generation (gpt-image-2) and GPT-5 subagents for Claude Code — through the Codex CLI login you already have. No OpenAI API key. It has 103 GitHub stars.
codex-bridge's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Sateezg/codex-bridge" and add it to your Claude Code skills directory (see the Installation section above).
codex-bridge is primarily written in Shell. It is open-source under Sateezg on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh codex-bridge against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Give Claude Code image generation and a team of GPT-5 subagents — using the Codex CLI login you already have.
Claude Code can't generate images, and everything it does runs on your Claude quota. The Codex CLI can generate images with gpt-image-2, and runs on your ChatGPT plan — a completely separate budget. This plugin bridges the two.
Two things you get:
1. Claude can produce images. Ask for an icon, a mockup, a hero image, a full favicon set — Claude writes the prompt, drives gpt-image-2 through Codex, then looks at the result and regenerates if it missed.
2. Claude can delegate to GPT-5. Four Codex-powered subagents handle review, debugging, bulk implementation, and image work. Claude stays the orchestrator: it scopes the task, Codex does the volume, Claude verifies the result. Heavy work runs on your ChatGPT quota and its intermediate output never enters your Claude context.
No OpenAI API key. Everything routes through
codex login, so it bills against your ChatGPT plan rather than API credits.

One style contract across a set. Each sibling was generated with an earlier icon passed as --ref, so the palette, stroke weight, glyph scale and margins carry over instead of being re-described and re-interpreted every time:
Every image in this repository was generated by this plugin — the GIF above, these icons, and the social preview card. The exact commands and the VHS recording script are in
assets/README.md, so you can reproduce all of it.
Prerequisites
| Codex CLI | npm i -g @openai/codex or brew install codex |
| Logged in | codex login → verify with codex login status (should say Logged in using ChatGPT) |
| ChatGPT plan | Plus, Pro, or Team |
| Claude Code | any current version |
Then:
/plugin marketplace add Sateezg/codex-bridge
/plugin install codex-bridge@codex-bridge
Run /reload-plugins if Claude Code asks you to.
Try it for one session, no install:
git clone https://github.com/Sateezg/codex-bridge.git
claude --plugin-dir ./codex-bridge
Auto-load from your skills directory:
git clone https://github.com/Sateezg/codex-bridge.git ~/.claude/skills/codex-bridge
chmod +x ~/.claude/skills/codex-bridge/bin/*
Loads as codex-bridge@skills-dir on your next session.
Nothing to configure. Just ask in plain language:
generate a hero image for the landing page, save it in assets/
make the sky in assets/hero.png sunset orange, keep everything else
set up favicons and an OG card for this project
review my changes before I commit
ask codex why this test only fails under --parallel
rename useSession to useAuthSession across the whole repo
The last one is the interesting case. Claude notices it's mechanical work across many files and offers the split before starting:
This touches 34 files with the same change. I can hand the edits to Codex — runs on your ChatGPT quota and keeps 34 file dumps out of this context — then review its diff here. Want me to?
Skills — Claude picks these up automatically; you can also call them as /codex-bridge:<name>.
| Skill | Fires when |
|---|---|
generate-image |
a task needs a new image that doesn't exist yet |
edit-image |
you point at an image file and ask to change or restyle it |
asset-set |
favicons, app icons, OG cards, or a matching icon family |
ask-codex |
you want GPT-5's take on one question about this repo |
codex-review |
"review my changes" — diff, branch, or module |
codex-delegate |
a task is big or repetitive enough that delegating saves you tokens |
Subagents — Claude launches these itself, or you can name them.
| Subagent | Does | Can write files? |
|---|---|---|
codex-artist |
images, icon sets, style-matched asset families | images only |
codex-reviewer |
review a diff, then verifies every finding against the code | no |
codex-debugger |
root-cause a failure, proposes a patch | no |
codex-implementer |
bulk mechanical edits and scaffolding | yes — after you agree |
codex-second-opinion |
general independent opinion on an approach | no |
Executables — on your PATH while the plugin is enabled, and usable straight from a shell.
codex-imagegen |
generate or edit an image; prints the output path |
codex-run |
run any task on Codex; prints only its final answer |
codex-imagegen "flat vector rocket icon, #2563EB on white, 2px stroke, minimal" ./rocket.png
codex-imagegen "change the sky to sunset orange, keep everything else identical" ./out.png --ref ./hero.png
codex-imagegen "settings gear, same style as the reference" ./settings.png --ref ./home.png
| Option | |
|---|---|
--size WxH |
1024x1024, 1536x1024, 1024x1536, 2048x2048, 3840x2160, … — see note below |
--ref <file> |
source or style reference, repeatable up to 4 — turns the call into an edit |
--model <name> |
model override |
--timeout <sec> |
default 600 |
A custom size is only accepted if all of these hold: longest edge ≤ 3840px, both edges multiples of 16, long-to-short ratio ≤ 3:1, total pixels between 655,360 and 8,294,400. Square is fastest. For anything outside that — favicons, a 1200×630 OG card — generate a large master and resample locally.
The wrapper prints the path it actually wrote. Codex is instructed not to overwrite existing assets, so it occasionally saves out-v2.png; the wrapper detects that (and the ~/.codex/generated_images/<session>/ default location) and reports the real path.
What makes this better than pasting prompts into a chat window: the skills teach Claude to pull your actual palette out of tailwind.config.* or your design tokens, to reuse one style contract across a whole set so the assets match, to derive size variants with ImageMagick instead of regenerating, and to open the PNG and check it before telling you it's done.
The point isn't "Claude can also call GPT-5". It's the division of labour: Claude scopes and verifies, Codex does the volume.
you ──▶ Claude scopes the work, writes the brief, reviews the result
│
▼
codex-run ──▶ Codex CLI ──▶ GPT-5 / gpt-image-2
(your ChatGPT quota)
Because Codex runs as a separate process, its intermediate output — the 40 files it read, the search results, the generated boilerplate — never enters your Claude context. You pay Claude tokens only for the brief and the review.
What gets delegated, per the codex-delegate rubric: mechanical edits across many files, bulk generation, exhaustive repo sweeps, all image work, and self-contained subtasks. What doesn't: architecture calls, ambiguous requirements, anything needing the conversation history, and small edits — round-tripping a two-line fix costs more, not less.
Every subagent follows the same contract: read-only by default, verify before reporting, and never claim success on unverified work. Only codex-implementer writes to your files, only after you've agreed, and only with a clean working tree so its changes land as a reviewable diff.
Straight from a shell:
codex-run -C . "which module owns rate limiting? name the file"
codex-run -C . -r "now show me the minimal patch" # -r continues the session
git diff main...HEAD | codex-run -C . --timeout 1200 - # pipe a diff in
| Option | |
|---|---|
-C, --cd <dir> |
working directory (default: cwd) |
-s, --sandbox <mode> |
read-only (default), workspace-write, danger-full-access |
-m, --model <name> |
e.g. gpt-5-codex |
-r, --resume |
continue the previous session instead of starting fresh |
--schema <file> |
constrain the answer to a JSON Schema |
--raw |
also dump Codex's event log to stderr |
--timeout <sec> |
default 900 |
Both wrappers shell out to codex exec, Codex's non-interactive mode.
Images run in a workspace-write sandbox scoped to the output directory:
codex exec -C <outdir> -s workspace-write --skip-git-repo-check [-i <ref>...] \
"Use the \$imagegen image generation tool to ... save to ./<file>.png ..."
$imagegen is Codex's built-in image skill; it calls gpt-image-2 with your ChatGPT credentials and writes the PNG into the working directory. The wrapper verifies the file landed — falling back to $CODEX_HOME/generated_images/ if Codex saved it there instead — and prints the absolute path so Claude can read the image back.
Text tasks capture the final message with -o instead of scraping the event log, so subagents get a clean answer rather than a transcript:
cod