claude-codex-bridge
Allows Claude to delegate tasks to OpenAI Codex agents, including starting, steering, stopping, and resuming Codex sessions, as well as receiving progress updates and results.
Claude Codex Bridge
Run OpenAI Codex agents from Claude Code. Ask Claude to delegate a task to Codex, follow its progress, send another instruction while it works, stop it, or continue a saved session.
The plugin connects Claude's MCP tools and Channels to codex app-server.
Codex tasks run asynchronously; starting a task returns its session ID without
waiting for the task to finish.
sequenceDiagram
actor You
participant Claude as Claude Code
participant Bridge as Bridge plugin
participant Codex as Codex app-server
You->>Claude: Delegate a task to Codex
Claude->>Bridge: codex_start
Bridge->>Codex: Start a thread and turn
Bridge-->>Claude: Session ID
Codex-->>Bridge: Progress, questions, result
Bridge-->>Claude: Channel notifications
You->>Claude: Add an instruction or stop
Claude->>Bridge: codex_message / codex_stop
Bridge->>Codex: Steer / interrupt the turnRequirements
Claude Code 2.1.261, installed and signed in.
Codex CLI 0.153.4, installed and signed in with access to the model you want to use.
Node.js 24.20.0 or newer, including npm and npx.
These are the tested versions. Older versions are unsupported; compatibility with newer versions must be verified. The plugin uses the experimental Codex app-server protocol and Claude Code Channels research preview.
node, npx, and codex must be on the PATH inherited by Claude Code. The npm
package includes the bridge's JavaScript dependencies. The plugin
uses npx to fetch its exact package version on first startup; subsequent
starts use npm's cache. No source build or protocol generation is required.
Related MCP server: claude-code-codex-agents
Install
1. Check the required tools
Install Claude Code, Codex CLI, and Node.js, then check:
claude --version
codex --version
node --version
npm --version
codex login statusIf Codex is not signed in, run codex login. Claude and Codex use their own
accounts and model access. The plugin does not provide a subscription or API
credits.
2. Add the marketplace and install the plugin
claude plugin marketplace add umum-ai/claude-codex-bridge
claude plugin install claude-codex-bridge@claude-codex-bridge --scope userClaude installs the plugin from this repository's marketplace. The plugin
starts the pinned version of
@kvokka/claude-codex-bridge
with npx --yes. The first startup needs access to the npm registry.
3. Enable the plugin and Channels
Merge this into ~/.claude/settings.json, keeping your other settings:
{
"channelsEnabled": true,
"extraKnownMarketplaces": {
"claude-codex-bridge": {
"source": {
"source": "github",
"repo": "umum-ai/claude-codex-bridge"
}
}
},
"enabledPlugins": {
"claude-codex-bridge@claude-codex-bridge": true
}
}The installation commands already register the marketplace and enable the plugin. The complete fragment above also shows how to reproduce the settings.
4. Start Claude in your project
cd /absolute/path/to/your/project
claudeThe maintainer reports that channelsEnabled: true enables this ordinary
startup on Claude Code 2.1.261 without a shell alias or wrapper. Channel
activation can also depend on your account and organization policy. Verify
incoming progress with the example below before relying on it.
Anthropic's Channels documentation
currently describes channelsEnabled as a managed setting and requires
per-session opt-in. If tools load but incoming progress does not arrive, see
Channels troubleshooting.
Use it
Talk to Claude normally. Give Codex a concrete task, the project directory, and an explicit model when you want one:
Use the bridge to start Codex with model gpt-5.6-luna in /absolute/path/to/my-project. Review the authentication code and suggest a fix for the failing login test. Report its progress as channel events arrive.
To check that notifications work, use a task with a short delay:
Start Codex in this project. Ask it to announce that it started, run a command that waits 15 seconds, and then reply BRIDGE_DONE. Wait for channel events; do not poll codex_status or codex_events.
While Codex is working:
Tell that Codex session to focus on the token refresh path.
To interrupt it:
Ask that Codex session to stop.
After a task completes:
Continue that Codex session: implement the proposed fix and run the relevant tests.
Keep the threadId if you want to continue after restarting Claude:
Resume Codex thread THREAD_ID in /absolute/path/to/my-project, then ask it to continue the investigation.
Claude can list available models with codex_models. An explicitly selected
model is requested without provider fallback.
Available tools
Tool | What you can ask Claude to do |
| List the models available to Codex. |
| Start an independent task in an absolute project directory. |
| Send an instruction during a turn, or start the next turn. |
| Interrupt the current turn. |
| Reopen a saved Codex thread. |
| Answer a structured question from Codex. |
| Read status, pending questions, and the latest answer. |
| Read recent events using a sequence cursor. |
How it works
Claude starts the plugin as an MCP server. The plugin starts a local
codex app-server process and uses its stdio protocol to manage Codex sessions.
Control calls return promptly; the task continues inside Codex. This does not
use a long-running Claude Bash tool call, and task duration is independent of
Claude's Bash timeout. Control acknowledgements have a 30-second timeout.
Codex progress, questions, errors, and completion arrive through Claude Channels. Claude processes queued notifications when it can take its next turn. A successful notification write does not confirm that Claude has read it. Codex sessions appear through tools and messages, not as native Claude agents in its subagent panel.
Codex runs with danger-full-access and approvalPolicy: never. It can
modify files and run commands with the permissions of your local user without
requesting approval. Claude's tool permissions do not sandbox Codex. Choose the
project directory and tasks with that execution mode in mind.
The plugin uses Codex's existing authentication and configuration. It adds no API proxy, model impersonation, interception hook, or global timeout override. Exiting Claude stops the bridge and its app-server process. Saved Codex threads can be resumed; running work is not hosted by a background daemon.
Progress is batched about once a second and capped at 8,000 characters per batch. The bridge retains 200 recent events across sessions and up to 64,000 characters of the latest answer. Truncation and an expired event cursor are reported explicitly. The event journal lives only for the current bridge process.
Update or uninstall
To install the latest published version:
claude plugin marketplace update claude-codex-bridge
claude plugin update claude-codex-bridge@claude-codex-bridgeRestart Claude after updating. To remove the plugin:
claude plugin uninstall claude-codex-bridge@claude-codex-bridge --scope user
claude plugin marketplace remove claude-codex-bridgeWhy yet another connector?
codex-mcp explains why existing solutions on the market fall short, and why a straightforward approach was needed.
I checked all the boxes, but the implementation ended up large and clumsy.
This version is ~14× smaller (10 321 LOC in codex-mcp v3.1.0 vs 746 LOC in
claude-codex-bridge v0.1.2), more stable, clearer, and cleaner. It builds on
Claude Code Channels — still experimental, but solid enough in practice.
It has the same limitations and the same feature set as codex-mcp.
I only arrived at this design after shipping codex-mcp. The idea isn’t new: it
was already implemented in
codex-claude-bridge.
That project is unmaintained, and this architecture fixes several of its flaws.
Releases
A release is chosen manually with exactly one release:patch, release:minor,
or release:major label on a pull request. It runs when the PR merges into
main, or when the label is added to an already merged PR. An unlabeled PR
publishes nothing.
The release updates the npm package version, both root versions in
package-lock.json, the plugin manifest, the marketplace entry, and the npm
version in the plugin's launch command together. It checks the resulting
commit before pushing main and the X.Y.Z git tag atomically, then publishes
the verified npm archive with provenance and creates the GitHub release. If main
moves during the checks, the release stops before tagging.
For a failed publication, run the release workflow manually with its existing
X.Y.Z tag as ref. This retries that version without another bump. An npm
version already carrying the same archive is left in place; different bytes are
rejected.
The npm package owner must configure a
trusted publisher for GitHub owner
umum-ai, repository claude-codex-bridge, workflow release.yml, and environment
npm. The first publication uses the repository's short-lived NPM_TOKEN secret.
After the package exists and its trusted publisher is configured, npm uses
GitHub OIDC; the token can expire or be removed. The token is passed only to the
publication step.
Troubleshooting
Tools work but live progress does not arrive
Tool availability and incoming channel delivery have separate gates. Use
codex_status to confirm the task is running and check Claude's startup notices
for a channel or organization-policy warning.
For testing this custom channel, start a session with:
claude --dangerously-load-development-channels plugin:claude-codex-bridge@claude-codex-bridgeThis explicit preview flag is the integration-tested path for incoming events.
The plugin is not on Anthropic's official channel allowlist. An organization can
approve it in managed settings with channelsEnabled: true and an
allowedChannelPlugins entry naming marketplace claude-codex-bridge and
plugin claude-codex-bridge; an approved session uses
--channels plugin:claude-codex-bridge@claude-codex-bridge. Preserve any other
channels on the organization's allowlist.
The MCP server fails to start
Check that node --version, npm --version, and codex --version work in
the same terminal where
you launch Claude. Restart Claude after installing either tool or changing
PATH. Use /mcp in Claude to inspect the server connection.
Codex rejects the model or account
Run codex login status and ask Claude to call codex_models. Model access is
controlled by your Codex account. A requested model error is surfaced directly.
A task disappeared after restarting Claude
Ask Claude to call codex_resume with the saved threadId and project directory.
The event journal does not survive a restart; the saved Codex conversation does.
Report reproducible problems at GitHub Issues, including the tool versions, the failed operation, and relevant error messages. Remove credentials and private project content from reports.
Available Tools
8 toolscodex_answerB
Answer a Codex question using its requestId and all question IDs. Ask the user when the answer requires their preference; otherwise answer from the task context.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | ||
| threadId | Yes | ||
| requestId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It states the core action and the preference-vs-context decision rule, but it does not disclose side effects such as whether answering finalizes the request, whether it can be called multiple times, or any permissions or rate limits. The 'Ask the user' line reads as guidance to the agent rather than a behavior of the tool itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler; the core action is front-loaded and the decision rule is stated in the second sentence. It is compact and readable, though slightly terse in phrasing like 'all question IDs.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a nested answers object, three required parameters, no annotations, and no output schema, the description covers the main action and the answer-content decision rule. It leaves open details such as threadId semantics, multi-string answer arrays, and postconditions, so an agent can call it correctly but with some uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate; it does so by mapping 'requestId' and 'all question IDs' to identifiers in the schema. It does not clarify the role of threadId or explain why each answer value is an array of strings. This is partial compensation but not enough to fully document the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Answer' with a clear resource (a Codex question) and identifies the required identifiers ('requestId' and 'all question IDs'). This distinguishes it from siblings like codex_start, codex_message, and codex_stop, which handle other phases of the Codex interaction. However, 'Codex question' is not deeply defined, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a conditional rule for content: 'Ask the user when the answer requires their preference; otherwise answer from the task context.' This tells the agent how to decide what to put in the answers, but it does not explicitly name alternatives or exclusions among sibling tools. The trigger ('Answer a Codex question') implies when the tool applies, but that is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_eventsA
Read the bounded event journal after a sequence number. gap means older events were evicted. Use to recover results if channel delivery is unavailable; do not busy-poll.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It reveals non-obvious behavior: the journal is bounded, and a 'gap' means older events were evicted. It also warns against busy-polling. It could add error/return details, but the eviction caveat is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: the core read action, the eviction caveat, and the usage guidance. Information is front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only journal tool with no output schema, the description covers the purpose, the eviction pitfall, and the intended use case. The only notable gaps are the exact return shape and behavior when `after` is omitted, but overall an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does by explaining that `after` is a sequence number representing the position in the event journal to read from. The schema only says integer; the description adds the domain meaning. It does not address what happens if `after` is omitted, but the core semantics are clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Read the bounded event journal after a sequence number.' The qualifier 'bounded' and the recovery-use case make it clear this is the journal-read tool, distinct from the other codex_* action/status siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'Use to recover results if channel delivery is unavailable.' It also gives a clear prohibition: 'do not busy-poll.' This is strong usage guidance even without naming an alternative sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_messageA
Send direction to a running Codex turn, or start another turn in the same thread if it is idle. A race with turn completion can return an error: inspect status before retrying.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, and it does reveal meaningful behavior: it can act on a running turn or start a new one when idle, and it can error due to a race with turn completion. It provides actionable retry guidance, though it does not say what the success response looks like or whether the call blocks until the turn finishes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action is stated first, followed by the idle-thread behavior and the race-condition warning, all in an efficient, scannable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core semantics and a key error condition are covered, but there is no output schema and no annotation to fill gaps about return values or lifecycle expectations. An agent would benefit from knowing what a successful response contains and how threadId relates to codex_start or codex_status, so the context is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate, but it only lightly does. 'Same thread' gives context to threadId, and 'send direction' hints at the message parameter's role. The parameter names and types are fairly self-explanatory, but the description does not clarify message content format, length expectations beyond schema, or how threadId should be obtained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool sends direction to a running Codex turn or starts a new turn in the same thread when idle. The action and target resource are identifiable, and the idle/running distinction adds precision, though it does not explicitly differentiate this tool from siblings like codex_start or codex_resume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use it to direct a running turn, or to start another turn in the same idle thread. It also warns about a race with turn completion and advises inspecting status before retrying. It stops short of naming alternatives explicitly or saying when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_modelsA
List available Codex models. Pass nextCursor as cursor for another page.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly identifies the operation as a list and explicitly reveals cursor-based pagination via nextCursor. It does not mention side effects, but 'List' strongly implies a read-only operation and the pagination detail is meaningful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by the pagination instruction. No redundant content or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool with no output schema, the description covers the essential behavior and pagination. It does not explicitly describe the response shape, but the name and 'list' semantics make the return value predictable enough. Slightly more detail about the first-page call would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides 'cursor' as a string; schema coverage is 0%. The description compensates by explaining that cursor should be set to the nextCursor value to fetch another page, which gives the agent exact semantic guidance for the only parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource, 'available Codex models', which is distinct from the sibling operations (start, message, stop, etc.). The agent can immediately tell this tool is for enumerating models, not running a session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is implied by the listing purpose, but the description does not explicitly say when to use this tool versus the sibling tools or provide any exclusions. It would benefit from a note such as 'use before codex_start to select a model.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_resumeA
Attach a saved Codex thread after reconnecting. Use codex_message to continue its work.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does meaningful work: it clarifies that resume does not itself continue the work, only attaches the thread, and that it depends on reconnection. Minor omissions such as idempotence or error behavior exist, but the key behavioral distinction from codex_message is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The main action and the crucial routing hint are front-loaded, and every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, low-complexity tool, the description is complete enough: it states what it does, when to use it, and what to use instead for continuation. No output schema or annotation exists, but none is required for the agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lone threadId parameter. It adds the meaning 'a saved Codex thread,' which helps, but it does not explain where the threadId comes from or what qualifies as saved. This is partial compensation rather than full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Attach') and resource ('a saved Codex thread'), and explicitly contrasts with codex_message ('to continue its work'). This clearly tells an agent what codex_resume does and how it differs from the sibling that continues work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the condition ('after reconnecting'), the action ('attach a saved Codex thread'), and the alternative ('Use codex_message to continue its work'). An agent receives explicit routing guidance without needing to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_startA
Start a live Codex agent and return its threadId immediately after acceptance. Codex runs with full filesystem/network access and no approval prompts. Supply an absolute working directory and the complete task context; model is optional.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| model | No | ||
| prompt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important traits: full filesystem/network access, no approval prompts, and immediate return of the threadId after acceptance. It does not detail asynchronous execution or post-start behavior, but the disclosed runtime privileges are highly relevant and go well beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action and return value are front-loaded, and the second sentence adds the essential behavioral warning about permissions and the expected input strategy. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, an output schema, and only three parameters, the description covers the key information needed to call the tool correctly: required inputs, optional model, return value, and significant runtime behavior. It could mention how to interact with the returned threadId via sibling tools, but that is not necessary for a correct first call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It maps cwd to 'absolute working directory' and prompt to 'complete task context', which adds real meaning over the raw schema. It also explicitly notes that model is optional. It does not enumerate model choices, but the sibling tool codex_models likely covers that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Start a live Codex agent' and states it returns a threadId after acceptance. This clearly distinguishes the tool from siblings like codex_message, codex_stop, and codex_status, which operate on an already-started agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: to start a live Codex agent. It also instructs the caller to supply an absolute working directory and complete task context, and notes that model is optional. It does not explicitly list alternatives or when-not-to-use, but the verb 'start' and sibling names make the intended usage fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_statusA
Read session state, pending questions and the latest answer. Omit threadId to list sessions. Does not wait for completion.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It states that this is a read operation and that it does not wait for completion, which is useful. It does not cover prerequisites, error conditions, or whether an active session is required, but the most important non-mutating, non-blocking traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences each add distinct value: what is read, how to use the optional threadId, and the non-blocking behavior. There is no wasted wording or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool, the description covers the main invocation modes: all sessions or a specific thread. It also clarifies the non-waiting behavior. Since there is no output schema, a little more detail about the return shape would help, but the essential information for using the tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines threadId as an optional string. The description adds meaning by explaining that omitting threadId lists sessions, which implicitly defines the parameter's behavior. It doesn't explicitly say 'supply threadId to read one session,' but this is strongly implied by the structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a read operation ('Read') and a specific resource: session state, pending questions, and the latest answer. This distinguishes it from action-oriented siblings like codex_start, codex_message, and codex_stop. The broader scope also differentiates it from codex_answer, so an agent can reliably understand what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage rule: 'Omit threadId to list sessions.' However, it doesn't explicitly say when to prefer this tool over siblings like codex_answer or codex_events, nor does it name alternatives. The usage context is implied rather than fully stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_stopA
Request interruption of a running Codex turn. The interrupted event confirms completion; this does not undo changes already made.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds important non-obvious details: the interruption is confirmed by an event, and the operation does not undo changes already made. It could mention error or no-op behavior, but the key consequences are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The action is front-loaded, and the most important behavioral caveat is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with a single parameter and no output schema, the description covers the core purpose, the confirmation mechanism, and the non-rollback behavior. It does not cover edge cases such as no active turn, but overall it is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a required threadId string with no description, and the tool description does not explain the parameter beyond the context of a running Codex turn. However, threadId is self-descriptive and clearly maps to the target turn, so the meaning is reasonably recoverable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Request interruption') targeting a resource ('a running Codex turn') and is clearly distinct from siblings like codex_start, codex_resume, and codex_status. It is immediately obvious what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for stopping an already-running turn, but it does not explicitly state when to use it, when not to use it, or how it relates to alternatives. There is no mention of checking codex_status first or waiting for natural completion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.1.2- First observed
codex_answer - First observed
codex_events - First observed
codex_message - First observed
codex_models - First observed
codex_resume - First observed
codex_start - First observed
codex_status - First observed
codex_stop
TDQS
Each tool maps to a distinct Codex lifecycle action: start, message, stop, resume, answer, status, events, and model listing. There is no meaningful overlap, and edge cases like codex_message versus codex_answer are clearly separated by their descriptions.
All tools share a clean codex_ prefix and use snake_case consistently. Most names are imperative verbs, but models, status, and events are noun-style read operations, which is a minor deviation from a strict verb_noun pattern.
Eight tools is a well-scoped size for a bridge server managing a live agent lifecycle. Each tool serves a necessary function without redundancy or bloat.
The set covers the full agent lifecycle: starting, sending messages, stopping, resuming, answering questions, checking status, and reading event history. There are no obvious gaps that would leave an agent unable to complete a workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stop copy-pasting between Claude Chat and Claude Code.
A paid remote MCP for OpenAI Codex context compressor, built to return verdicts, receipts, usage log
Paid remote MCP for Claude Code skill update gate MCP, structured receipts, audit logs, and reviewer
No-data MCP handoff for local Claude Code to Codex harness moves. $49 lifetime.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude Code to leverage OpenAI models for expert code review, deep architecture analysis, and security audits, with automatic markdown report generation.MIT
- AlicenseAqualityDmaintenanceEnables Claude Code to delegate tasks to OpenAI's Codex CLI (GPT-5.4) with structured execution traces, parallel execution, session persistence, and adversarial code review.15MIT
- AlicenseAqualityBmaintenanceEnables OpenAI Codex to consult Claude Code for co-analysis, adversarial second opinions, and read-only file review over the Model Context Protocol, with Claude remaining advisory and unable to modify files.918MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code to call OpenAI Codex for read-only design, deep reasoning, and code review tasks.30MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/umum-ai/claude-codex-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server