Repository navigation
Update plugin version to 1.0.5 - #398
Merged
Merged
Conversation
kingdoooo
added a commit
to kingdoooo/codex-plugin-cc
that referenced
this pull request
Jun 26, 2026
Brings in upstream openai#374 (Claude session transfer) and openai#398 (version bump). The only conflict was in plugins/codex/scripts/lib/codex.mjs: openai#374 added the EXTERNAL_AGENT_IMPORT_* constants in the same location as this branch's turn-idle-timeout / inferred-completion block. Both features are unrelated; resolved additively by keeping both.
Jafee
added a commit
to Jafee/codex-plugin-cc-stable
that referenced
this pull request
Jul 3, 2026
…ings Net diff 807e03a..80c31f9 (openai#374 + openai#398) re-landed as a clean commit per the fork's merge policy: /transfer imports the current Claude transcript into a resumable Codex thread via externalAgentConfig/import, the SessionStart hook exports CODEX_COMPANION_TRANSCRIPT_PATH, app-server exit errors carry stderr, initialize advertises requestAttestation: false, and buildThreadParams drops experimentalRawEvents. Command docs and tests renamed to /codex-stable:*. Fork deviations from upstream, from the dual audit (Fable + Codex gpt-5.5 xhigh, which flagged two of these on the upstream diff): - request() accepts a bounded per-call timeoutMs override and the import RPC uses the same 2-minute ceiling as the completion wait, so a never-answered import request cannot hang the transfer and skip client teardown (our openai#302 wall-clock timeout would otherwise cut large imports off at 30s). - importedThreadIdForSource() re-verifies that the validated canonical source path still resolves to itself before hashing, closing the ledger-side TOCTOU window when the file is swapped after validation. - handleTransfer resolves --cwd with requireExists, matching the fork's fail-fast rule for commands that start Codex work. Known limitation (accepted, LOW): a transcript that grows between Codex's import read and the ledger lookup fails the content-hash match and reports "did not record an imported thread"; retrying is safer than silently resuming an older imported thread. Co-authored-by: stefanstokic-oai <[email protected]> Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_017FLdF7gB8iPZf1eKF1WMYt
patriyang
added a commit
to patriyang/codex-plugin-cc
that referenced
this pull request
Jul 7, 2026
) Merges the 2 commits our fork was behind `openai/codex-plugin-cc:main`: - `430e2a8` feat: add Claude session transfer command (openai#374) — new `/codex:transfer` command that imports the current Claude Code session into a resumable Codex thread (via Codex's external-agent session importer). - `80c31f9` fix: bump plugin version to 1.0.5 (openai#398). ## Conflict resolution - **Versions** (`marketplace.json`, `package.json`, `package-lock.json`, `plugin.json`): kept our higher `1.0.8` and bumped to **`1.0.9`** for the new command; discarded upstream's lower `1.0.5`. - **README**: merged both — kept our `/codex:deep-review` + `/codex:implement` sections and added the upstream `/codex:transfer` section. - **`codex.mjs`**: auto-merged cleanly. Both our `resolveWorktreeWritableRoots` worktree logic and the new `importExternalAgentSession` / `withDirectAppServer` transfer code coexist; the transfer commit's removal of `experimentalRawEvents` carried through. ## Verification - `npm test` → **101/101 pass**. - New files present: `commands/transfer.md`, `scripts/lib/claude-session-transfer.mjs`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: stefanstokic-oai <[email protected]> Co-authored-by: Dominik Kundel <[email protected]>
robinmordasiewicz
added a commit
to f5-sales-demo/codex-plugin-cc
that referenced
this pull request
Jul 24, 2026
* Fix working-tree review crash on untracked directories (openai#166) * fix: skip untracked directories in review context * fix: skip broken untracked symlinks in reviews * fix: respect SHELL on Windows for Git Bash (openai#178) * Use app-server auth status for Codex readiness (openai#177) * Use app-server auth status for Codex readiness * fix: reuse existing app server for auth checks * fix: inherit process.env in app-server spawn when no explicit env is provided (openai#159) `SpawnedCodexAppServerClient.initialize()` passes `this.options.env` to `spawn()`, but no caller ever sets `env` in options. In Node.js, passing `undefined` for `env` gives the child process **no** environment variables, breaking any model provider that relies on env vars (e.g. DATABRICKS_TOKEN). Fall back to `process.env` when `this.options.env` is not set, matching the existing pattern in `broker-lifecycle.mjs` and `codex-companion.mjs`. Co-authored-by: Isaac Co-authored-by: Bhuvanesh Sridharan <[email protected]> * fix: gracefully handle unsupported thread/name/set on older Codex CLI (openai#126) * fix: gracefully handle unsupported thread/name/set on older Codex CLI Codex CLI v0.118.0 does not recognize the thread/name/set JSON-RPC method, causing startThread() to throw. Thread naming is cosmetic (for job log labels) and should not block thread creation. Wraps the call in try/catch so it fails silently on older CLI versions. Fixes openai#119 * refactor: only suppress unsupported-method errors for thread/name/set Address Codex review feedback: the bare catch swallowed all errors including auth, network, and server failures. Now only suppresses errors containing 'unknown variant' or 'unknown method' (the specific error older CLI versions return) and rethrows everything else. * codex: scope implicit resume-last selection to the current Claude session (openai#83) Co-authored-by: VOIDXAI <[email protected]> * codex: scope default cancel selection to the current Claude session (openai#84) Co-authored-by: VOIDXAI <[email protected]> * fix: avoid embedding large adversarial review diffs (openai#179) * fix: avoid embedding large adversarial review diffs * fix: preserve untracked content in lightweight review * address comments * fix: handle ENOBUFS type check in git diff sizing * bump: update plugin version to 1.0.3 (openai#180) * codex: honor --cwd when reporting session runtime (openai#35) * codex: honor --cwd when reporting session runtime * codex: keep session runtime lookup scoped to callers --------- Co-authored-by: VOIDXAI <[email protected]> * fix: declare model in codex-rescue agent frontmatter (openai#169) * fix: declare model in codex-rescue agent frontmatter The codex-rescue agent had no model field, leaving Claude Code to assign whatever default it chooses. As a thin forwarding wrapper that issues a single Bash call, this agent is well-suited to the haiku tier; declaring it explicitly ensures a predictable cost profile and tier guarantee. Co-Authored-By: Claude Code <[email protected]> * Update codex-rescue.md --------- Co-authored-by: claude[bot] <[email protected]> Co-authored-by: Claude Code <[email protected]> Co-authored-by: Dominik Kundel <[email protected]> * fix: correct invalid 'xhigh' reasoning effort in README (openai#99) Closes openai#77 Updated README to replace unsupported 'xhigh' value with 'high' to prevent configuration errors. * fix: quote \$ARGUMENTS in cancel, result, and status commands (openai#168) Unquoted \$ARGUMENTS in the ! shell commands allowed shell metacharacters in user-supplied job IDs to be expanded before Node received them (e.g., `task-123; malicious-cmd` would execute the trailing command). This is inconsistent with review.md and adversarial-review.md, which both wrap "$ARGUMENTS" in double quotes. Co-authored-by: claude[bot] <[email protected]> Co-authored-by: Claude Code <[email protected]> * fix: route /codex:rescue through the Agent tool to stop Skill recursion (openai#234) (openai#235) * fix: route /codex:rescue through the Agent tool to stop Skill recursion (openai#234) `/codex:rescue` previously combined two things that together caused a hang: - `context: fork` in the frontmatter, which spawns a `general-purpose` subagent for the command body. - Body prose "Route this request to the `codex:codex-rescue` subagent." without naming the transport. When the main agent called `Skill(codex:rescue)` programmatically, the fork resolved the ambiguous prose by trying `Skill(codex:codex-rescue)` (unknown skill) and then falling back to `Skill(codex:rescue)`, which re-entered this command and hung the session until the user cancelled. No Codex job was ever created. Naming the transport as `Agent(codex:codex-rescue)` alone is not enough: forked general-purpose subagents do not expose the `Agent` tool, so the forked runner cannot reach the subagent that way either. The minimal fix is therefore two coordinated changes: - Drop `context: fork` so the command body runs inline in the calling agent's context, where `Agent` is in scope. - Say explicitly "use the `Agent` tool with `subagent_type: "codex:codex-rescue"`", and call out that `Skill(codex:codex-rescue)` and `Skill(codex:rescue)` are not valid routing paths. Add `Agent` to `allowed-tools` so the call does not prompt for permission. Everything else in rescue.md (resume-candidate check, flag handling, background/foreground semantics, operating rules) is unchanged. The `codex:codex-rescue` subagent itself is unchanged. Tests pin the new allow-list, the explicit `subagent_type`, the ban on `Skill(codex:codex-rescue)`, and the absence of `context: fork`. The existing "run the `codex:codex-rescue` subagent in the background" assertion continues to hold since that sentence still reads correctly with the Agent-tool transport. Fixes openai#234 * test: match quoted result and cancel command arguments --------- Co-authored-by: Dominik Kundel <[email protected]> * fix: bump plugin version to 1.0.4 (openai#244) * feat: add Claude session transfer command (openai#374) * fix: bump plugin version to 1.0.5 (openai#398) * Remove shell expansion for git commands (openai#447) * Remove shell expansion for git commands * Version bump --------- Co-authored-by: Dominik Kundel <[email protected]> Co-authored-by: Bhuvanesh Sridharan <[email protected]> Co-authored-by: Bhuvanesh Sridharan <[email protected]> Co-authored-by: Trevin Chow <[email protected]> Co-authored-by: VOIDXAI <[email protected]> Co-authored-by: VOIDXAI <[email protected]> Co-authored-by: xiaolai <[email protected]> Co-authored-by: claude[bot] <[email protected]> Co-authored-by: Claude Code <[email protected]> Co-authored-by: Manav Agarwal <[email protected]> Co-authored-by: Friende <[email protected]> Co-authored-by: stefanstokic-oai <[email protected]> Co-authored-by: bryane-oai <[email protected]>
3 tasks done
Sjotie
added a commit
to Sjotie/codex-plugin-cc
that referenced
this pull request
Oct 11, 2026
…ead lock When a task worker dies mid-turn (SIGTERM/SIGKILL, host restart, SessionEnd cleanup) the shared broker's app-server kept running its turn with nobody reading it, and held ~/.codex/thread-writer-locks/<thread>.lock until the broker's 5-minute idle timeout. Any other app-server (direct fallback, `codex resume`, a fresh broker) was refused with "already has an active writer". Worse, a client that disconnected before its turn/start was answered left activeStreamSocket pointing at the closed socket forever: the broker stayed "busy", every later request fell back to a direct app-server and hit the lock, until the broker was killed by hand (Homebase openai#398). The broker now tracks running turns. When a stream's owner disappears it waits a grace period (CODEX_COMPANION_BROKER_ORPHAN_GRACE_MS, default 3s; real Codex can send turn/completed after the companion already inferred completion and left), interrupts the turns that are still running, and retires as soon as it is idle so the app-server exits and the lock is released. A late turn/start answer no longer claims the stream for a closed socket. Version 1.0.7-sjotie.13 so running brokers refresh. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sjotie
added a commit
to Sjotie/codex-plugin-cc
that referenced
this pull request
Oct 11, 2026
…e period Self-review of the orphaned-turn fix (openai#398): - interrupt only turns on the threads the departed client streamed on, and skip a thread another client has taken over; a late turn/start answer used to sweep up every running turn, including a connected client's - look the turn up when the grace period ends, not when the client leaves, so a turn/started that arrives after the answer is still caught - grace 10 s by default: measured, Codex sends turn/completed 330-480 ms after the final answer, past the companion's 250 ms inference, so a 3 s grace could interrupt a finished turn under load - turn/completed only clears the turn it names; interrupts are not awaited - retire after the grace period instead of after 0 ms, the same gap semantics as the regular idle timeout Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sjotie
added a commit
to Sjotie/codex-plugin-cc
that referenced
this pull request
Oct 11, 2026
Muse review of openai#398: - a turn/completed for a turn that is no longer the thread's current one (an orphan finishing after another client resumed the thread) no longer reaches or ends the new owner's stream; teardown matched the thread only - an orphan with an unknown turn id is only spared when a live client streams on or has a request in flight for that same thread, not for any request Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sjotie
added a commit
to Sjotie/codex-plugin-cc
that referenced
this pull request
Oct 11, 2026
Muse re-review of openai#398: the stale-completion check keyed on runningTurns, which lags until the new turn's turn/started is processed, and a detached review or compact on the thread never writes it. The stream now remembers the turn id from its turn/start or review/start answer; a turn/completed on its threads for another turn is dropped instead of ending it. thread/compact/start returns no turn and keeps thread-only matching. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
1.0.5package.json,package-lock.json,.claude-plugin/marketplace.json, andplugins/codex/.claude-plugin/plugin.jsonin syncTesting
npm run check-versionnpm test(90 tests)npm run build