Skip to content

MCP tool schemas do not advertise --no-record for recordable commands #1310

Closed

Description

@thymikee

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

  1. 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.
  2. 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.

Context

Activity

  1. added
    bugSomething isn't working
    and removed on Jul 16, 2026
  2. thymikee commented on Jul 16, 2026

    @thymikee
    MemberAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions