tell Codex when to use the tools it already has - #40
Merged
Conversation
Asked to analyse Eigon, a Codex session with all four MCP tools connected made zero calls. Measured, not inferred: its echo-memory server process used 0.01s of CPU across 32 minutes, and read_event recorded no query at all. Nothing was broken. Codex had the tools, the server was healthy, and the write_episode description had just been fixed to fit inside its 2048-char window. What it did not have was any instruction, anywhere, about when to call them. Claude Code is told the same thing four ways - the SessionStart briefing, the UserPromptSubmit recall, the Stop gate, and SKILL.md. Codex has no hook system at all, so its only surface is AGENTS.md, and install wrote SKILL.md for Claude and a rule for Cursor while writing nothing Codex reads. adopt registered its MCP entry and stopped there, which is the "tools being available is not the same as an agent knowing to call them" gap that install's own docstring names for every other client. `echo-memory install --for codex` now writes an AGENTS.md section, merged into whatever the project already has and replaced in place on re-run rather than appended. --for all covers claude, cursor and codex together. Whether an instruction is enough for Codex is now the open question. In Claude Code an instruction lost to file-based memory that was structurally louder; in Codex there is no competing system, only silence, so this moves it from nothing to something. 420 tests pass, 5 added.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Asked to analyse Eigon, a Codex session with all four MCP tools connected made zero calls.
Measured, not inferred:
Nothing was broken
Codex had the tools. The server was healthy — I drove the full MCP handshake through
~/.codex/config.tomlverbatim and it served all four.agent_idwas correct. Thewrite_episodedescription had just been fixed to fit inside the 2048-char window with its example intact.What Codex did not have was any instruction, anywhere, about when to call them.
installwrote SKILL.md for Claude and a rule for Cursor, and nothing Codex reads.adoptregistered its MCP entry and stopped there — which is exactly the "the tools being available is not the same as an agent knowing to call them" gap thatinstall's own docstring names for every other client.The change
echo-memory install --for codexwrites an AGENTS.md section — merged into whatever the project already has, replaced in place on re-run rather than appended.--for allcovers claude, cursor and codex together.The honest caveat
This session's own evidence is that instructions lose to structure: the SessionStart briefing asked 16 times and was ignored 16 times, because Claude Code's file-based memory is a permanent system-prompt section and the briefing was one reminder.
Codex is not that case. There is no competing memory system — there was simply nothing. This moves it from nothing to something, and whether that is enough is now a testable question rather than an unexamined gap.
Testing
420 pass, 5 added: the section is written, existing project text survives, a re-run replaces rather than stacks, hand-edits after install survive a re-run, and
--for claudestill writes no AGENTS.md.