Cloudflare quick tunnel
No account flow. Good for demos. The URL changes every restart, so you must update the ChatGPT app Server URL each time.
codexpro start
Local MCP bridge
Install in your repo
Install the CLI, run setup inside a project, then paste the copied Server URL into ChatGPT Developer Mode. ChatGPT gets bounded tools for the launch project and any additional projects you explicitly allow.
npm install -g codexpro
codexpro setup
Main docs may be ahead of npm; check the npm version or use a source checkout for unreleased behavior.
AGENTS.md, git state, selected files, and .ai-bridge plans.
Token-protected MCP server with workspace, bash, write, and tool modes.
Read, search, edit, review, verify, or hand off through Developer Mode.
Run npm install -g codexpro once.
Run codexpro setup inside your project.
Paste the copied Server URL when creating the ChatGPT plugin.
Use the account you already have
CodexPro is for builders who already pay for ChatGPT and want that subscription to do more than answer questions. It gives ChatGPT a local project bridge: file reads, exact edits, source writes, search, git status, git diff, and allowlisted verification commands.
Codex and ChatGPT are different product surfaces. If one workflow is unavailable and another surface you already have access to is still available, CodexPro lets you work against the same local repo without changing either product's limits.
If your ChatGPT account exposes a stronger model in the web app, and that model surface can call Developer Mode apps, CodexPro lets it work against your local repo through MCP. Some model surfaces cannot call connectors or MCP tools directly. CodexPro does not provide, proxy, resell, or unlock models; it gives compatible ChatGPT sessions local coding tools and repo context.
Planner to executor
Handoff mode keeps ChatGPT planning-only. ChatGPT writes .ai-bridge/current-plan.md, then you decide whether to run a local implementation agent from your terminal.
codexpro execute-handoff runs the saved plan through OpenCode, Pi, Codex, or a custom command, then collects status, stdout/stderr excerpts, and the final git diff back into .ai-bridge for ChatGPT review.
codexpro execute-handoff --agent opencode --model provider/model --dry-run
codexpro execute-handoff --agent opencode --model provider/model
codexpro execute-handoff --agent custom --command "my-agent --task-file {{plan_file}}"
.ai-bridge/agent-status.md
.ai-bridge/implementation-diff.patch
.ai-bridge/execution-log.jsonl
Compared with generic workspace bridges
The transport can look similar: local MCP server, workspace root, and a tunnel. CodexPro is more opinionated. It is built for one job: make ChatGPT Developer Mode useful against explicitly allowed local projects without widening the trust boundary.
That means setup first, explicit safety modes, repo-backed context files, reviewable diffs, compact cards, and no model proxying, account pooling, quota bypassing, third-party Pro scraping, or OS sandbox claims.
Quick start
The default path uses normal coding mode, workspace writes, safe bash, and a tunnel you choose during setup. After setup, daily startup is just codexpro start.
npm install -g codexpro
codexpro setup
In ChatGPT, open Settings -> Security and login. Turn on Developer mode and keep Enforce CSP in developer mode enabled. Then open Settings -> Plugins, stay on the Plugins tab, and click the circular + beside Search plugins.
In New Plugin, name it CodexPro. Use Connection: Server URL and paste the copied URL. The form may default to OAuth; set Authentication to No Authentication / None before creating the plugin.
Ask ChatGPT to inspect files, make scoped edits, and verify with search, read, bash, and git tools.
Tunnel choices
No account flow. Good for demos. The URL changes every restart, so you must update the ChatGPT app Server URL each time.
codexpro start
Best simple stable URL. Create a free ngrok account, use the assigned dev domain, and keep the same ChatGPT app URL across restarts.
codexpro ngrok --hostname your-name.ngrok-free.dev
Use your own domain, such as codexpro.example.com, and keep one ChatGPT URL.
codexpro stable --hostname codexpro.example.com --tunnel-name codexpro
Use your device's .ts.net hostname when your tailnet already allows public Funnel HTTPS.
codexpro tailscale --hostname your-device.your-tailnet.ts.net
ngrok setup
ngrok free accounts include a dev domain. Find it in the ngrok dashboard under Universal Gateway -> Domains, save it once in CodexPro, and future starts from the same repo are just codexpro start.
That means users do not need to change ChatGPT settings every time they restart CodexPro.
ngrok config add-authtoken YOUR_NGROK_TOKEN
codexpro settings set --tunnel ngrok --hostname your-name.ngrok-free.dev
codexpro start
codexpro start --tunnel cloudflare
cloudflared tunnel login
cloudflared tunnel create codexpro
cloudflared tunnel route dns codexpro codexpro.example.com
codexpro stable --hostname codexpro.example.com --tunnel-name codexpro
Cloudflare setup
CodexPro can install cloudflared into ~/.codexpro/bin when it is missing. No sudo, Homebrew, apt, or winget step is required for the default path.
Quick tunnels are disposable. If you own a domain, use a Cloudflare named tunnel and route DNS to a hostname such as codexpro.example.com. The hostname stays the same across restarts, so the ChatGPT app Server URL does not need to change.
Modes
Default. ChatGPT can inspect, write, edit, search, and verify inside the workspace.
Planning-only. ChatGPT writes .ai-bridge/current-plan.md and Codex executes locally.
Exports a durable context file for models or surfaces that cannot call connectors or MCP tools directly.
Complete setup data
This page keeps the high-signal details in one place: commands, ChatGPT app fields, tunnel choices, tools, saved settings, safety defaults, and useful links.
npm install -g codexpro
This gives users the simple codexpro command everywhere.
codexpro setup
Setup saves the tunnel provider, hostname, port, mode, and token for the current workspace.
codexpro start
After setup, future starts from the same repo reuse the saved profile automatically.
This is a one-time ChatGPT setting. CodexPro widgets work with CSP enabled.
The form may initially show OAuth; select No Authentication / None. The copied Server URL includes a private CodexPro token and is for a personal connector only. Shared or multi-user production deployments require OAuth or Authorization-header authentication.
codexpro doctor
Checks Node, build output, saved profile, port availability, tunnel prerequisites, clipboard support, and browser-open support.
codexpro settings
codexpro settings set --tunnel ngrok --hostname your-name.ngrok-free.dev
codexpro settings delete --yes
Use settings to switch providers, reuse another repo setup, or delete a workspace preference.
Press o to open the token-protected admin dashboard. It shows install/start commands, ChatGPT connection steps, saved profile settings, modes, allowed roots, and advanced restart shortcuts.
Default standard tools
.env, private keys, .git, node_modules, generated build/cache folders, paths outside the workspace, and symlink escapes are refused.
Safe mode allows common repo inspection, git, tests, lint, typecheck, and build commands. Use full bash only for trusted local repos.
Use codexpro start --no-bash, or keep bash enabled with --bash-session main --require-bash-session. Session labels target this local CodexPro server, not a Codex app chat.
--codex-sessions metadata lists local Codex session ids, titles, cwd paths, and resume commands. read mode adds bounded transcript reads; neither mode attaches to a live Codex chat.
Opt-in v10 cards render workspace, analysis, changes, Git, handoff, and terminal verification. Reads and searches stay in normal chat output; terminal output and raw diffs remain folded or bounded.
Cloudflare quick tunnels change on restart. Use an ngrok free dev domain, Cloudflare named tunnel, or Tailscale Funnel when you want one ChatGPT app URL.
The token-protected local page can save tunnel, hostname, port, mode, bash, Codex sessions, write/tool mode, widget origin, and tunnel config paths for the next codexpro start. Raw tunnel tokens, account switching, and background services stay out of the browser.
execute-handoff is a terminal command, not a remote MCP tool. Use --dry-run before running unfamiliar agents or custom commands.
FAQ
Short answers for account requirements, setup, URLs, safety, and what ChatGPT can actually access.
Use a ChatGPT web surface with custom MCP access. OpenAI currently documents full write/modify MCP for Business and Enterprise/Edu, with read/fetch MCP access for Pro. Availability can change, and a specific model surface may still be unable to call connectors; use Pro context fallback for those sessions.
No. It does not bypass, avoid, increase, pool, resell, or modify ChatGPT, Codex, OpenAI, or third-party model limits. Every request still runs through your own ChatGPT session and whatever limits that account has.
Global install gives users one command: codexpro setup. It avoids long npx commands and makes daily startup simply codexpro start.
Use Cloudflare quick tunnel for demos. Use an ngrok free dev domain, Cloudflare named tunnel, or Tailscale Funnel when you want one ChatGPT app URL that survives restarts.
It can read explicit context files such as AGENTS.md, .ai-bridge, git status/diff, and selected source files. It cannot read hidden Codex runtime memory.
Yes. In Settings -> Security and login, turn on Developer mode and keep Enforce CSP in developer mode enabled. Create and manage the connection under Settings -> Plugins.
Start and stop
CodexPro owns the local MCP server and the tunnel process. Stop it when the session is over.
Run codexpro start in the target repo. The Server URL is copied automatically.
Press Enter in the terminal to open ChatGPT connector settings.
Press q or Ctrl+C. Quick tunnel URLs stop working. Stable hostnames stay reserved.
Safety boundary
.env, private keys, .git, node_modules, and symlink escapes are blocked.--no-bash disables all ChatGPT-triggered shell commands.--bash-session with --require-bash-session requires explicit session targeting before bash runs.