Skip to content

SEP: Let validators require human confirmation, fail-closed - #45

Open
murthy-g wants to merge 3 commits into
modelcontextprotocol:mainfrom
murthy-g:sep-validator-confirmation
Open

murthy-g wants to merge 3 commits into
modelcontextprotocol:mainfrom
murthy-g:sep-validator-confirmation

Conversation

@murthy-g

@murthy-g murthy-g commented Oct 16, 2026 •

Copy link
Copy Markdown

Changes to docs/sep.md:

  • ValidationResult: new optional field confirmation (ConfirmationRequest: id, reason, callHash, expiresAt?, token?). Set together with valid: false and severity: "error".
  • New subsection "Requiring Confirmation" under Validator, defining the call binding { event, phase, target, payload } that callHash covers.
  • Invocation context: new optional target and confirmations (interceptor, id, callHash, token?, decidedAt, principal?).
  • Execution model summary: one bullet on confirmation.
  • Threat model: new entry "6. Confirmation Replay and Confusion".

No SDK changes.

Add an optional ValidationResult.confirmation field. A validator that
sets it also returns valid: false and severity: "error", so invokers
that don't implement confirmation block the request. Invokers that do
may ask a human, then re-invoke the validator with context.confirmations
bound to the payload's canonical hash and an expiry.
Copilot AI balanced review requested due to automatic review settings October 16, 2026 14:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Approval binding does not adequately distinguish destinations or protect against receiving-side mutations after confirmation.

2 open findings
What changed in this PR

Extends the interceptor specification with human confirmation requests that remain blocking for invokers without confirmation support.

Changes:

  • Adds confirmation request and response-context fields.
  • Defines approval, revalidation, and audit-mode behavior.
  • Documents confirmation binding and replay threats.
File Description
docs/​sep.md Specifies fail-closed human confirmation and security requirements.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/sep.md Resolved
Comment thread docs/sep.md Resolved
Hash a call binding of event, phase, context.target and payload, so the
same call to two servers has different hashes, and give each confirmation
request an id tied to its pending invocation. Invokers must re-hash the
payload actually sent or processed, after any later mutations, and block
if it changed since it was approved.
Copilot AI balanced review requested due to automatic review settings October 16, 2026 14:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The security-sensitive confirmation and replay-prevention protocol requires final human review.

0 open findings

2 resolved since last review

🧠 Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants