Context
On 2026-06-10, Codex startup/tool hooks failed on a workstation because the active claude-mem plugin cache still emitted the legacy suppressOutput field from bundled worker-service.cjs hook output. Codex rejects that field, so the symptom appeared as hook JSON/output failures, for example:
PreToolUse hook returned unsupported suppressOutput
PostToolUse hook returned unsupported suppressOutput
- Related startup symptoms such as invalid SessionStart hook JSON may indicate the same class of machine-wide hook/runtime problem and should be triaged from the active plugin runtime first.
This should be treated as a machine-wide active plugin-cache issue, not as an application repo bug.
What was learned
- Verify the active installed plugin path/version first with
codex plugin list.
- Also inspect
~/.codex/config.toml for the pinned claude-mem-local ref.
- A pinned tag does not preserve local hotfixes across plugin version changes or cache refreshes.
- Patching only marketplace snapshots is insufficient; patch the active installed cache and marketplace/temp copies together.
Hotfix procedure for another workstation
- Confirm the active version/path:
codex plugin list
rg -n "claude-mem|claude-mem-local" ~/.codex/config.toml
- Locate the active
worker-service.cjs files for the installed version. On the original workstation, the four paths were:
~/.codex/plugins/cache/claude-mem-local/claude-mem/<version>/scripts/worker-service.cjs
~/.codex/.tmp/marketplaces/claude-mem-local/plugin/scripts/worker-service.cjs
~/.claude/plugins/cache/thedotmack/claude-mem/<version>/scripts/worker-service.cjs
~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs
Adjust owner/name/version segments to match codex plugin list output on the target machine.
-
Back up each file before editing.
-
Remove legacy suppressOutput output fields from each bundled/minified runtime. Patterns observed in the broken bundle included:
,suppressOutput:!0
suppressOutput:!0,
"suppressOutput":true
- Smoke-test both hook paths through the matching version runner, using the target machine's actual paths:
# PreToolUse-style path
/path/to/bun-runner.js /path/to/worker-service.cjs hook codex file-context
# PostToolUse-style path
/path/to/bun-runner.js /path/to/worker-service.cjs hook codex observation
Both should print exactly:
If stdout still includes suppressOutput, Codex will continue rejecting the hook.
Durable fix recommendation
This cache edit is only a workstation hotfix. The durable fix should be one of:
- upstream
claude-mem release that no longer emits suppressOutput for Codex hooks, or
- maintained fork/tag with this patch applied and all machines pinned to that patched ref.
After any plugin cache refresh or version bump, repeat the verification because local cache edits can be overwritten.
Acceptance criteria
Context
On 2026-06-10, Codex startup/tool hooks failed on a workstation because the active
claude-memplugin cache still emitted the legacysuppressOutputfield from bundledworker-service.cjshook output. Codex rejects that field, so the symptom appeared as hook JSON/output failures, for example:PreToolUse hook returned unsupported suppressOutputPostToolUse hook returned unsupported suppressOutputThis should be treated as a machine-wide active plugin-cache issue, not as an application repo bug.
What was learned
codex plugin list.~/.codex/config.tomlfor the pinnedclaude-mem-localref.Hotfix procedure for another workstation
worker-service.cjsfiles for the installed version. On the original workstation, the four paths were:Adjust owner/name/version segments to match
codex plugin listoutput on the target machine.Back up each file before editing.
Remove legacy
suppressOutputoutput fields from each bundled/minified runtime. Patterns observed in the broken bundle included:Both should print exactly:
{"continue":true}If stdout still includes
suppressOutput, Codex will continue rejecting the hook.Durable fix recommendation
This cache edit is only a workstation hotfix. The durable fix should be one of:
claude-memrelease that no longer emitssuppressOutputfor Codex hooks, orAfter any plugin cache refresh or version bump, repeat the verification because local cache edits can be overwritten.
Acceptance criteria