Repository navigation
Agents in Chromeria cannot discover Chromeria tools when schemas are deferred #46
Copy link
Copy link
Closed
Description
Outcome
Agents running in Chromeria know which Chromeria tools exist and when to use each one, even when the harness defers tool schemas and shows only tool names.
Evidence (2026-09-27)
- A Claude Code planner in Chromeria needed an implementer on a named model and effort. Claude Code listed all 33
t3-codetools by name only (deferred); their descriptions load only after a tool search. The planner never searched, so it missedprism_submit(the routing tool for full jobs) andspawn_thread(small work, or an explicit model and effort), and opened separate terminal sessions instead. - The tool descriptions already carry the right guidance:
spawn_threadandprism_submiteach point to the other. The guidance never reaches an agent that does not load them. - MCP server instructions are the channel that reaches the agent at session start even when tools are deferred. In the same session, treg, Notion, and Claude Docs sent instructions; Chromeria sent none.
apps/server/src/mcp/McpHttpServer.tsbuilds the server withMcpServer.layerHttp({ name: "T3 Code", version, path: "/mcp", protocols: [McpProtocol.v2025_06_18] }): no description, no instructions.- Effect
4.0.0-rc.115:McpSchemahas an optionalinstructionsfield on the initialize result, butMcpServer.layerHttphas no option for it and the server never sets it.
Options to evaluate
- Contribute an
instructionsoption to Effect'sMcpServer.layerHttpupstream (matches the fork Mission: offer generic extension points upstream), then set it inMcpHttpServer.ts. - Fork-side: set
instructionson the initialize result in Chromeria until Effect supports it. - Provider launch: Chromeria already controls how it launches each harness; it could add a short tool-orientation note there. Covers harnesses that ignore server instructions; check which ones do.
Open decision (user)
The text of the instructions. Reference styles seen: treg (when to reach for it, then the call order), Notion (one edge-case rule), Claude Docs (a full procedure). The user wants to decide the content before implementation.
Acceptance criteria
- A fresh Claude Code session in Chromeria receives the instructions at start, with all
t3-codetools still deferred. - Given a full job, such a session chooses
prism_submit; given small work or a named model and effort,spawn_thread, without being told the tool names. - Codex and OpenCode sessions in Chromeria are checked for whether they receive the instructions.
Non-goals
- Changing tool descriptions or tool behavior.
- AgentsMD wording (Keep shared fixes out of private preferences; prefer visible host child threads agentsmd#142 carries the host-neutral rule).
Blockers
The instruction text (user decision).
Proof
Fresh-session captures for each harness showing the instructions in context and the tool chosen.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
lukemaj commentedon Sep 27, 2026
Research: which harnesses show MCP server
instructionsto the model (2026-09-27)Method: a stdio MCP server whose
instructionscarry a nonce, run against each installed harness. Where possible, a fake model endpoint recorded the exact request; otherwise a live run asked the model to quote the instructions without tools, using a random passphrase it could not guess.tool_searchtool description, as the server's source linetool_searchcodex-mcp/src/rmcp_client.rs<mcp_instructions>session/system.tsmcp_instructions), but the model does not see theminitialize,tools/list), the model listednonce_tooland treg's tools, and answered NONE for every server's instructions, treg's includedbrain/<session>/mcp/<server>/instructions.mdbeside the tool schemas; the model reads it only if it opens the fileGrok shows no tool names, so without instructions an agent there cannot even see that
prism_submitexists.Effect
effect@4.0.0-rc.116(2026-09-18) andrc.117(2026-09-21) addinstructionstoMcpServer.layer,layerStdioandlayerHttp, wired into every protocol's initialize result (internal/mcpRuntime.ts). Nothing to contribute upstream. Upstream T3 pinsrc.115with a pnpm patch onMcpServer.js; it bumps Effect with Alchemy (rc.112 on 2026-09-07, rc.115 on 2026-09-17).Elon record
McpServer.jspatch plus lockfile conflicts on every rebase until upstream bumps. Antigravity-specific handling: not installed in Chromeria, and its file route exists.instructionsonMcpServer.layerHttpinMcpHttpServer.ts, with the text in a new fork file, once the fork absorbs upstream's Effect bump to rc.116 or later. It reaches the model once per session, travels with the tools, and needs no "when connected" hedge.RuntimeInstructions.ts, one line appending a fork constant), deleted in the same change that setsinstructions, so Claude never sees it twice. Cost while it lives: Cursor, Grok and Antigravity repeat the launch prompt every turn.The instruction text is still the user's decision.
Update after the Cursor run
Cursor over ACP does not show MCP server instructions to the model, and Antigravity only writes them to a file. MCP
instructionswould therefore reach four of six harnesses. The launch prompt reaches all six, so it stays the permanent channel and the planned move toMcpServer.layerHttp({ instructions })is dropped. Implemented in #53.lukemaj commentedon Sep 27, 2026
Merged in #53 as d11ac07.
lukemaj commentedon Oct 17, 2026
What: Close #46 as completed.
Why: Delivered in PR #53, reinforced in #67. The final record already states the merge: #46 (comment). The old tools were later replaced by native V2 guidance; no further implementation remains in this original discovery outcome.
So what: Preserve the historical record and continue only the explicitly named remaining work at its existing owner.
Requirements and who asked: User approved the audited closure/consolidation batch on 2026-10-17.
Deleted: Duplicate or superseded tracking only; preserve source history, unique acceptance and active work.
Bottleneck: Tracker state had not been reconciled with delivered code or the accepted successor.
Checked myself: Original audit, current issue body/state, related issue and PR states immediately before this action, and exact after-state.
Reconciliation target: #46; action=close-completed; force=false; branch-deletion=false; approval SHA-256=5e186401dfc44e86ca74716e176e53c2c277760d8484d11aa78b9fd22d2eb13b.