All notable changes to codex-delegate (the Claude Code skill at
WenyuChiou/codex-delegate). Format:
Keep a Changelog. Versioning:
SemVer.
This skill ships via the
WenyuChiou/ai-research-skills
marketplace; see that repo's CHANGELOG for the catalog-side history.
0.1.5 - 2026-10-25
- Separate PowerShell startup/module loading from the deterministic wrapper cases with a once-per-session, model-free probe capped at 60 seconds. The first PowerShell case exceeded its 15-second limit on two hosted Ubuntu runs; subsequent cases passed. Per-case limits and assertions stay unchanged, and probe errors fail rather than skip or retry. No wrapper/runtime change.
- Add command-double checks for the probe arguments, missing-shell behavior, and propagation of timeout, command and executable errors.
0.1.4 - 2026-10-25
This release collects the manifest 0.1.1–0.1.4 changes already merged through PR #13. The release-record update changes no wrapper behavior or defaults.
- Optional
--service-tier/-ServiceTier <value|default>passes-c service_tier="<value>"tocodex exec. The env varCODEX_DELEGATE_SERVICE_TIERsupplies a default when the flag is absent; the flag wins over the env var, anddefault(or neither set) passes nothing so~/.codex/config.tomlapplies. The value is lowercased and must be one word of lettersa-z(else exit 2 before Codex runs); the wrapper keeps no list of valid tiers and does not check tier support.-ServiceTieris declared last (after-Effort) so existing positional PowerShell calls keep their bindings. result.jsongainsservice_tier(immediately afterreasoning_effort: the value passed, ordefaultwhen none was passed).SKILL.mdandreferences/(model-selection.md,wrapper.md,output-contract.md,runtime-compatibility.md) document the new option. Tests intests/test_wrappers.pycover pass-through on both wrappers and both copies, plus precedence, invalid-value refusal (canonical copies), combined--effort+--service-tier, and ambient env isolation.
- Optional
--effort/-Effort <level|default>passes-c model_reasoning_effort=<level>tocodex exec. The env varCODEX_DELEGATE_EFFORTsupplies a default when the flag is absent, so delegation can run cheaper than the interactive~/.codex/config.tomlwithout editing it; the flag wins, anddefault(or neither set) passes nothing. The value is lowercased and must be one word of letters (else exit 2 before Codex runs); supported levels vary by model, so the wrapper keeps no list and Codex's HTTP 400 for an unsupported one surfaces asstatus: error.-Effortis declared last so existing positional PowerShell calls keep their bindings. result.jsongainsreasoning_effort(the value passed, ordefault).references/model-selection.mdno longer recommendsgpt-5.4/gpt-5.5: it explains both knobs, keeps the May A/B table as labelled historical evidence, and shows an effort A/B. Tests cover both wrappers and both copies, including precedence and invalid values.
references/runtime-compatibility.mdno longer says-mis always passed.
- The wrappers no longer hardcode
-m gpt-5.5: without--model/-Modelthey pass no-m, so Codex uses its own configured default model (the hardcoded default returned HTTP 400 on an account withoutgpt-5.5).model_used, the[MODEL_USED: …]log line and the.donesentinel reportcodex/defaultin that case; tests cover both wrappers and both copies.
- PowerShell Core uses the platform temporary directory and optional Windows codepage command; real Linux pwsh regression execution retains task prompts.
- Default PowerShell log/result paths use Join-Path; success, hard failure and quota fallback keep their result contracts inside the expected repo/.ai path.
Historical 0.1.1 patch note: the proposed manifest was 0.1.1 while stable
remained 0.1.0; that compatibility patch created no tag or release.
- Bundle canonical Bash/PowerShell wrappers inside the portable skill, with byte-parity tests and an isolated-skill stub execution test.
- Resolve accepted
--brief-filepaths before Codex applies-C, preserving caller-first lookup and preventing caller/codex working-root mismatch. - Correct marketplace script paths, model-config precedence, and current CLI guidance; record live-host and Windows verification limits.
scripts/run_codex.sh/scripts/run_codex.ps1: the quota-pattern lists didn't match codex-cli 0.144.x's new wording ("You've hit your usage limit… purchase more credits"), so live quota exhaustion (observed 2026-07-21) was misreported asstatus="error"instead ofstatus="fallback"and the.fallback_claudesentinel the supervising agent keys on was never written. Both wrappers also now gate the phrase scan on a non-zero exit code, so a successful run whose transcript merely mentions a quota-like phrase can no longer be reclassified as fallback and have its good diff discarded (the PS1 exception path passes-ExitCode 1— an exception is a failure). Four regression tests (bash + PowerShell, quota-maps-to-fallback + exit-0-stays-success), each proven red against the pre-fix wrappers.
-
references/handoff-protocol.md— bidirectional Fable↔Codex rounds via.ai/handoff/NNN_<slug>.to_codex.md/.to_fable.mdfiles (replaces clipboard transport); documents the harness-aware brief rule (do not re-teach discipline to repos carrying the fable-method-harness conditional pointer; Codex live probe 4/4 / 0/2 / 1/1), thecodex exec --jsonexact-usage telemetry pattern, the Codex-app one-fixed-sentence flow with its cwd precondition, and the honest gitignore mechanics (Codex's file-read tool does not honor .gitignore — a future gitignore-honoring CLI needs stdin piping per the F1 lesson). SKILL.md gains a Harness-aware delegation section; output-contract.md gains the usage-telemetry section. -
references/codex-prompt-blocks.md— composable XML prompt blocks (<verification_loop>,<grounding_rules>,<action_safety>, …), four task recipes, and a prompt anti-pattern table for judgment-sensitive briefs. Adapted from thegpt-5-4-promptingskill inopenai/codex-plugin-cc(Apache-2.0); reframed for this skill's single-shot brief-file workflow. -
tests/test_wrappers.py: regression coverage forfiles_changed— populated on a git repo (bash + PowerShell) and[]on a non-git repo.
SKILL.mdandreferences/task-template.mdnow point judgment-sensitive tasks (debugging, write-capable changes, review, research) at the new prompt-blocks reference; mechanical sweeps keep the flat template.references/patterns.md(Pattern 5) andreferences/review-checklist.md: added an explicit "do not auto-apply fixes from a review run — present findings and ask the user first" rule.references/model-selection.md: documented thesparkshorthand (--model gpt-5.3-codex-spark).scripts/run_codex.shandscripts/run_codex.ps1now auto-populate thefiles_changedfield ofresult.json. The wrapper takes agit status --porcelainsnapshot before and after the Codex run and diffs them, sofiles_changedattributes edits to that run only. It degrades to[]when the repo is not a git work tree, git is absent, or nothing changed. The wrapper's own log / sentinel /result.jsonfiles are written after the snapshot, so they never leak in.references/output-contract.md: documented whichresult.jsonfields the wrapper fills.tests_runandrisksare deliberately not auto-filled — the wrapper cannot see tests run inside Codex's sandbox, and risk is a judgment call; both stay Claude's to fill during acceptance.
references/patterns.md(Pattern 5): the review-mode code block used the deprecated--full-autoflag; replaced with--sandbox workspace-writeto matchSKILL.md,wrapper.md, andexamples.md.scripts/run_codex.ps1:Get-GitStatusSnapshotreturned@($null)(a 1-element array holding$null) on a clean repo instead of a true empty array; now filters$nullso the snapshot type is consistent. Latent fragility — downstream code absorbed it — fixed for robustness and parity withgemini-delegate-skill.
0.1.0 - 2026-05-15
The initial published version. Captures the skill state at commit
3683671
("docs(model-selection): flip framing to reflect gpt-5.5 default"),
the HEAD on master when this CHANGELOG was first added.
SKILL.md— Claude Code skill manifest. Triggers when Claude benefits from delegating token-heavy mechanical work (batch edits, scaffolding, refactors, test generation, plotting scripts) to the Codex CLI.references/— workflow patterns (gpt-5.5as default,gpt-5.4workaround for legacy callers,--full-auto-vs--s workspace-write, stdin-close requirement oncodex-cli >= 0.121.0,.fallback_claudequota mechanism, leaf role in the router/leaves multi-AI architecture, 5 paste-ready prompt templates).tests/—pytestcovering the wrapper helpers + cross-platform shell invocation..github/workflows/test.yml— runspyteston push + PR (Ubuntu / Windows × Python 3.10 / 3.11 / 3.12 matrix).LICENSE— MIT..claude-plugin/plugin.jsonso the root SKILL.md is picked up by theWenyuChiou/ai-research-skillsmarketplace.
The wrapper default model changed during 0.x development:
- 2026-05-15 (commit
70e6fdc): default flippedgpt-5.4 → gpt-5.5. The skill documents both: the default for new callers (gpt-5.5), and the-m gpt-5.4workaround for legacy contexts where the older model is required. - PR
#1 (merged
2026-05-09): documented the
-m gpt-5.4workaround, the stdin-close requirement, and the.fallback_claudequota mechanism. This is the upstream change that promoted the skill fromT2toT1in theai-research-skillscatalog.
- Tested by one graduate-student researcher; not corpus-scale validated.
- Codex CLI binary must be installed separately (
codex-cli >= 0.121.0); the skill documents the install path but does not install it for you. - Delegation is one-directional (Claude → Codex). Routing decisions
among multiple Codex sessions are handled by
research-hub-multi-aiin theai-research-skillscatalog, not by this skill alone.