ProBridge
ProBridge lets coding agents (Codex, OpenCode, Claude, etc.) send tasks into ChatGPT Pro Quick Chat as a local sub-agent and track or follow up on them.
Start a ChatGPT Pro sub-agent job with
gpt56_pro_start({ prompt }), which returns ajobIdimmediately.Poll job state and the latest report with
gpt56_pro_status({ jobId }).Send a follow-up prompt on the same completed Quick Chat thread with
gpt56_pro_followup({ jobId, prompt }).Queue jobs are serialized by a local daemon, with authoritative state under
~/.chatgpt-pro-subagent.Work is scoped to the project workspace; broad personal folders like Home, Desktop, and Documents are refused.
Uses ChatGPT desktop and a LocalAnt/DevSpace connector to reach the local Mac; supported on macOS only.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ProBridgeUse ChatGPT Pro to debug the failing auth tests and propose a patch."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ProBridge

Open-source local MCP bridge for ChatGPT desktop Quick Chat + GPT-5.6 Pro.
Coding agents in Codex, OpenCode, Claude, or similar MCP hosts call ProBridge. ProBridge queues the job, opens a verified ChatGPT Quick Chat, and sends the prompt. Inside that ChatGPT session, LocalAnt / DevSpace is the connector that reaches your local Mac and the active workspace.
ChatGPT Pro quota is used. Codex model quota is not. There is no model API key.
Current target: macOS. Windows and Linux are not supported yet. Contributions that add a real driver for those platforms are welcome.
How it fits together
Codex / OpenCode / Claude
|
| MCP tool call
v
ProBridge
prompt · queue · status · follow-up
|
| drives ChatGPT desktop Quick Chat
v
ChatGPT Quick Chat (GPT-5.6 Pro)
|
| LocalAnt / DevSpace inside ChatGPT
v
authenticated device tunnel
|
v
local Mac / active workspaceThe calling agent only needs three tools:
gpt56_pro_start({ prompt })
gpt56_pro_status({ jobId })
gpt56_pro_followup({ jobId, prompt })start returns immediately with a jobId. Poll status. Use follow-up only after that same Quick Chat round is complete.
Related MCP server: mcacp
What this repository adds
LocalAnt / DevSpace gives ChatGPT access to your Mac. ProBridge does not replace that connector and cannot install it for you.
ProBridge gives your coding agent a bridge into ChatGPT Pro. An MCP host sends ProBridge a prompt; ProBridge queues it, drives Quick Chat, and returns job state through MCP. That is why this repository makes sense when you already want ChatGPT Pro to do local work but want Codex, OpenCode, Claude, or another agent to invoke it as a sub-agent.
Requirements
macOS
Node 20+
Xcode command-line tools (
swiftc)ChatGPT desktop signed in with Pro
Accessibility permission for the compiled
bin/ax-driver
LocalAnt / DevSpace is what gives ChatGPT Pro hands on the machine. ProBridge is what lets other agents send work into that ChatGPT session.
Setup — two required parts
1. Set up ChatGPT’s local connector first
ProBridge needs ChatGPT to already have a connector that can reach your local Mac. Choose one connector and complete its upstream setup before installing ProBridge:
LocalAnt (the tested path): follow LocalAnt’s setup guide. The quick start is:
npx -y localant setup localant tools profile codinglocalant setupprints your authenticated MCP endpoint. In ChatGPT desktop, go to Settings → Apps & Connectors, enable Developer Mode, choose Connectors → Create, paste that MCP endpoint, select Authentication: None, and name the connectorLocalAnt. Keep LocalAnt’s local approval and security settings appropriate for your machine.DevSpace: follow Waishnav/devspace and connect its local environment to ChatGPT according to that project’s instructions.
Open a ChatGPT Quick Chat and verify that the selected connector can read a harmless local project file before continuing. This is a separate ChatGPT-side setup; installing ProBridge alone does not give ChatGPT access to your Mac.
2. Install ProBridge on the Mac
git clone https://github.com/HAMZADEMIR33412005/probridge.git
cd probridge
node scripts/build-ax.mjs
node scripts/install.mjs
node scripts/doctor.mjsinstall.mjs creates ~/.codex/config.toml if needed, writes the ProBridge MCP entry, and makes a timestamped backup when an existing config changes. Then grant Accessibility to bin/ax-driver if macOS asks, keep ChatGPT desktop open, and start a new Codex chat.
It does not set cwd; Codex should launch the server from the project you already have open.
MCP for Codex
Automatic:
node scripts/install.mjsManual: copy examples/codex.config.toml into ~/.codex/config.toml and replace the absolute server path.
The registered server name is probridge. After any update, start a new Codex chat so it reloads the MCP process and daemon protocol.
MCP for Claude Code / OpenCode / other hosts
Point a stdio MCP server at this checkout:
{
"mcpServers": {
"probridge": {
"command": "/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node",
"args": ["/ABS/PATH/TO/probridge/src/server.mjs"]
}
}
}See examples/claude-code.mcp.json and examples/opencode.json. If ChatGPT’s bundled Node is missing, any Node 20+ binary works.
The MCP host must start the server from the project workspace, or provide exactly one file:// root. ProBridge refuses home, Desktop, Documents, and similar broad folders.
Use it
From an agent in the project workspace:
gpt56_pro_start({
prompt: "Inspect the failing tests, fix the root cause, run focused tests, and report changed files."
})Poll:
gpt56_pro_status({ jobId: "pro_..." })Continue the same Quick Chat after it completes:
gpt56_pro_followup({
jobId: "pro_...",
prompt: "Now implement the review findings."
})Jobs are queued. A second New chat can be sent as soon as the previous prompt is verified as submitted. Follow-ups stay on the same conversation.
Status lives in two places:
~/.chatgpt-pro-subagent/— authoritative daemon state, queue, and lock<workspace>/.chatgpt-pro-jobs/<jobId>.md— cooperative control file ChatGPT writes through LocalAnt / DevSpace
On macOS, an MCP child or detached daemon can occasionally be denied access to a valid project folder by privacy controls or an ACL (Downloads is the common case). This never rejects a job: ProBridge automatically retries the same job with its control file at ~/.chatgpt-pro-subagent/control-files/<workspace-hash>/<jobId>.md, returns that exact path in the start response, and gives it to the ChatGPT Pro session. The project workspace remains the only allowed work scope; the fallback is only the durable status/report file.
Related projects
LocalAnt — ChatGPT’s local MCP gateway / computer connector
DevSpace — local environment / computer connector used with ChatGPT
Platform support
Platform | Status |
macOS | Supported. Native Accessibility driver. |
Windows | Not supported. Needs a different UI driver. |
Linux | Not supported. Needs a different UI driver. |
The MCP server, queue, and control-file protocol are OS-agnostic. The missing piece elsewhere is a trusted replacement for src/native/ax-driver.swift.
Security
ProBridge drives the ChatGPT app you already signed into, then ChatGPT uses LocalAnt / DevSpace to touch the workspace. Treat that as same-user local execution, not a sandbox.
Runtime files under ~/.chatgpt-pro-subagent are private (0700 / 0600). Workspace job files are excluded from git via .git/info/exclude when possible; a failure to update Git metadata never prevents a job from starting. Broad personal folders are refused as workspaces.
Development
npm test
npm run build:ax
node scripts/doctor.mjsLicense
MIT
Available Tools
3 toolsgpt56_pro_followupA
Queue a follow-up in the verified same Quick Chat thread. The target must be the latest completed round and must have a captured chat title. Returns a child jobId; poll gpt56_pro_status.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Latest completed job id in the Quick Chat thread. | |
| prompt | Yes | The follow-up task to send into that verified conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and it discloses key behavior: the operation is queued (non-blocking), returns a child jobId, and requires verification. It also tells the agent the next step (poll status). It stops short of describing error/failure behavior, but the core behavioral contract is transparent.
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 action and target, with the second sentence covering the return and polling behavior. No filler or repetition.
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 two-parameter tool with no output schema, the description supplies the preconditions, the return value, and the follow-up polling action. It is slightly thin on failure/error conditions, but complete enough for an agent to invoke and process the result.
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 100%, so both jobId and prompt are already documented. The description restates the recency constraint for jobId ('latest completed round') and frames prompt as a follow-up task, reinforcing but not adding meaning beyond the schema. Baseline 3 is appropriate.
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?
States a precise action (queue a follow-up) and a specific resource (verified Quick Chat thread), clearly differentiated from siblings by emphasizing the same thread and returning a child jobId. It also names the polling sibling, so an agent can distinguish from gpt56_pro_start and gpt56_pro_status.
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?
Gives explicit preconditions: the target must be the latest completed round and must have a captured chat title, and directs the agent to poll gpt56_pro_status. It does not explicitly name gpt56_pro_start as the alternative for new threads, but the phrase 'follow-up in the verified same Quick Chat thread' strongly implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpt56_pro_startA
Queue one verified GPT-5.6 Sol / Effort Pro Quick Chat sub-agent job for this MCP workspace. Returns immediately with a jobId. The local daemon serializes full job execution, verifies the UI send, and keeps authoritative lifecycle state outside the workspace. Poll gpt56_pro_status.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The complete task for the LocalAnt / DevSpace-capable GPT-5.6 Pro sub-agent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses key behavior: immediate return with jobId, daemon serialization, UI verification, and external lifecycle state. It does not mention failure modes or idempotency, but the async nature and polling requirement are clearly conveyed.
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 sentences each serve a distinct purpose: stating the action, describing the return behavior, and explaining daemon internals and next step. The key information is front-loaded, and there is no filler or repetition.
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 async queue tool with no output schema, the description covers what to send, what is returned (jobId), and what to do next (poll status). It does not explicitly say how to use the jobId with siblings, but that is a minor inferable gap.
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 already documents the single 'prompt' parameter with a full description (100% coverage), so the baseline is 3. The tool description adds no new parameter-specific detail beyond the schema's own description, merely restating that the prompt is the task.
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?
States a specific verb 'Queue' and a specific resource 'GPT-5.6 sub-agent job', making the tool's role clear. The phrase 'for this MCP workspace' scopes it further, and the sibling tools (status, followup) are implied to have different purposes. The description distinguishes this as the start action.
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?
Provides clear context that this queues a job and returns immediately, and instructs to poll gpt56_pro_status afterward. However, it does not explicitly compare to the followup sibling or state when not to use this tool, so usage is more implied than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpt56_pro_statusA
Read authoritative daemon state and the latest validated cooperative control-file report for a job in this MCP workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job id returned by gpt56_pro_start or gpt56_pro_followup. |
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 behavioral disclosure. It signals this is a read operation (non-mutating, safe to call). However, terms like 'authoritative daemon state' and 'cooperative control-file report' are unexplained jargon that obscure the actual behavior and return semantics. The description gives hints (read-only, latest/validated data) but doesn't disclose what an agent will actually receive or whether repeated calls are safe.
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?
A single sentence with no filler words, front-loading the key verb 'Read' and specifying the resource. The structure is efficient — a busy agent can extract the action quickly. Points are deducted only because the dense, jargony phrasing ('authoritative daemon state', 'validated cooperative control-file report') achieves brevity at the expense of immediate clarity.
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 status-checking tool with no output schema and no annotations, the description carries significant responsibility, and it's mostly adequate: it conveys read-only semantics and a job-scoped scope. However, it doesn't clarify what an agent will do with the output (e.g., does it return a job state like pending/running/completed?) or how 'daemon state' differs from the 'control-file report.' The existence of siblings suggests a workflow (start → status → followup), but the description doesn't articulate where the boundaries lie.
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 100%, so the baseline is 3 with no additional parameter info needed. The description's phrase 'for a job in this MCP workspace' loosely references the job context, but the schema already documents that jobId comes from gpt56_pro_start or gpt56_pro_followup. The description adds no meaning beyond what the schema provides, which is acceptable given full coverage.
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 ('Read') and identifies a concrete resource ('authoritative daemon state and the latest validated cooperative control-file report') scoped to a job in the MCP workspace. It clearly distinguishes from siblings: start and followup are different operations, so an agent would not confuse this with them. The phrase 'in this MCP workspace' adds a scoping qualifier that reduces over-flagging as a general system status tool.
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 usage context: check status of a job in the MCP workspace, presumably after gpt56_pro_start or gpt56_pro_followup. However, there's no explicit guidance on when to prefer this tool over siblings, when polling is appropriate, or what conditions would call for gpt56_pro_followup instead. The context is implied by the workflow rather than stated.
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.
3 tool updates
v1.2.0- First observed
gpt56_pro_followup - First observed
gpt56_pro_start - First observed
gpt56_pro_status
TDQS
Scored across 3 tools
Each tool corresponds to one distinct lifecycle action: starting an initial job, polling its status, and queueing a follow-up to a completed thread. There is no meaningful overlap, even though start and followup both create work.
All tools share a clear gpt56_pro_ prefix and consistent lowercase snake_case formatting. Minor deviation: start and followup are verbs while status is a noun, but the action each tool performs is still highly predictable.
Three tools is well-scoped for the server's apparent purpose: launch a job, check status, and continue the conversation. Each tool earns its place, and no unnecessary tools inflate the surface.
The primary start-status-followup workflow is fully covered and workable. The main gaps are optional lifecycle conveniences like canceling a queued/running job or listing all active jobs, but agents can work around these.
Maintenance
Related MCP Connectors
Build agents to automate any background task. Works with your ChatGPT/Claude subscription.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Build and supervise fleets of agents from Claude Code, Codex or Cursor. Connects over OAuth.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThe simplest way to bridge and collaborate across AI Agent sessions like Claude Code, Codex, Gemini, or Cursor. It allows your agents to combine their strengths to solve your most difficult tasks without leaving their current context.16 npm67MIT
- AlicenseAqualityDmaintenanceBridges any MCP client (like Claude Code, Zed, VS Code) to any ACP coding agent, enabling multi-agent orchestration from a single chat interface.24140 npm9Apache 2.0
- AlicenseAqualityAmaintenanceBridges multiple CLI coding agents (Codex, Cursor, OpenCode, Claude, Antigravity) into any MCP client, enabling delegation of prompts, parallel execution, and code review workflows.633 npmMozilla Public 2.0
- AlicenseCqualityBmaintenanceBridges browser-based AI assistants with coding agents like Claude Code and Cursor via MCP, enabling chat relay, browser automation, and skill installation.362MIT