Remove MCP stdio support and harden action authorization - #1503
Merged
Merged
Conversation
Retire stdio for every role and scope while retaining existing actions for explicit remote reconfiguration or deletion. Bind remote MCP authorization to trusted origins, current callers, and current policy. Harden legacy imports and migration, update remote-only configuration and UI, add regression coverage, and advance the application version to 0.261.029. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Make payload-only manifest equality explicit, use module-qualified settings access, and clarify global creation handling and preset assertions. Add regression coverage and advance the app version to 0.261.030. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Resolve the app version conflict at 0.261.030 while preserving Development's group filename XSS fix. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve the behavioral unhashability regression with unittest's callable exception assertion and verify its TypeError diagnostic. Document the follow-up and advance the app version to 0.261.031. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Resolve the version-only conflict by retaining 0.261.031 and preserve incoming governance, account-selection, CSV, and upload changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Outbound MCP should not launch local processes or rely on manifest-supplied identity and scope for authorization. This change makes MCP remote-only and applies consistent authorization throughout configuration, credential resolution, and execution.
settings.pluginsrecords for explicit reconfiguration or deletion. Preflight imports and bulk saves, retain IDs, and replace blanket migration cleanup with verified per-record outcomes and conflict handling.Breaking change: existing stdio actions remain visible but cannot execute. Owners must explicitly configure a supported remote endpoint or delete the action; there is no privileged stdio opt-in.
Linked issue
N/A - tracked as security advisory work; no issue-closing reference.
Release Notes & Latest Features
Is this visible to end users?
Is this admin-facing (Admin Settings, governance, deployment, config)?
Should this become a Latest Feature card?
Screenshot needed for the card?
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-onlydeployers/version.txtbumped, or not needed becausedeployers/was not changedApplication version:
0.261.028->0.261.031. No deployer changes.Testing / validation
test_mcp_server_presets.pypassed in normal and optimized Python (python -B -O -m pytest), with 161 tests and 266 subtests in each run, including fresh-process import checks.node --experimental-vm-modules --test .\functional_tests\test_mcp_stdio_removal_ui.js: 12 offline UI scenarios passed.python -B -m pytest -q --collect-only .\ui_tests\test_workspace_mcp_action_modal.py: five scenarios collected. Authenticated browser/Azure Playwright and live MCP/cloud validation were not run.Documentation
Updated MCP action, preset, preconfiguration, governance, and connection-test guidance, with retirement notices on historical guidance. Added
docs/explanation/fixes/MCP_STDIO_REMOVAL_AND_AUTHORIZATION_FIX.mdand regenerated the application surface inventory. Release notes are intentionally unchanged in this PR; upgrade guidance is included in the fix documentation.Security checklist
@swagger_route(security=get_auth_security())sanitize_settings_for_user()No new route URLs were added; security decorators were checked on all four changed route modules. User-settings responses expose safe legacy management views rather than process configuration or credentials.