Skip to content

feat(plugins): surface hook capture setup and health in Codex and Claude #1117

Description

@phernandez

Why

PR #1070 moved Codex and Claude lifecycle-hook behavior into the released Basic Memory core. The host plugins now correctly contain only hook registration and zero-logic launchers.

The plugin READMEs document opt-in event capture and the bm hook status / flush commands, but the setup and status skills do not expose that functionality. A user can install the integration while still having no guided way to enable capture or see whether the local inbox is healthy.

Follow-up to #1070.

Current gaps

  • The Codex and Claude bm-setup skills do not ask about or persist captureEvents.
  • Setup does not offer the supported redactKeys and redactPaths privacy controls.
  • Setup smoke tests prove project routing, but do not run the core hook status command.
  • The Codex and Claude bm-status skills do not report capture enabled state, pending and processed envelopes, last flush, Basic Memory version, or uv availability.
  • Codex orientation/status still emphasizes legacy codex_session checkpoints while the new projector writes normalized session and tool_ledger notes.
  • Schema ownership is inconsistent: Claude seeds session, Codex seeds codex_session, and neither plugin currently owns a tool_ledger schema.

Proposed work

Setup

Update both host-native bm-setup skills to:

  • Ask whether to enable local lifecycle-event capture, defaulting to off.
  • Explain that capture is local, redacted, queued, and explicitly flushed.
  • Optionally collect redactKeys and redactPaths.
  • Write captureEvents as a real JSON boolean in the host-native configuration.
  • Run bm hook status with the appropriate harness and project directory as part of setup verification.

Status and orientation

Update both bm-status skills to invoke the core status command and report:

  • capture enabled or disabled
  • inbox path
  • pending and processed envelope counts
  • last successful flush
  • resolved project mapping
  • Basic Memory and uv versions

Update Codex bm-orient and bm-status recall so normalized session notes remain discoverable while legacy codex_session notes continue to work.

Schemas

Choose one canonical ownership model for normalized session and tool_ledger schemas. Prefer a shared source that both plugins seed or reference instead of maintaining divergent copies. Preserve backward compatibility for existing codex_session notes.

Verification

Add content-contract or package-validator tests proving:

  • both setup skills expose captureEvents and privacy controls
  • both status skills use the core hook status surface
  • Codex recall includes normalized and legacy checkpoint types
  • the plugins contain no duplicated hook runtime behavior

Run:

  • just package-check-codex
  • just package-check-claude-code
  • just package-check

Acceptance criteria

  • A fresh Codex or Claude setup can explicitly enable or leave event capture disabled.
  • Status makes a dormant, backlogged, or never-flushed hook installation visible.
  • Both hosts can find notes produced by the normalized projector.
  • Schema ownership is documented and tested without duplicating core hook logic in either plugin.
  • Existing users with legacy codex_session notes retain recall compatibility.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdocumentationImprovements or additions to documentationduplicateThis issue or pull request already existsenhancementNew feature or requestquestionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions