Skip to content

Scope of consequentialHint for high-risk read tools #331

Description

@beaufortfrancois

The current WebMCP spec defines consequentialHint (introduced in #217) as:

"If true, indicates that executing the tool will result in consequential actions that are significant, real-world, or non-reversible, ex: booking a flight, transferring money."

This definition focuses on mutative operations (write actions) but leaves high-risk read-only operations ambiguous.

Many tools do not alter state but retrieve highly sensitive, restricted, or regulated user data. Letting an agent execute these silently without user confirmation introduces severe privacy and security risks.

Tool Example Risk Category Potential Impact
readUserAddress Location Privacy Exposes the user's physical, real-world location.
readBankAccountBalance Financial Privacy Reveals net worth, enabling targeted financial exploits.
readApiKey Security Credentials Exposes secrets that grant permanent external write access.
readMedicalHistory Regulated Data Exposes highly sensitive health records (e.g., HIPAA).

I'd be in favor of updating consequentialHint to explicitly include high-risk data exposure with something like:

*"If true, indicates that executing the tool or disclosing its results will lead to significant, real-world, non-reversible, or high-privacy-risk consequences (e.g., booking a flight, transferring money, or exposing credentials and medical records)."

OR we could also introduce a new hint (e.g., sensitiveDataHint) to keep consequentialHint strictly reserved for side-effect-producing mutations, and introduce a separate, parallel hint specifically for data access risks. This would allows agents to differentiate their consent UI (e.g., "This tool will execute an action" vs. "This tool will read sensitive information").

@johannhof

Activity

  1. domfarolino commented on Sep 30, 2026

    @domfarolino
    Collaborator

    Intuitively, it feels like a separate hint here would be best instead of overloading consequentialHint, but I'd like to hear from model harness implementers to be sure. @nmccormack-oai, does ChatGPT distinguish these two concepts at all, and would it benefit from this signal from developers?

    /cc @jpagnucco

  2. jpagnucco commented on Sep 30, 2026

    @jpagnucco

    I think I'd prefer a separate hint as well. I think the read only use case might be covered by consequential + readOnly but that seems a bit cumbersome.

  3. victorhuangwq commented on Sep 30, 2026

    @victorhuangwq
    Contributor

    I agree it would be helpful for @nmccormack-oai or other model harness or agent implementors to weigh in on whether this additional hint would be useful, or if there’s indications of explicit demand from web developers.

    When we considered adding consequentialHint after readOnlyHint, there were already strong recommendations from agent harnesses to use destructiveHint and readOnlyHint for MCP tools, so adding it felt well motivated.

    My immediate intuition is that sensitiveHint may make more sense in the WebMCP context, where exposure to sensitive data seems much more likely. My preference would also be to keep it separate from consequentialHint.

  4. Kulikowski commented on Oct 1, 2026

    @Kulikowski

    @victorhuangwq +1, I think separate hint, like sensitiveHint would be more useful than adding more to the consequentialHint:

    1. agent could show proper type of user-facing message asking for permission to run the tool - distinguish between "Agent will DO something consequential" from "Agent will READ something sensitive"
    2. after calling such tools agent harness could keep outputs of such tools from logs, long-term memory etc

    sensitiveHint proposed wording:

    If true, indicates that the tool's output contains sensitive user data, such as credentials, financial or health records, government IDs, precise location, or private messages.

  5. johannhof commented on Oct 2, 2026

    @johannhof
    Contributor

    Yeah, a separate hint makes much more sense. It's definitely an interesting idea!

  6. seunghan91 commented on Oct 3, 2026

    @seunghan91

    Adding a concrete developer use case in support of @Kulikowski's suggestion. I'm implementing WebMCP tools for a notes/tasks app, and separately working on a prototype in-page agent.

    The app's search_notes returns note titles and short content previews; get_calendar_events returns event titles and scheduling metadata. Both are annotated readOnlyHint: true and untrustedContentHint: true. Even these limited outputs can contain private information, and there's currently no annotation that says so. I would put a separate sensitivity hint on exactly these tools.

    In the prototype agent's default mode, a tool needs confirmation when readOnlyHint !== true, consequentialHint === true, or destructiveHint === true. With their current annotations, these two read tools run without that step. That's our prototype's policy, not a claim about how other harnesses read readOnlyHint.

    As @jpagnucco noted, readOnlyHint + consequentialHint could cover the confirmation case, and our rule would already prompt for that combination. My reason for preferring a separate hint is that it expresses output sensitivity independently of mutation, so the confirmation UI can say "will read private data" rather than "will do something consequential," along the lines @Kulikowski described.

    This is one concrete data point on developer demand and intended harness use, not evidence of broader adoption.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions