Ruflo v3.32.1 fixes the Codex integration failures that appeared as hook JSON parse errors, incomplete MCP startup, and 30-second startup timeouts?especially on Windows.
- Release: https://github.com/ruvnet/ruflo/releases/tag/v3.32.1
- Pull request: ruvnet/ruflo#2698
- Full comparison: https://github.com/ruvnet/ruflo/compare/v3.30.2...v3.32.1
Typical startup output looked like this:
failed to parse plugin hooks config .../hooks/hooks.json:
expected value at line 1 column 1
MCP startup incomplete (failed: ruflo)
MCP client for `ruflo` timed out after 30 seconds
These messages had several independent causes:
- Some cached
hooks.jsonfiles began with a UTF-8 byte-order mark. The files looked normal in an editor, but strict JSON parsing failed at the first byte. - Windows npm shims need to be started through
cmd /c; launchingnpxas though it were a native executable is unreliable. - A cold
npxstartup can legitimately take longer than 30 seconds while npm resolves packages. ruflo init --codextreated an existing MCP server name as sufficient, even when its command or timeout was stale.- Windows shell invocation could strip quotes from JSON arguments used by cost-tracker memory commands.
On Windows, Ruflo now generates and repairs this Codex configuration:
[mcp_servers.ruflo]
command = "cmd"
args = ["/c", "npx", "-y", "ruflo@latest", "mcp", "start"]
startup_timeout_sec = 120On macOS and Linux, Ruflo uses npx directly. Existing user configuration is preserved: unrelated MCP servers stay untouched, inline TOML comments survive, and user timeouts greater than 120 seconds are retained.
Initialization is now idempotent and validates the full registration rather than checking only the server name. It can repair:
- old
claude-flowor Ruflo command forms; - missing
cmd /con Windows; - prerelease package references;
- startup timeouts below 120 seconds;
- already-initialized projects with stale Codex registration.
The CLI keeps the Codex adapter out of its cold-start dependency graph. When an explicit Codex initialization needs it, Ruflo fetches stable @claude-flow/codex@latest on demand.
The plugin audit now rejects empty JSON, malformed JSON, and UTF-8 BOMs. Cache versions were advanced for the affected core and cost-tracker plugins so corrected files replace stale cached copies.
Cost-tracker now invokes npm's JavaScript npx entry point on Windows. This preserves JSON arguments exactly and avoids shell injection and quote corruption. Memory retrieval uses the CLI's supported --value-only machine-readable interface.
The release lifecycle is now cross-platform and fail-closed:
- required generated packages are built before publication;
- helper manifests are signed and verified;
- release scripts default to npm's
latesttag; - no prerelease version or alpha tag is created or moved by this release.
| Package | Stable version |
|---|---|
ruflo |
3.32.1 |
claude-flow |
3.32.1 |
@claude-flow/cli |
3.32.1 |
@claude-flow/codex |
3.0.1 |
All four resolve through npm's latest tag. Historical alpha/v3alpha tags remain on their earlier versions and were not changed.
Ruflo requires Node.js 20 or newer.
npm install -g ruflo@3.32.1
ruflo init --codex
codex mcp listOr run it without a global installation:
npx -y ruflo@latest init --codexFor a full skill installation:
ruflo init --codex --fullExisting projects can safely rerun initialization; it repairs the Ruflo MCP block while preserving unrelated Codex configuration.
codex mcp list should show ruflo enabled with this Windows command:
cmd /c npx -y ruflo@latest mcp start
The config should include:
startup_timeout_sec = 120A direct server check is also available:
npx -y ruflo@latest mcp start --testThe merged release completed:
- 121 successful GitHub checks;
- 3 intentionally skipped checks;
- 0 failed checks;
- 196/196 Codex package tests;
- 67/67 Windows hook initialization smoke assertions;
- 18/18 targeted CLI initialization tests;
- strict parsing and zero-BOM validation for affected hook JSON;
- clean npm tarball lifecycle checks for CLI, umbrella, and Ruflo packages;
- a clean Windows
ruflo@3.32.1install andruflo init --codexrun; - a live MCP JSON-RPC
initializehandshake againstruflo@latest.
This is a patch release with no intentional breaking API change. No manual migration is required. Rerun ruflo init --codex to normalize a stale registration.
If Codex still shows an older cached plugin error after upgrading, restart Codex after initialization so it reloads the repaired plugin cache and MCP configuration.