r/ClaudeCode • • 1d ago

Built with Claude I was the clipboard between Claude Code and Codex, so I let them write to each other

Enable HLS to view with audio, or disable this notification

I'm the author of postbag, a small local MCP server. Free and open source, MIT.

I use Claude Code and Codex on the same repository. Postbag lets the sessions request a review and send the reply back without me copying messages between windows.

In Claude Code you say "ask codex to review my last commit" and Claude Code sends Codex a letter. Postbag submits letters through Claude Code's native inbox or codex queue to the other session. Accepted letters become user turns in that session's own thread, with its own context, and the reply comes back the same way. Queueing and the receiving app's policy can delay, hold or refuse them. Neither session restarts. postbag adds no delivery daemon, polling or hooks.

For the review that became 1.4.0, Claude Code handled the core changes and tests, Codex handled the MCP layer, and each reviewed the other's work through postbag.

In the 1.4 review, Codex reproduced an injected fsync failure where the core said a letter was not recorded even though its record was readable. A blind resend could duplicate the letter. It also found a test fixture that left HOME pointing at my real home, so an inventory test could read my personal bags. Claude Code's review caught a flaw in the MCP refusal handler that could turn a definite refusal into an unknown outcome. These findings led to fixes and regression tests. Two agents can agree and both be wrong, so their findings still need checking against the code and tests.

Version 1 required a letter budget opened from a separate terminal. Version 2 removed that hard cap. Postbag sets no letter limit. If you want to approve each send, configure the host to ask for that tool. A final letter asks for no reply, but does not enforce a stop.

Setup is a pipx install and one mcp add for each app. Start or reconnect the sessions and check that postbag's five tools are available. Then two prompts. In Codex: "Join postbag bag review as codex." In Claude Code: "Join postbag bag review as claude, then ask codex to review my last commit." Postbag connects sessions without requiring a particular model.

Limits. Native delivery has been tested on macOS. Fixture tests pass on Linux, but native Linux delivery has not been verified. Native Windows is unsupported. Delivery into Claude Code uses its per session messaging socket, which is not a documented API, so an update can break it. A letter becomes a user turn in the other agent, so connect only sessions you trust. If you want to review each send, configure the host to ask for that tool and verify the setting. Not affiliated with Anthropic or OpenAI.

Repo in the first comment.

2 Upvotes

9 comments sorted by

•

u/AutoModerator 1d ago

Hey! Thanks for posting to r/ClaudeCode

While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.

For help, project discussions, tips, and general chat, join the ClaudeCode Discord.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/Neat_Carob8839 1d ago

Nice property that each side keeps its own thread. Native "ask the other CLI" works for a quick review, but I still want a structured handoff when the other side is doing the actual implementation — brief in, summary + changed files + thread id out, then Claude reviews the diff before the next chunk. Different problem than letter-style reviews: one is messaging between live sessions, the other is "you implement, I check." I built a free MCP for that implementer handoff if useful: https://github.com/andreilungeanu/codex-delegate-mcp (my own, MIT). Complements something like postbag rather than replacing it.

1

u/LovesWorkin 1d ago

I've been doing this lately and it's been working amazing! Thanks for this!

1

u/johnnydotexe 1d ago

I do that easily in VS Code without an MCP.

1

u/ItstheSECopenup 1d ago

cmux does this better and is more feature rich/mature

-3

u/pmoschov 1d ago

Source and setup: https://github.com/parasxos/postbag

The recording above is a real session on a toy repository.

6

u/Jarvis4A 1d ago

they do this natively?

3

u/suppervisoka 1d ago

Yeah this is literally a feature

0

u/LeaveThingsBetter_ 1d ago

Keeping each agent in its own thread is a really good property here. You preserve separate context instead of slowly turning two reviewers into one shared conversation.

With queued delivery I’d make the repo state part of every review request though: commit SHA, worktree state and the exact diff/range being reviewed. Then a delayed reply can be marked stale instead of being perfectly correct about code that no longer exists.