- Removed package metadata from
hooks/hooks.jsonso current Codex builds can parse the bundled Stop hook config. This fixes startup warnings such asunknown field description, expected hooks.
- Packaged Codex Stop hooks no longer depend on shell expansion or Codex placeholder replacement for
PLUGIN_ROOT. The hook command now readsPLUGIN_ROOTinside Python, covering Windows runs where Codex executes the genericcommandfield through PowerShell.
- Packaged Codex Stop hooks now route through a small Python launcher instead of using Bash-only shell conditionals in the generic
commandfield. This keeps automatic thread capture working on Windows builds that executecommandinstead ofcommandWindows.
- Windows packaged Codex Stop hooks now use
%PLUGIN_ROOT%for the clean-install fallback path. This keeps automatic thread capture working when the old host-level fallback hook is absent and Codex runs hooks throughcmd.exe.
- Packaged Codex Stop hooks now prefer the stable host-level hook at
~/.codex/hooks/nowledge-mem-stop-save.pywhen it exists, then fall back to the packaged${PLUGIN_ROOT}script. This prevents an already-running Codex session from calling a removed plugin-cache path after the plugin is updated.
- Codex Stop hooks now use a Windows-specific launcher chain (
python, thenpy -3, thenpython3) instead of assumingpython3exists on Windows. - Codex Stop hook capture now invokes
nmem.CMDdirectly on native Windows, avoidingcmd.exe /s /cquoting that could make paths with spaces fail.
- Codex setup now enables
plugin_hooks = truein addition tohooks = true, matching current Codex's separate gate for lifecycle hooks shipped inside installed plugins. - Codex setup now explicitly keeps the Nowledge Mem packaged Stop hook enabled in Codex's
/hooksstate, covering users whose hook was left disabled after an upgrade or manual toggle. - Stop-hook capture now suppresses duplicate imports when Codex sees both the plugin-bundled hook and the host-level fallback hook for the same transcript state.
- The plugin-bundled Stop hook now quotes its
${PLUGIN_ROOT}script path, so plugin cache paths with spaces do not break automatic capture. - Setup guidance now explains that MCP is not required for automatic Codex thread capture; the Stop hook is the capture path, while MCP remains the stronger retrieval and memory-write path.
- Codex setup now also recognizes fully quoted TOML MCP table headers such as
["mcp_servers"."nowledge-mem"]as user-owned config. This prevents setup from appending a duplicate managed table when users already have a valid quoted Codex MCP block.
- Codex setup now also checks
nmem config mcp show --host codexand writes a managed authenticated MCP override whennmemhas saved client credentials. This keeps Codex MCP aligned with the same URL/API key used bynmem, instead of relying only on the bundled unauthenticated local fallback. - Setup now enables Codex's current
hooks = truefeature flag while preserving an existing legacycodex_hooks = trueentry when users already have one. - Troubleshooting now explains that
codex mcp login nowledge-memis not the right recovery path for Nowledge Mem; users should updatenmem, install the desktop CLI config, and rerun the plugin setup or paste the generated MCP block.
- Stop hooks now use Codex's supported bounded hook contract. Current stable Codex skips async hooks, so the packaged hook and host-level installer no longer emit
async: true. - Automatic capture now retries when the session file exists but
nmemhas not imported any messages yet, which covers the short transcript-flush window after a turn finishes. - Hook capture falls back to the legacy non-JSON
nmem t savecommand when an oldernmembuild does not support the global--jsonflag. - Host-level hook setup should be rerun after this update so existing
~/.codex/hooks.jsonentries are rewritten with the non-async hook contract.
- Automatic Codex thread capture: packaged a Stop hook that saves the real Codex transcript through
nmem t save --from codexafter each turn, with deduplication handled by Mem. - Current Codex compatibility: added
scripts/install_hooks.pyto install the same capture hook into~/.codex/hooks.jsonfor stable Codex builds that do not yet load plugin-bundled hooks.
- Codex hook capture now shells out to
nmeminstead of importingnmem_cliinternals, so local and remote Mem client configuration stays owned by the CLI.
- Declared the packaged
.mcp.jsonin the Codex plugin manifest so bundled MCP is loaded by the host instead of existing only as a repo file. - Updated marketplace guidance to use the current
codex plugin marketplace upgradecommand.
- Remote MCP setup: remote Codex users can now generate the exact
~/.codex/config.tomlMCP override withnmem config mcp show --host codex, using the same shared client credentials as directnmemcommands. - Credential boundary clarity: package guidance now says plainly that direct MCP clients do not read
~/.nowledge-mem/config.jsonautomatically; Codex needs a host-owned MCP block for remote Mem.
- Bundled local MCP: the Codex plugin now ships a local Nowledge Mem MCP server definition, so a normal same-machine setup only needs the plugin enabled. Codex config still wins when users define their own
mcp_servers.nowledge-mem, which keeps remote Mem and custom deployments explicit. - Setup clarity: install docs now separate the required plugin enablement from the optional MCP override used for remote Mem or custom local endpoints.
- Hybrid Codex setup: the package now explicitly recommends
plugin + MCPas the best modern Codex setup. The plugin package remains responsible for Working Memory guidance,nmemfallback, and realsave-thread; MCP is now documented as the stronger retrieval and memory-write path when available. - Copy-paste config: added a bundled
codex.config.example.tomlwith the combined plugin + MCP block for local and remote Mem setups. - Package guidance:
AGENTS.mdand the Codex skills now teach a hybrid operating model: prefer Nowledge Mem MCP tools for retrieval and memory writes when present, fall back tonmem, and keepnmem t save --from codexas the honest transcript-save path.
- Marketplace-first install path: home-level setup now uses
codex plugin marketplace add nowledge-co/communityas the primary flow. - Marketplace update path: update guidance now leads with
codex plugin marketplace upgrade nowledge-community, then falls back to adding the marketplace for first-time or legacy installs. - Legacy Codex compatibility: docs now include fallback commands for builds that still expose only
codex marketplace .... - Config key clarity: docs now distinguish
nowledge-mem@nowledge-community(managed marketplace) fromnowledge-mem@local(repo-pinned local source). - Install expectation clarity: docs now state the required
/pluginsinstall step before enablingnowledge-mem@nowledge-communityin config.
- Codex guidance: Working Memory now explicitly hands off to search on continuation-style tasks such as reviews, regressions, release prep, and integration debugging.
- Distillation policy: Codex guidance now tells the agent to do an explicit end-of-task review for durable memories instead of treating distillation as a vague optional behavior.
- Remote setup: docs now lead with
nmem config client ...instead of manual JSON editing.
- Install copy command: Codex install/update instructions now preserve hidden files such as
.codex-plugin/plugin.json. - Docs honesty: removed wording that implied Codex has lifecycle-hook automation comparable to hosts like Claude Code or OpenClaw.
- YAML frontmatter: quoted skill descriptions containing
:(colon-space) to preventserde_yamlparse failures that silently dropped skills from the Codex UI. - Skill rename:
read-working-memoryrenamed toworking-memory.
- Install path: corrected to
~/.codex/plugins/cache/local/nowledge-mem/local/to match Codex plugin store layout. - Config: added missing
[features] plugins = truegate required by Codex to enable the plugin system. - Repo-level install: replaced incorrect
cpto.agents/plugins/with propermarketplace.jsonapproach. - plugin.json: removed fields Codex does not parse (
author,homepage,repository,license,keywords); keptversionfor desktop app update detection. - Troubleshooting: added "plugin is not installed" entry for path-related failures.
- Five composable skills:
read-working-memory,search-memory,save-thread,distill-memory,status. - Plugin manifest with marketplace metadata.
- Project-level
AGENTS.mdfor stronger memory behavior in repos. - Migration path from
nowledge-mem-codex-prompts.