AbsoluteMode

Claude/Codex Link

Community AbsoluteMode
Updated

Connect Claude Code and Codex sessions, with persistent Claude consultations and addressed messaging.

Claude/Codex Link

Connect existing Claude Code and Codex sessions, and run persistent Claudeconsultations. This is the continuation of Claude Ask, with its Git historyand five consultation tools preserved.

Delivery is asymmetric: Claude receives messages in its live session.Codex receives a persistent queued message on a subsequent turn. Version 0.4.0does not wake an idle Codex Desktop chat from an external process. A requestfor live Codex delivery fails explicitly instead of silently queueing.

Install

Requirements: Node.js 22+, locally authenticated Claude Code (2.1.300 tested),and Codex CLI (0.159.2 tested). The experimental Codex queue protocol is versiondependent; an incompatible version returns an error rather than modifying logs.

In Codex:

codex plugin marketplace add AbsoluteMode/claude-codex-link
codex plugin add claude-codex-link@absolutmode

In Claude Code:

claude plugin marketplace add AbsoluteMode/claude-codex-link
claude plugin install codex-claude-link@absolutmode

Claude reserves third-party plugin IDs starting with claude-, so its installID is codex-claude-link; the product and repository name remain Claude/Codex Link.

Reload plugins or start a new session to discover the new tool schemas. Finishold Claude Ask jobs before disabling the old plugin. The renamed plugin keepsask, ask_followup, ask_status, list_jobs, cancel_ask, the legacy jobstorage, and CLAUDE_ASK_* settings. Installation does not remove the old plugin.

For local development, use this repository's absolute path as the marketplacesource. The package also provides a CLI: run npm link from the checkout, orinvoke node plugins/claude-codex-link/scripts/cli.mjs directly.

Existing-session tools

Tool Purpose
link_sessions Discover live Claude sessions or saved Codex chats
link_read Read persisted text without resuming or starting a session
link_send Start a durable addressed send; returns a message UUID
link_status Inspect transport acceptance and recipient confirmation
link_inbox Read messages addressed to a specific session
link_ack Confirm that the addressed recipient read a message

Discover the exact address first (claude:<UUID> or codex:<UUID>). Titles arelabels; never guess a recipient from a partial name. Claude's current name mustbe unique and stable during delivery because its native SendMessage resolvesthat name. Only send when the human has authorized the exchange.

claude-codex-link sessions --provider claude
claude-codex-link sessions --provider codex

For a send, use the actual discovered sender/recipient UUIDs. Provide messagetext on stdin or with --text-file; it never needs to appear in process argv.MCP callers use link_send with from, to, and text. Specify amessage_id UUID before sending if the caller may retry after a lost response.Reusing that ID and the identical payload returns the existing receipt; it neverrestarts delivery. After failed, correct the cause and explicitly choose a newID. Failed and unfinished sends are not exposed as inbox mail.

reply_to defaults to the sender. A reply is a new message with in_reply_toset to the original message UUID. The recipient calls link_ack after reading;it must not reply automatically to receipts.

Receipts and limits

  • pending / sending: detached delivery is in progress.
  • accepted: Claude's inbox accepted the message; reading is unconfirmed.
  • queued: Codex persisted the message; execution and reading are unconfirmed.
  • acknowledged: the addressed recipient reported reading it; work may remain.
  • failed: a known pre-delivery rejection.
  • unknown: delivery may have occurred, but its receipt was lost. Inspect therecipient before sending again; the bridge never automatically resends.

An acknowledgement is an agent-reported receipt, not cryptographic identityproof. Peer text is marked as agent-authored and carries no new human authority.Receiving-session permissions and inbound-message rules still apply.

The bridge never edits transcript or queue databases directly, and never startsa second process on an open conversation to force a response. Archived Codextargets and ambiguous Claude names are rejected. Claude history contains thelatest saved user/assistant text, excluding tool output and thinking. Codexhistory supports cursors. Separate app-server runtime status is not Desktopactivity status.

Consultations

ask returns a persistent job ID. Poll ask_status to completion. Workspacejobs default to full agent mode, with shell, edits, tests, MCP servers, skills,and plugins. Use mode: review only for an explicitly requested read-onlyrestriction. Without workspace, advisory mode has no tools.

The default is claude-opus-5-5, high effort. Check resolved_model in results.ask_followup forks a completed consultation's context; it does not message analready open session. Jobs have no elapsed-time or idle timeout and survive MCPrestarts. See consultation details.

Privacy and configuration

Messages and receipts are stored locally in the .claude-codex-link directory in the user home, with 0700directories and 0600 files, until the owner removes them. They are not committedor uploaded by the plugin. Normal provider processing still applies when anagent receives a message. Consultations retain their original private job storeand 24-hour completed-job retention.

  • CLAUDE_CODEX_LINK_DIR: message/receipt directory.
  • CLAUDE_CODEX_LINK_CLAUDE_CLI: Claude executable override.
  • CLAUDE_CODEX_LINK_CODEX_CLI: Codex executable override.
  • Existing CLAUDE_ASK_* settings continue to configure consultations.

The Claude courier runs Opus 5.5 with only SendMessage, safe mode, and no MCPservers. Each live send invokes a short Claude turn. A local mailbox and explicitreceipt avoid confusing model output with confirmed transport delivery.

Development

npm run check
npm test

Default tests use fake executables and consume no model usage. They coverconsultation recovery, exact model selection, message idempotency, receipt loss,wrong-recipient acknowledgements, ambiguous names, and archived targets.

Canonical implementation notes: .project-docs/project.md.

License

MIT

MCP Server ยท Populars

MCP Server ยท New