You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
MCP tool schemas do not advertise --no-record for recordable commands #1310
Split out from the --no-record forwarding work (#1304 → #1305 → successor seam PR), as agreed: discoverability, not function.
What
Once forwarding moves to the shared seams (commonInputFromFlags + readCommonInput + commonToClientOptions), noRecord will work at runtime for every recordable command across CLI / Node client / MCP.
But readCommonInput is runtime-only: it is not part of a command's declared field metadata, and the MCP tool inputSchema is generated from that metadata. So MCP tool schemas will still advertise noRecord only for the commands that declare it as a field — open (management/app.ts:51), get/is/find (interaction/metadata.ts:179), snapshot (capture/snapshot.ts:34).
Net: an MCP client can pass noRecord to press and it will be honoured, but nothing in the advertised schema tells it that it may. For an agent-facing surface, an undiscoverable flag is close to a non-existent one — which is the same class of problem as the original silent drop, one layer up.
Why not bundled into the seam PR
Bundling schema-surface changes into a forwarding fix blurs both, and the schema change is a wider review surface (it touches every recordable command's advertised tool contract). The runtime fix is the urgent half.
Options
Declare a shared record-control field group on every recordable command's metadata — most explicit, but re-introduces per-command declarations, i.e. exactly the hand-listing the seam work is removing.
Teach schema generation to append the common runtime fields (noRecord) to recordable commands' inputSchema, driven by the same classification the completeness gate will introduce.
(2) composes with the planned recordsSessionAction descriptor classification + completeness gate and keeps one source of truth, so it is likely the right shape — the gate says which commands record, and the schema generator reads that rather than a second hand-list.
Triage: confirmed agent-facing schema bug. Runtime forwarding and MCP discoverability are separate contracts; a tool accepting noRecord through shared input handling is insufficient when its generated schema omits the field. The proposed descriptor-driven option is the correct architecture: add an explicit recordsSessionAction (or equivalently named) command trait at the command descriptor source of truth, completeness-test every command, use it both for runtime forwarding eligibility and MCP schema projection, and add schema tests covering representative mutation, observation, and non-recording commands. Remove any parallel hand-maintained command list. Labeled bug + ready-for-agent.
Activity
thymikee commentedon Jul 16, 2026
Triage: confirmed agent-facing schema bug. Runtime forwarding and MCP discoverability are separate contracts; a tool accepting
noRecordthrough shared input handling is insufficient when its generated schema omits the field. The proposed descriptor-driven option is the correct architecture: add an explicitrecordsSessionAction(or equivalently named) command trait at the command descriptor source of truth, completeness-test every command, use it both for runtime forwarding eligibility and MCP schema projection, and add schema tests covering representative mutation, observation, and non-recording commands. Remove any parallel hand-maintained command list. Labeledbug+ready-for-agent.