Skip to content

Document claude-mem suppressOutput cache hotfix procedure #5

Description

@pitimon

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

  1. Confirm the active version/path:
codex plugin list
rg -n "claude-mem|claude-mem-local" ~/.codex/config.toml
  1. 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.

  1. Back up each file before editing.

  2. Remove legacy suppressOutput output fields from each bundled/minified runtime. Patterns observed in the broken bundle included:

,suppressOutput:!0
suppressOutput:!0,
"suppressOutput":true
  1. 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:

{"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:

  • 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

  • Add this process to the shared Codex/claude-mem operations notes or runbook.
  • Convert the hotfix into a small reusable script if this recurs on more than one workstation.
  • Track the upstream/fork fix so cache edits are no longer needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions