Skip to content

Releases: anhnguyen0905/codex-mcp

fix: v0.21.1 — harden the fast-path gate

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 25 Aug 04:40
- Analysis lane exempt from the Codex health gate (no Codex session needed)
- Mechanical scope trip-wire: extra changed files auto-escalate to full flow
- Small-change lane gets its own known-red test baseline
- Durable fastpath.log preserves session lineage and audit trail
- Measure input sizes (du -h) before applying the ~50MB data-tooling rule
- Guard tests lock the fast-path contract and data tooling rules

v0.20.0

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 15 Aug 04:39
chore(release): 0.20.0

v0.19.0 — context-persistence slices + goal-audit hardening

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 07 Aug 09:30

Added

  • Budgeted context-persistence slicesscripts/context-slice.mjs derives per-task
    .codex-flow/CONTEXT-T<n>.md (≤ 4000 tokens) and resume .codex-flow/RESUME.md (≤ 8000 tokens)
    views from PLAN.md and TASKS.md, preserves mandatory task text and statuses, and drops only whole
    lower-priority items with restorable PLAN.md pointers.
  • Git-anchored decision read-back — Decision-log blocks record Anchor: SHAs, and derived
    slices stamp them [fresh] or [verify]; missing or invalid anchors and git failures degrade to
    [verify] while full PLAN.md remains authoritative and standalone installs retain a direct-read
    fallback.
  • Durable requirements with criterion-level coverage.codex-flow/REQUIREMENTS.md records
    confirmed criteria verbatim as atomic R<n>.<m> IDs; append-only confirmed Deltas preserve
    mid-run changes and reset affected downstream approvals. scripts/requirements-coverage.mjs
    rejects uncited and unknown IDs at the Phase 3 gate, and final review reports every ID met/not-met
    with evidence.
  • Authoritative 10-key run state.codex-flow/STATE.md replaces file-existence inference with
    the current phase, three approval records, immutable runBaselineRef / known-red / dirty-baseline
    values, checkpoint choice, execution mode, and a separate resumeHead.
  • Session lineage and status-aware recovery — TASKS.md gains session metadata plus an append-only
    transition log; resume reconciles orphaned in-progress work. Wave scheduling uses done tasks to
    satisfy dependencies, waits on in-progress tasks, and blocks dependents of failed or unknown
    states.
  • Single-writer parallel coordination — one coordinator owns every .codex-flow/* write while
    workers return structured handoffs covering touched files, checks, findings, proposed decision-log
    data, and session IDs.
  • Stronger context slices — task slices always include a stamped contracts index, compact the
    known-red baseline, and rank decision blocks by explicit Applies to: scope before recency; the
    execution prompt carries the run-position recitation header.

v0.18.0 — exec-visualization: charts route to flint-chart

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 07 Aug 09:30

Added

  • New exec-visualization skill — routes chart/graph tasks to microsoft/flint-chart (rendering PNG/SVG) via a capability ladder (flint-chart MCP tools → npx flint-chart CLI → Python matplotlib as a last resort), instead of ad-hoc Python plotting. The token is wired into Phase 4 of the command (with a byte-identical .claude mirror) so chart-producing tasks load it, and the README documents optional flint-chart-mcp setup for the Codex CLI and Claude.

v0.17.0 — context-drift hardening for large projects

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 31 Jul 16:59

Added

  • New context-discipline skill — enforces orchestrator no-raw-read thresholds, phase-boundary compaction, and tiered additive-only AGENTS.md generation.
  • Handoff-grade Decision log schema — replaces one-line entries with four required fields: Decision, Why, Constraint for later tasks, and Contracts touched.
  • Command integration across Phases 2, 4, and 5 — loads context discipline throughout planning, execution, and review, including explicit sequential-vs-parallel boundary rules.
  • tests/flowDocs.test.ts structure guard — validates the command and skill documentation contracts and keeps the command mirror byte-identical.

v0.16.0 — 15 domain skills, 500-case + holdout suites, six matcher fixes

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 29 Jul 17:20

Highlights

  • 15 new domain skills ship with the plugin: accounting-bookkeeping, financial-audit, personal-finance, sme-operations, hr-recruiting, sales-pipeline-crm, customer-support-ops, ecommerce-operations, legal-contract-basics, training-curriculum-design, real-estate-analysis, ux-research-wireframing, manufacturing-ops-planning, warehouse-operations, json-data-wrangling. Ablation on the new 500-case suite: removing them drops the pass rate from 500/500 to 274/500 — these domains previously had zero retrievable coverage.
  • Six real matcher defects fixed in scripts/skill-match.mjs (each unit-tested): e-final plural stemming (cyclescycl never met cycle), stacked name-word credit across query terms, an over-strict relevance floor for ultra-diagnostic terms (Incoterms/AOV/NPS — now rare by both IDF and document frequency so index growth can't relax it), duplicate index names selected twice, a semantically wrong precision-guard rule, and an over-categorical audit heuristic.
  • Honest evaluation: reports now carry MRR, per-scope recall, expectNone false-positive rate, and the sha256 of the exact index measured; the index builder warns about duplicate skill names.
  • Frozen independent holdout (tests/fixtures/scenarios-holdout.json, authored by a separate agent that never saw the tuned suite): first measurement 100/100, Hit@1 99.0%, MRR 0.995.
  • Step-2 facet table gains 9 non-engineering facets so the runtime classifier has vocabulary for accounting/audit, personal finance, SME ops, HR, legal, sales/support, education, real estate, and logistics requests.

Measured results

Suite Pass Hit@1 MRR
500-case scope suite 500/500 91.6% 0.946
Original 100-case suite 100/100 85.9% 0.903
Frozen independent holdout 100/100 99.0% 0.995

Full dual-review reconciliation (Claude Fable 5 + independent Codex round, 12 findings verified) lives in the run-local .codex-flow/skill-selection-test/EVALUATION-FINAL.md.

Also in this release

  • .github/workflows/publish.yml: pushing a v* tag publishes to npm automatically (OIDC trusted publishing, --provenance).
  • npm: @anhnguyen0905/codex-mcp@0.16.0 is published; the plugin's .mcp.json pins it.

Full changelog: https://github.com/anhnguyen0905/codex-mcp/blob/main/CHANGELOG.md

v0.15.1 — plugin launches the published npm tarball

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 27 Jul 10:46

Patch release on top of v0.15.0. Fixes how the plugin starts its MCP server.

What changed

v0.15.0 fixed Failed to reconnect to Plugin:codex-flow:codex: -32000 by having .mcp.json install dependencies and compile on first start. That works, but it makes the very first connection depend on npm and the network at exactly the moment the client is waiting for a handshake — on a cold npm cache the dependency download, not the compile, dominates.

.mcp.json now runs the published tarball:

{ "command": "npx", "args": ["-y", "@anhnguyen0905/codex-mcp@0.15.1"] }

The npm package ships a prebuilt dist/, so nothing is compiled at install time. Measured against the real registry: an initialize handshake returns serverInfo 0.15.1 in 0.69s.

This is the first release published to npm since 0.3.2 — that registry lag is exactly why the npx form was dropped back in 0.10.0, and publishing again is what makes it viable now.

Pinned, not @latest

The version is pinned so a plugin release cannot drift onto a server build it was never tested against. Because pinning adds one more place a release can forget to bump, scripts/check-release-consistency.mjs now reads the pin out of .mcp.json and compares it against package.json; extractMcpPinnedVersion returns undefined for a non-pinned launcher so switching back to a local-build config does not fail the gate.

Upgrading

/plugin update codex-flow@codex-mcp

Then restart Claude Code and confirm with claude mcp list or codex_health.

Known red

Three Windows-only test failures (liveView, tailProgress) predate this release — they assert POSIX chmod modes, POSIX-legal path characters, and Darwin window-close behavior. Ubuntu and macOS are green on Node 20 and 22.

v0.15.0 — skill-selection retrieval 99/100, self-building plugin launcher

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 27 Jul 10:26

Fixed — fresh plugin installs failed to connect

Failed to reconnect to Plugin:codex-flow:codex: -32000 on a newly installed plugin. The bundled .mcp.json launched node dist/index.js, but the plugin ships as a git clone and dist/ is gitignored — so a fresh install had no build and no node_modules, and the server exited immediately on every start.

The launcher now cds to ${CLAUDE_PLUGIN_ROOT}, installs deps and builds when dist/index.js is missing, then execs the server. First start after install is slower; later starts are unchanged.

Already on an older install? Patch it once:

cd ~/.claude/plugins/cache/codex-mcp/codex-flow/<version>
npm install --no-audit --no-fund && npm run build

Added — skill-selection retrieval, 87/100 → 99/100

Two defects in the retrieval core, not ranking, were behind the misses. Multi-word terms never fell back to their constituent words ("competitor benchmark" scored exactly 0.0 against benchmark-methodology), and the relevance floor required descHits >= 2, discarding rare diagnostic single-word hits.

Metric Before After
100-case scope suite 87/100 99/100
precision@1 78/99 84/99
avg selection size 2.59 8.01
full test suite 671 700

selectSkills is now explicitly a shortlist producer; precision is restored downstream by a rank-1 guard and a prompt-level prune. The eval reports precision@1 and average selection size next to the pass rate, so a recall win paid for with noise cannot hide behind one number. An IDF-aware floor clause was removed as dominated after a two-factor ablation run twice with matching results.

Full detail in CHANGELOG.md.

Known red

Three Windows-only test failures (liveView, tailProgress) predate this release — they assert POSIX chmod modes, POSIX-legal path characters, and Darwin window-close behavior. Ubuntu and macOS are green on Node 20 and 22.

v0.13.0 — server auto-resume, reasoningEffort, 60-min timeout, parallel-by-default

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 24 Jul 17:39

Added

  • Bounded server-side auto-resumeretryPolicy + runRecovery resume the same Codex session after transient turn failures (≤2), timeouts (≤1), or missing completion marker (≤1), with 2s/8s backoff. Opt out via CODEX_MCP_AUTO_RESUME=0.
  • Recovery metadata — payloads report attempts and resumeReasons; codex_batch exposes them per task result.
  • Reasoning-effort controlreasoningEffort: minimal|low|medium|high|xhigh on execute/continue/review/batch, mapped to -c model_reasoning_effort.

Changed

  • Default execution timeout 30 → 60 minutes (per attempt; 2h cap unchanged).
  • Benign CLI notices (e.g. hook-trust banner) classify as warnings, no longer flipping completed runs to failed; live view/progress render them consistently.
  • Live log + progress notifications survive resume attempts (single sink teardown per logical run).
  • codex-flow: parallel-by-default when task-waves width > 1 (≤3 auto, >3 ask) with hard preconditions (clean tracked baseline, serial worktree creation, control-file copy, mandatory task commit before merge); file-disjoint slicing as the norm; reasoningEffort mapped per task complexity.

v0.12.0 — per-session report bundle with PIC attribution

Choose a tag to compare

@anhnguyen0905 anhnguyen0905 released this 23 Jul 17:05

Added

  • Per-session report bundles — every codex-flow run writes .codex-flow/reports/<YYYYMMDD-HHMMSS>/ with planning.md, allocation.md, tasks.md, cost.md, and SUMMARY.md, each carrying explicit PIC attribution (claude, codex, or both).
  • Self-contained scripts/session-cost.mjs — aggregates Codex cost from metrics.jsonl; requires --since, supports --until, --cwd, --log, and --json, and uses CODEX_MCP_PRICING when configured.
  • session-report plugin skill and command hooks — centralizes report templates and writes them at the Phase 0/2/3/5 gates.