@minhspark/codex-mcp-bridge 1.20.1 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +26 -0
- package/README.md +57 -15
- package/assets/README.md +30 -0
- package/assets/agent-pets.svg +1 -0
- package/docs/daily-handoffs.md +106 -0
- package/docs/desktop-handoff-design.md +180 -0
- package/docs/new-machine-setup.md +112 -0
- package/docs/project-onboarding.md +122 -0
- package/package.json +8 -2
- package/plugin.json +1 -1
- package/scripts/bridge-projects.mjs +44 -0
- package/scripts/check.mjs +2 -1
- package/scripts/collect-repo-analytics.mjs +5 -2
- package/scripts/configure-message-automation.mjs +18 -0
- package/scripts/install-claude-code.mjs +64 -0
- package/scripts/install-claude-desktop.mjs +48 -5
- package/scripts/install-native-relay.mjs +6 -1
- package/scripts/install-npm-footer.mjs +13 -1
- package/scripts/publish-repo-analytics.mjs +24 -1
- package/src/app-server-client.mjs +5 -2
- package/src/bridge-readiness.mjs +23 -0
- package/src/card-settings-sync.mjs +125 -0
- package/src/claude-bridge.mjs +54 -20
- package/src/claude-code-registration.mjs +54 -0
- package/src/claude-sender-context.mjs +1 -1
- package/src/claude-session-creation.mjs +10 -2
- package/src/codex-mcp-registration.mjs +1 -1
- package/src/codex-native-response.mjs +139 -107
- package/src/codex-sender-context.mjs +62 -61
- package/src/desktop-reply-receipts.mjs +87 -0
- package/src/desktop-task-receipts.mjs +30 -7
- package/src/hardened-root-policy.mjs +5 -0
- package/src/index.mjs +97 -19
- package/src/mcp-supervisor.mjs +6 -2
- package/src/message-automation.mjs +89 -0
- package/src/native-creation-receipts.mjs +155 -0
- package/src/native-relay-companion.mjs +37 -6
- package/src/native-relay.mjs +12 -3
- package/src/peer-protocol.mjs +192 -18
- package/src/project-manager-registration.mjs +34 -0
- package/src/project-onboarding-tools.mjs +30 -0
- package/src/project-onboarding.mjs +178 -0
- package/src/project-policy.mjs +221 -0
- package/src/project-scope.mjs +33 -5
- package/src/prompt-guidance.mjs +2 -0
- package/src/release-snapshot.mjs +30 -5
- package/src/rollout-reader.mjs +58 -0
- package/src/rollout-segments.mjs +65 -0
- package/src/security-policy.mjs +4 -2
- package/src/sites-connector.mjs +17 -2
- package/src/telemetry.mjs +10 -8
- package/src/thread-delivery.mjs +134 -35
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,32 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [SemVer](ht
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.21.0] - 2026-10-06
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Resume an accepted Codex Desktop delivery after a timeout with `wait_codex_reply`, using its original delivery ID without resending the prompt.
|
|
12
|
+
- Inspect and prepare the selected workspace through `inspect_bridge_project` and `prepare_bridge_project`, with shared project grants, registered worktree support and explicit revocation.
|
|
13
|
+
- Add `bridge-projects` for project policy management and `codex-bridge-code-install` for explicit, previewable Claude Code MCP registration. Include Desktop handoff and new-machine onboarding guides.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Authenticate native creation receipt contents with a private persisted signing key; reject altered and unsigned receipts before restoring ownership.
|
|
18
|
+
- Restore owned task authority from verified native creation receipts after lost acknowledgements or bridge restarts. Keep ordinary inspection and editable local receipts subject to ownership checks.
|
|
19
|
+
- Bind project grants to repository identity and retain repository and registered worktree revocations when Git metadata or directories disappear or are replaced. Reject malformed Git metadata instead of treating it as a plain folder.
|
|
20
|
+
- Recheck live project, account and runtime authority after awaited sender validation before opening, trusting or submitting a Claude Desktop creation.
|
|
21
|
+
- Preserve reply continuation for confirmed Desktop creation and for existing-thread sends whose native acknowledgement times out. Return an owner/account-bound delivery ID without resending; keep uncertain delivery distinct from acceptance, and correlate creation replies to the exact native creation dispatch. Retain the upstream project and permission checks.
|
|
22
|
+
- Bind standalone Git directory pointers to their checkout so a different project cannot impersonate an authorized recipient. Reject private metadata, task receipts and connector credentials that grow, disappear or change while being read.
|
|
23
|
+
- Read release fingerprints through bounded file descriptors, preserve locks replaced by another writer, and refuse automatic expiry of an occupied telemetry lock. Write installer output atomically and stop if the Desktop configuration changes before replacement.
|
|
24
|
+
- Refuse app-server health redirects and revalidate loopback endpoints before use. Clamp supervisor timer intervals to the supported range and restrict CI token permissions while pinning the Deno setup action.
|
|
25
|
+
- Create Windows private files and directories with a protected access list owned by the current user; reject unsafe existing artifacts instead of retaining inherited or foreign explicit access entries.
|
|
26
|
+
|
|
27
|
+
### Upgrade notes
|
|
28
|
+
|
|
29
|
+
- Update the installed npm package to `@minhspark/codex-mcp-bridge@1.21.0` and reconnect the existing Desktop MCP connections. Publication does not reload already running MCP processes or prove a live Desktop handoff.
|
|
30
|
+
- Shared project policy is opt-in. Configure both bridge MCP entries with the same absolute `CODEX_BRIDGE_PROJECT_POLICY` JSON path when using shared grants; project grants do not change session permissions.
|
|
31
|
+
- At release preparation, 91 new CodeQL alerts from PR #100 remain open. Static triage did not establish an exploitable security boundary for 86 alerts; five file-reading race alerts still require validation. This release does not claim a clean CodeQL alert inventory.
|
|
32
|
+
|
|
7
33
|
## [1.20.1] - 2026-10-03
|
|
8
34
|
|
|
9
35
|
### Fixed
|
package/README.md
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/agent-pets.svg" width="144" height="52" alt="Claude Clawd → Codex; Codex → Claude" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">codex-mcp-bridge</h1>
|
|
6
|
+
|
|
7
|
+
Local Desktop handoff guides: [daily workflow and directory verification](docs/daily-handoffs.md), [new-machine setup and permissions](docs/new-machine-setup.md), and [project onboarding](docs/project-onboarding.md).
|
|
2
8
|
|
|
3
9
|
[](https://www.npmjs.com/package/@minhspark/codex-mcp-bridge)
|
|
4
|
-
[](https://www.npmjs.com/package/@minhspark/codex-mcp-bridge)
|
|
11
|
+
[](https://skills.sh/buidangminh23/codex-mcp-bridge/codex-bridge)
|
|
12
|
+
[](https://buidangminh23.github.io/codex-mcp-bridge/)
|
|
5
13
|
[](LICENSE)
|
|
6
14
|
|
|
7
15
|
Send prompts and replies between **Claude and Codex**, keeping each conversation in its own app. Supports Windows, macOS, and Linux; native Desktop integration supports Windows and macOS.
|
|
@@ -16,16 +24,6 @@ Starring the repository or downloading/installing a package does not subscribe y
|
|
|
16
24
|
|
|
17
25
|
[View release notes](https://github.com/buidangminh23/codex-mcp-bridge/releases).
|
|
18
26
|
|
|
19
|
-
## Project statistics
|
|
20
|
-
|
|
21
|
-
**[Open live dashboard — refreshes every 30 seconds](https://buidangminh23.github.io/codex-mcp-bridge/)**
|
|
22
|
-
|
|
23
|
-
The image below is an hourly snapshot. Each metric shows its source time and reporting window; delayed sources are marked stale. The live dashboard refreshes independently.
|
|
24
|
-
|
|
25
|
-
[](https://github.com/buidangminh23/codex-mcp-bridge/tree/analytics)
|
|
26
|
-
|
|
27
|
-
[Full statistics and daily history](https://github.com/buidangminh23/codex-mcp-bridge/tree/analytics) · [Public aggregate JSON](https://raw.githubusercontent.com/buidangminh23/codex-mcp-bridge/analytics/data.json) · [How these metrics work](#repository-analytics)
|
|
28
|
-
|
|
29
27
|
## Installation
|
|
30
28
|
|
|
31
29
|
### ChatGPT plugin
|
|
@@ -52,7 +50,7 @@ codex-sites-connector --pair --site https://codex-mcp-bridge.buidangminh23.chatg
|
|
|
52
50
|
|
|
53
51
|
Open the pairing URL printed in the terminal, sign in with the ChatGPT account that will use the plugin, and choose **Connect this computer**. The Site owner can install its provisioned plugin from **Plugins → Personal → Created by you**. To restart an already paired connector, run `codex-sites-connector` (`codex-sites-connector.cmd` on Windows). To replace the paired computer, use **Disconnect existing computer** on a fresh pairing page first.
|
|
54
52
|
|
|
55
|
-
The public MCP endpoint is `https://codex-mcp-bridge.buidangminh23.chatgpt.site/mcp`; it uses Sign in with ChatGPT. A plugin compatibility ZIP is attached to the [1.
|
|
53
|
+
The public MCP endpoint is `https://codex-mcp-bridge.buidangminh23.chatgpt.site/mcp`; it uses Sign in with ChatGPT. A plugin compatibility ZIP is attached to the [1.21.0 release](https://github.com/buidangminh23/codex-mcp-bridge/releases/tag/v1.21.0) for manual import in clients that support plugin packages. ChatGPT personal accounts cannot share their Sites-provisioned plugin directly by invitation or share link. A public directory listing requires verified developer identity and OpenAI review; this release does not claim directory approval. See [OpenAI's Sites plugin access rules](https://help.openai.com/en/articles/20001547-hosting-a-plugin-with-chatgpt-sites).
|
|
56
54
|
|
|
57
55
|
Use a semicolon between multiple Windows roots or a colon on macOS. The relay's executor must belong to an allowed project. Credentials and operation receipts stay in the current OS user's private `~/.codex/sites-bridge` directory. The connector uses outbound HTTPS; no public port or tunnel is required.
|
|
58
56
|
|
|
@@ -99,6 +97,19 @@ If the bridge is already registered, `codex-full-access` (`codex-full-access.cmd
|
|
|
99
97
|
|
|
100
98
|
For Desktop mode, install [Codex Desktop](https://developers.openai.com/codex/app) and [Claude Desktop](https://claude.com/download), sign in, and save the intended local project in Codex Desktop. Open that same directory in Claude Desktop's Code tab. A normal Claude chat is not a Code session.
|
|
101
99
|
|
|
100
|
+
#### Native relay pipe forwarding
|
|
101
|
+
|
|
102
|
+
After running the native relay installer, add this setting to its **existing** entry in `~/.codex/config.toml` (or `$CODEX_HOME/config.toml`):
|
|
103
|
+
|
|
104
|
+
```toml
|
|
105
|
+
[mcp_servers.codex-native-relay]
|
|
106
|
+
env_vars = ["CODEX_APP_TOOLS_PIPE_PATH"]
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Keep the entry's `command`, `args`, and other settings; append the variable name if `env_vars` already contains names. Use your configured server name if you set `CODEX_NATIVE_RELAY_NAME`. This forwards the running Desktop app-server's pipe path without saving its temporary value. The installer uses `codex mcp add`, which does not provide an `env_vars` option, and refuses to reset entries with custom transport settings, including `env_vars`.
|
|
110
|
+
|
|
111
|
+
Reconnect `codex-native-relay` in the existing Desktop task, or restart Codex Desktop after active work finishes. Verify `native_relay_status` from that task. Without forwarding, Desktop setups whose pipe is absent from app-server command-line configuration can expose status tools while reporting native pipe unavailable and relay sockets not listening; a connected Claude bridge alone does not establish native delivery.
|
|
112
|
+
|
|
102
113
|
### Windows (PowerShell)
|
|
103
114
|
|
|
104
115
|
Install Node and a native Codex executable with WinGet:
|
|
@@ -240,6 +251,8 @@ These examples allow projects under the current user's home. For projects elsewh
|
|
|
240
251
|
|
|
241
252
|
### Verify the installation
|
|
242
253
|
|
|
254
|
+
For Desktop project onboarding, both MCP entry points expose `inspect_bridge_project` (read-only) and `prepare_bridge_project` (user-selected workspace trust plus shared messaging grant). Setup preserves unrelated settings, backs up changes, respects revocations, and resolves registered worktrees to their primary repository. It does not approve tools or claim live connectivity. `CODEX_BRIDGE_PROJECT_POLICY` must explicitly name the shared policy. See [project onboarding and independent optional native settings integration](docs/project-onboarding.md). `node scripts/bridge-projects.mjs register-card-settings` registers the optional card-extension native settings integration; the bridge never depends on that extension.
|
|
255
|
+
|
|
243
256
|
Check registration from a terminal; on Windows use `codex.exe` if `codex` resolves to a blocked PowerShell shim:
|
|
244
257
|
|
|
245
258
|
```bash
|
|
@@ -267,6 +280,7 @@ The registered supervisor should report auto-reload enabled. Next, list the inte
|
|
|
267
280
|
| Direction | Tools |
|
|
268
281
|
|---|---|
|
|
269
282
|
| Continue unfinished Codex work | Verify the original `threadId`, then `send_to_codex_thread` |
|
|
283
|
+
| Receive a reply after a Desktop send times out | `wait_codex_reply` with the original `deliveryId`; repeat bounded waits without sending again |
|
|
270
284
|
| Codex → Claude | `list_claude_sessions`, then `send_to_claude_session` |
|
|
271
285
|
| Start independent Codex work | `delegate_to_codex` or `start_codex_thread` with `cwd`, initial `prompt`, and a fresh UUID `requestId` in Desktop mode |
|
|
272
286
|
|
|
@@ -278,6 +292,8 @@ Example requests:
|
|
|
278
292
|
|
|
279
293
|
Use the exact project directory and destination task. If several Claude sessions match, specify the task ID. A `reply_received` receipt confirms a reply; a timeout does not mean the task stopped, so inspect it before retrying.
|
|
280
294
|
|
|
295
|
+
Desktop sends and creation keep each call bounded to at most 40 seconds, including preflight and dispatch. Creation tools return a durable `deliveryId` once the fresh task is confirmed. `send_to_codex_thread` prepares its observation receipt before dispatch: a lost acknowledgement returns `deliveryStatus=unconfirmed`, not a claim of acceptance. On `nextAction=wait_codex_reply`, continue with that read-only tool until completion, a verification error, a request for user input, or cancellation. Reuse the same ID after reconnecting; do not resend the prompt. A receipt only permits observation and never grants access: original sender/accounts and current project permissions are checked again. An existing-thread receipt keeps the exact pre-send rollout boundary; a creation receipt requires the exact `create_thread` dispatch, executor, prompt and confirmed fresh thread ID. Unrelated turns cannot satisfy either receipt. Receipts live in `bridge-reply-receipts` under the configured Codex home and contain the prompt for correlation; keep them private. Creation deduplication receipts retain the original reply ID across retries, including edited briefs. Old creation receipts without a reply binding still prevent duplicates but require inspection; the bridge does not invent a binding retrospectively. This is continuation across bounded tool calls, not an unattended push service after Claude stops running.
|
|
296
|
+
|
|
281
297
|
An explicit request for a new conversation, or standing user instructions such as the example above, authorizes creation for independent work. Keep fixes, clarifications and results for unfinished work in its original conversation. A completed assistant turn does not by itself mean the whole task is finished; matching a project or finding a recent task does not make it the right destination for new work.
|
|
282
298
|
|
|
283
299
|
In Desktop mode, generate a fresh UUID `requestId` for each independent task and retain it on every retry of that creation. Different request IDs create separate tasks even with the same directory, title and prompt. The same ID recovers the original receipt after a bridge restart; an edited title or prompt is not resent. Continue that task with its returned `threadId`. Pending or uncertain creation remains blocked: inspect the original receipt/task instead of changing the ID to retry.
|
|
@@ -359,9 +375,10 @@ Start with `codex doctor` for Codex installation problems and `claude doctor` fo
|
|
|
359
375
|
| Codex says `Organization settings could not be loaded`, or the bridge reports `INVALID_MANAGED_CONFIG` | On a machine you administer, rerun `codex-mcp-bridge-install --full-access` to repair the managed policy and global defaults. The policy must include `"read-only"` alongside `"danger-full-access"`; the former is required for Codex to load it, while the effective mode remains Full access. Complete any OS administrator prompt, then run `codex doctor --summary --ascii`. |
|
|
360
376
|
| `codex binary not found`, `ENOENT`, or Windows `EINVAL` during registration | Locate the actual executable. Set `CODEX_EXE` before rerunning the installer: PowerShell `$env:CODEX_EXE = (Get-Command codex.exe).Source`; macOS/Linux `export CODEX_EXE="$(command -v codex)"`. On Windows, do not point it at `codex.ps1` or `codex.cmd`. |
|
|
361
377
|
| Tools appear in Claude Desktop but not in its Code task | Complete the separate [Claude Code registration](#register-claude-code), then reconnect `/mcp` in that Code session. |
|
|
378
|
+
| `This MCP process has no registered Claude Desktop Code session in its parent ancestry` | The shared Desktop entry may not belong to the calling Code task. Register the bridge in the intended existing Code project under a distinct name, such as `codex-bridge-code`, retaining its access settings. Check that `CODEX_BRIDGE_ALLOWED_ROOTS` includes the intended authorized target project; copied test registrations may still allow only test directories. Reload that task's MCP configuration. In the tested Windows Desktop version, View > Reload was insufficient: fully exit and reopen Claude after active work is stopped, then reopen the same task. Verify the dedicated entry and a new proactive send; receiving a reply to a Codex-originated message alone does not establish proactive sending. |
|
|
362
379
|
| Installer refuses an entry with custom access/timeout settings | Keep those settings. Update only the existing entry's `command` and `args` to the values printed by the installer, then reconnect. |
|
|
363
380
|
| Desktop task still reports `app-server` | Rerun `codex-mcp-bridge-install --desktop-tasks`; set `CODEX_BRIDGE_DESKTOP_TASKS=1` in the separate Claude Code registration too. Refresh the reverse registration with the same setting and reconnect the actual sending task. |
|
|
364
|
-
| Relay is installed but unavailable |
|
|
381
|
+
| Relay is installed but unavailable | Check [native relay pipe forwarding](#native-relay-pipe-forwarding), then reconnect `codex-native-relay` or restart Codex Desktop after active work finishes. Check `codex mcp get codex-native-relay` and the in-task `native_relay_status`; a registered entry alone is insufficient. |
|
|
365
382
|
| `RELAY_THREAD_UNCONFIGURED` | Rerun `codex-native-relay-install --desktop-tasks` without `--no-bootstrap` to create the missing executor. |
|
|
366
383
|
| macOS `untrusted-code-signing-identity` or `NATIVE_DELIVERY_UNCONFIRMED` | Inspect the client logs and the installer's `relay runtime:` line. Rerun the relay installer with Codex Desktop installed; if runtime detection fails, set `CODEX_NATIVE_RELAY_NODE` to the actual app-bundled runtime. Relaunch the companion after active work finishes. Inspect any original delivery before retrying. |
|
|
367
384
|
| Linux says native relay unavailable | Use the Linux CLI setup with `CODEX_BRIDGE_DESKTOP_TASKS=0` on both registrations. Native Desktop relay support is Windows/macOS only. |
|
|
@@ -378,7 +395,7 @@ For unresolved failures, [open an issue](https://github.com/buidangminh23/codex-
|
|
|
378
395
|
|
|
379
396
|
## Repository analytics
|
|
380
397
|
|
|
381
|
-
The live dashboard polls the aggregate API every 30 seconds. Installation counts reflect reports received by the server; this is not a count of currently online processes. Public GitHub/npm sources are refreshed with a short cache, but their own statistics may be delayed. GitHub Actions refreshes and archives statistics hourly through the `Repository analytics` workflow, including private GitHub traffic; scheduled runs may be delayed by GitHub. Data collection and publication to the `analytics` branch run independently of the Pages deployment environment, and a newer scheduled run replaces a stuck older run. That workflow reads GitHub traffic with the `ANALYTICS_TOKEN` repository secret, a token with push access to this repository (fine-grained: Administration read); the default workflow token cannot read GitHub traffic, so without it the views/clones sources are retained from the last successful run and the run is reported as incomplete. The `analytics` branch is written with the workflow's own token, so its commits come from `github-actions[bot]` and `ANALYTICS_TOKEN` needs no write access. The README
|
|
398
|
+
The live dashboard polls the aggregate API every 30 seconds. Installation counts reflect reports received by the server; this is not a count of currently online processes. Public GitHub/npm sources are refreshed with a short cache, but their own statistics may be delayed. GitHub Actions refreshes and archives statistics hourly through the `Repository analytics` workflow, including private GitHub traffic; scheduled runs may be delayed by GitHub. Data collection and publication to the `analytics` branch run independently of the Pages deployment environment, and a newer scheduled run replaces a stuck older run. That workflow reads GitHub traffic with the `ANALYTICS_TOKEN` repository secret, a token with push access to this repository (fine-grained: Administration read); the default workflow token cannot read GitHub traffic, so without it the views/clones sources are retained from the last successful run and the run is reported as incomplete. The `analytics` branch is written with the workflow's own token, so its commits come from `github-actions[bot]` and `ANALYTICS_TOKEN` needs no write access. The README view badge is an hourly snapshot and may be cached by GitHub; open the live dashboard for automatic updates. Each source keeps its own collection time and reporting window. Sources older than three hours are marked stale even when polling succeeds. Missing data is unavailable, not zero; an empty usage breakdown means no opted-in reports in that period. Only aggregate figures are published. Installation IDs stay in the private database.
|
|
382
399
|
|
|
383
400
|
Repository owners can view [GitHub traffic](https://github.com/buidangminh23/codex-mcp-bridge/graphs/traffic) for recent views and clones. Downloads and clones include updates, reinstalls, and automation; they do not measure active users. GitHub traffic only covers the recent 14-day window, so collect it regularly to keep a longer history.
|
|
384
401
|
|
|
@@ -431,6 +448,31 @@ WHERE day >= (CURRENT_TIMESTAMP AT TIME ZONE 'UTC')::date - 29;
|
|
|
431
448
|
|
|
432
449
|
## Development
|
|
433
450
|
|
|
451
|
+
### Shared project scope for Desktop Code conversations
|
|
452
|
+
|
|
453
|
+
See [Desktop handoff design and recovery](docs/desktop-handoff-design.md) for the failure cases, integration with current upstream, and validation limits.
|
|
454
|
+
|
|
455
|
+
For a source installation used by both desktops, set `CODEX_BRIDGE_PROJECT_POLICY` to the same absolute JSON file in both bridge entries. The opt-in policy is read on every operation. `bridge-projects` defaults to `~/.config/GptClaudeBridge/projects.json`; prefer a shared home-directory path over Windows AppData, whose view can differ between packaged applications.
|
|
456
|
+
|
|
457
|
+
```sh
|
|
458
|
+
bridge-projects allow-parent /absolute/projects
|
|
459
|
+
bridge-projects allow-project /absolute/other-repository
|
|
460
|
+
bridge-projects check /absolute/other-repository
|
|
461
|
+
bridge-projects revoke /absolute/other-repository
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
A parent grant covers new projects inside it and their registered Git worktrees. A project grant covers that repository's registered worktrees even outside the parent. Canonical directory identities and Git's worktree registry are checked; a copied `.git` pointer does not establish membership. Explicit revocation takes precedence and applies to subsequent operations without restarting either bridge. It does not cancel work already dispatched. Missing or invalid policy files fail closed. This opt-in policy cannot replace the hardened profile's pinned roots.
|
|
465
|
+
|
|
466
|
+
Project grants do not replace upstream's same-project requirement for Claude-to-Codex delivery: the verified sender and destination must still share a directory or registered Git repository. Authorizing two unrelated projects does not permit sending between them.
|
|
467
|
+
|
|
468
|
+
Claude Code needs its own user-level `codex-bridge` process, whose ancestry identifies the sending Code session. A generic shared Desktop MCP process cannot supply that identity. `codex-bridge-code-install --policy /absolute/projects.json` previews migration of an existing supervised installation; `--apply --clients-stopped` backs up and writes it. Customized entries are refused for review. Synchronize the same entry in any external configuration manager such as CC Switch. `--check` diagnoses duplicate/shared registrations. Reconnect clients after changing registration; subsequent project-policy changes need no reconnect.
|
|
469
|
+
|
|
470
|
+
Run `codex_bridge_status` in the actual Claude Code conversation with the intended `cwd`. It reports sender, target scope and relay readiness independently. A generic command-line connectivity check can report a reachable relay while returning nonzero because no Code caller was verified. Validate both a Codex-originated round trip and a Claude-originated round trip; neither proves the other. Account and sender permission checks remain mandatory. Client upgrades can still require compatibility updates.
|
|
471
|
+
|
|
472
|
+
See the [project onboarding guide](docs/project-onboarding.md) for explicit setup and the optional settings adapter.
|
|
473
|
+
|
|
474
|
+
Automatic handoff requires both user authorization for the collaboration and permission to use the messaging tools; a card extension's project grant does not approve this bridge. After explicitly opting in, run `node scripts/configure-message-automation.mjs --apply --approve-message-automation` once. It backs up Claude user settings, adds only the exact `send_to_codex_thread` and `wait_codex_reply` tool permissions, and installs scoped collaboration guidance in `~/.claude/rules/gpt-claude-bridge.md`. Without flags it previews; `--check` verifies the files. Existing conflicting ask/deny rules are refused, not removed. It does not approve shell/file operations, expand projects, change modes, or override host safeguards. A running conversation can require a one-time user acknowledgment of standing authorization; do not disguise peer messages as user consent. Validate consecutive real handoffs after setup, not just connectivity. `readiness.readyScope` explicitly excludes host tool permission evaluation.
|
|
475
|
+
|
|
434
476
|
```bash
|
|
435
477
|
npm ci
|
|
436
478
|
npm test
|
package/assets/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Artwork sources
|
|
2
|
+
|
|
3
|
+
`agent-pets.svg` pairs Claude Clawd and the original Codex companion with a right arrow above a left arrow. The artwork preserves each mascot's colors and proportions.
|
|
4
|
+
|
|
5
|
+
- Claude Clawd: `ClaudeCode` vector from [LobeHub Icons](https://github.com/lobehub/lobe-icons), copied from the `icons-pro-max` asset catalog. Copyright (c) 2023 LobeHub; MIT license below.
|
|
6
|
+
- Codex companion: original idle frame from OpenAI's Codex desktop companion artwork (`codex-spritesheet-v6`, cell 0,0, 192 × 208 pixels). Copyright OpenAI. This third-party artwork and the represented trademarks are not covered by this repository's MIT license.
|
|
7
|
+
|
|
8
|
+
## LobeHub Icons license
|
|
9
|
+
|
|
10
|
+
MIT License
|
|
11
|
+
|
|
12
|
+
Copyright (c) 2023 LobeHub
|
|
13
|
+
|
|
14
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
15
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
16
|
+
in the Software without restriction, including without limitation the rights
|
|
17
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
19
|
+
furnished to do so, subject to the following conditions:
|
|
20
|
+
|
|
21
|
+
The above copyright notice and this permission notice shall be included in all
|
|
22
|
+
copies or substantial portions of the Software.
|
|
23
|
+
|
|
24
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
25
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
26
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
27
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
28
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
29
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
30
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="144" height="52" viewBox="0 0 144 52" role="img" aria-labelledby="title"><title id="title">Claude Clawd and Codex pets communicating in both directions</title><metadata>Claude Clawd vector: LobeHub Icons, MIT, copyright LobeHub. Codex companion: OpenAI Codex desktop, original idle sprite, copyright OpenAI. See assets/README.md.</metadata><svg x="0" y="2" width="48" height="48" viewBox="0 0 24 24"><path clip-rule="evenodd" d="M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z" fill="#D97757" fill-rule="evenodd"/></svg><g fill="none" stroke="#8b949e" stroke-width="2.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M61 16H81M75 10L81 16L75 22"/><path d="M81 36H61M67 30L61 36L67 42"/></g><image x="96" y="0" width="48" height="52" href="data:image/png;base64,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"/></svg>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Daily Desktop handoffs
|
|
2
|
+
|
|
3
|
+
Install the messaging MCP entries first. Local Card Bridge Desktop is optional
|
|
4
|
+
and is needed only for automatic task-card startup and its settings UI. Neither
|
|
5
|
+
component uploads an entire local project. For initial installation see
|
|
6
|
+
[new-machine setup](new-machine-setup.md); for grants see
|
|
7
|
+
[project onboarding](project-onboarding.md).
|
|
8
|
+
|
|
9
|
+
Workspace trust, project authorization and host tool permission are separate.
|
|
10
|
+
Inspect the actual caller and destination with the status/onboarding tools.
|
|
11
|
+
Seeing a tool in a list is not proof that it can send. Claude-to-Codex delivery
|
|
12
|
+
also requires both tasks to belong to the same directory or registered Git
|
|
13
|
+
repository, even when two unrelated projects are both authorized.
|
|
14
|
+
|
|
15
|
+
## Establish one collaboration conversation
|
|
16
|
+
|
|
17
|
+
When the user authorizes a new Claude conversation, prefer the plus button next
|
|
18
|
+
to its project in the Code sidebar. On some observed Windows builds, a
|
|
19
|
+
`claude://code/new?folder=...` prefilled link displays the intended project but
|
|
20
|
+
creates the conversation in a scratch directory. This branch does not repair
|
|
21
|
+
Claude's client. See the [link documentation](https://support.claude.com/en/articles/14729294-open-claude-desktop-with-a-link)
|
|
22
|
+
and [reported directory behavior](https://github.com/anthropics/claude-code/issues/92210).
|
|
23
|
+
|
|
24
|
+
Wait for project/branch selection to finish. First request only the actual cwd,
|
|
25
|
+
session identity, Git root if applicable, and Remote Control state. Compare
|
|
26
|
+
`list_claude_sessions` with the native task ID, CLI session ID, account and cwd.
|
|
27
|
+
Pin `expectedCwd` and `expectedTaskId` before dispatching production work.
|
|
28
|
+
Reuse this verified parent for subsequent handoffs.
|
|
29
|
+
|
|
30
|
+
If a link was already opened, retain its requestId and inspect its receipt.
|
|
31
|
+
`promptSubmitted=false` with `submissionStatus=not_observed` means submission
|
|
32
|
+
was not verified, not that nothing was delivered. A wrong-directory task can
|
|
33
|
+
be outside the authorized search scope. Inspect existing conversations before
|
|
34
|
+
canceling a pending creation or starting again. Do not broaden grants to make
|
|
35
|
+
an accidental scratch conversation fit. `awaiting_project_confirmation` means
|
|
36
|
+
submission was seen but the workspace does not match; `created` requires the
|
|
37
|
+
new task, account, process, prompt and directory to match.
|
|
38
|
+
|
|
39
|
+
## Send, execute, receive
|
|
40
|
+
|
|
41
|
+
1. Send a narrow goal, necessary context, file scope and acceptance criteria.
|
|
42
|
+
Reference longer local documents rather than copying entire conversations.
|
|
43
|
+
2. Reuse existing execution tasks. For a new sidebar task, preserve its parent
|
|
44
|
+
session ID, task ID, title and local/worktree mode. Display its parent inside
|
|
45
|
+
Claude before using `start_desktop_card`, then verify the resulting child.
|
|
46
|
+
3. Claude may report progress, request help and return results through the
|
|
47
|
+
messaging MCP within the user's authorized collaboration. Acknowledgment is
|
|
48
|
+
not task completion; check the actual result.
|
|
49
|
+
4. For a Claude-to-Codex creation/send timeout with a deliveryId, call `wait_codex_reply` with the same
|
|
50
|
+
deliveryId. For Codex-to-Claude, retain the original msgId and inspect its
|
|
51
|
+
receipt. An unconfirmed acknowledgement is not proof of delivery; observe
|
|
52
|
+
the original receipt instead of resending an uncertain task.
|
|
53
|
+
5. An `interrupted` receipt ends observation only: task outcome is unknown and
|
|
54
|
+
background work may continue. Inspect the existing task before a scoped
|
|
55
|
+
follow-up; do not repeat card creation or file operations.
|
|
56
|
+
|
|
57
|
+
Use native session/event tools for child completion and bounded waits. Avoid
|
|
58
|
+
infinite watcher scripts or regular expressions that depend on JSON field
|
|
59
|
+
order. Native background notifications and image companions are correlated by
|
|
60
|
+
identity and ancestry, not their visible wording.
|
|
61
|
+
|
|
62
|
+
Local children share a working directory; assign disjoint file scopes.
|
|
63
|
+
Worktree children have separate checkout directories and branches within the
|
|
64
|
+
same repository. Switching branches alone does not move a directory. A native
|
|
65
|
+
Desktop `create_thread` dispatcher, including one in a worktree, uses its own
|
|
66
|
+
verified permissions; it does not inherit the parent's authority.
|
|
67
|
+
|
|
68
|
+
## Troubleshooting and cleanup
|
|
69
|
+
|
|
70
|
+
Report the actual failed layer: project grant, host approval, sender identity,
|
|
71
|
+
transport/authentication, or reply observation. Preserve real denials; do not
|
|
72
|
+
switch identities or routes to bypass them. A configured tool allow rule does
|
|
73
|
+
not guarantee every host will permit every call.
|
|
74
|
+
|
|
75
|
+
Messaging does not require selecting the destination in Claude. Task-card
|
|
76
|
+
startup requires the corresponding parent to be displayed. Background redraw
|
|
77
|
+
behavior depends on the client; Remote Control is not required.
|
|
78
|
+
|
|
79
|
+
If an old worker is stuck on an unrecognized pending transcript record, it may
|
|
80
|
+
defer hot reload. Save the original receipt and any verified historical reply
|
|
81
|
+
before reconnecting. An unknown ID after reconnecting is not evidence of
|
|
82
|
+
non-delivery. Verify recovery with one harmless message, not by resending work.
|
|
83
|
+
|
|
84
|
+
Card revocation and communication revocation are independent. Archiving a
|
|
85
|
+
conversation does not guarantee worktree/branch removal. Check running work,
|
|
86
|
+
uncommitted files and unique commits before cleanup; preserve configuration,
|
|
87
|
+
receipts and recent validation evidence.
|
|
88
|
+
|
|
89
|
+
## Brief for a project coordinator
|
|
90
|
+
|
|
91
|
+
> Use the installed messaging bridge for this project's authorized GPT/Claude
|
|
92
|
+
> collaboration. Read this guide, verify the actual caller and target, and
|
|
93
|
+
> reuse the corresponding Claude parent. Send bounded tasks, retain message and
|
|
94
|
+
> card IDs, continue timed-out observations without resending, and verify the
|
|
95
|
+
> complete result before reporting completion. Use the optional card extension
|
|
96
|
+
> only when a separate child is needed. Respect the user's existing scope and
|
|
97
|
+
> normal host approvals; do not enable Remote Control.
|
|
98
|
+
|
|
99
|
+
This brief supplies a workflow, not new project or tool authorization.
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
After an uncertain Desktop creation, keep its `deliveryId` even when `threadId`
|
|
103
|
+
is still null. Continue with `wait_codex_reply`; do not create again to obtain the
|
|
104
|
+
ID. The updated companion retains late creation acknowledgements. If it reports
|
|
105
|
+
unsupported `get_creation_receipt`, reload both bridge workers after installing
|
|
106
|
+
the update; that compatibility check occurs before any new task is dispatched.
|