sessions: mcp protocol negotiation, gateway output channel, and customization ui improvements#298852
Merged
joshspicer merged 3 commits intomainfrom Mar 3, 2026
Merged
sessions: mcp protocol negotiation, gateway output channel, and customization ui improvements#298852joshspicer merged 3 commits intomainfrom
joshspicer merged 3 commits intomainfrom
Conversation
The Logs/Output panel was previously gated behind dev mode only. Make it always visible so MCP gateway negotiation logs and other output channels are accessible for debugging.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR improves the Sessions window’s MCP integration and AI Customizations UX, while updating the MCP gateway to negotiate protocol versions with clients and surfacing gateway/debug diagnostics via dedicated Output channels.
Changes:
- Add MCP protocol negotiation in the gateway/session layer and cover scenarios with new unit tests.
- Add sessions-specific MCP servers surfacing (management editor section, sidebar toolbar/link items, overview counts) and introduce a sessions override setting.
- Polish/customize Customizations & MCP list widgets (layout/scrolling tweaks, built-in MCP grouping, simplified badges) and add sessions-only “Customizations Debug” output logging.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/contrib/chat/browser/chat.contribution.ts | Adds chat.experimentalSessionsWindowOverride setting definition. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css | Adjusts scrolling behavior and tightens MCP/customizations list styling. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.ts | Adds built-in MCP grouping, sessions-specific status hiding, and layout remeasure logic. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts | Removes the debug toggle command constant. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.ts | Removes the “Customizations Debug” command registration. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts | Removes SCM/git status + storage badge UI, adjusts layout sizing/remeasure. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.ts | Adds mcpServerIcon. |
| src/vs/sessions/sessions.desktop.main.ts | Registers sessions-only customizations debug log contribution. |
| src/vs/sessions/contrib/sessions/browser/customizationsToolbar.contribution.ts | Re-enables MCP Servers in the toolbar and simplifies counts to a single total. |
| src/vs/sessions/contrib/sessions/browser/customizationCounts.ts | Updates hook counting to count per-hook (when IFileService is provided). |
| src/vs/sessions/contrib/logs/browser/logs.contribution.ts | Always enables the logs/output container in sessions window. |
| src/vs/sessions/contrib/configuration/browser/configuration.contribution.ts | Overrides chat.experimentalSessionsWindowOverride to true for sessions defaults. |
| src/vs/sessions/contrib/chat/browser/customizationsDebugLog.contribution.ts | Adds sessions-only Output logger that snapshots customizations + MCP state. |
| src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts | Re-enables MCP Servers section in sessions management sections list. |
| src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.ts | Adds an MCP Servers link item that navigates to the management editor section. |
| src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationOverviewView.ts | Adds MCP Servers section to overview and populates count. |
| src/vs/platform/mcp/test/node/mcpGatewaySession.test.ts | Adds negotiation test coverage for supported/unsupported client protocol versions. |
| src/vs/platform/mcp/node/mcpGatewaySession.ts | Implements protocol version negotiation and logs negotiated details. |
| src/vs/platform/mcp/node/mcpGatewayService.ts | Switches to ILoggerService and creates a dedicated “MCP Gateway” Output logger. |
…mizations UI improvements MCP Gateway Protocol Negotiation: - Gateway now negotiates protocol version with clients instead of hardcoding '2025-11-25', fixing compatibility with older SDK versions - Adds MCP_SUPPORTED_PROTOCOL_VERSIONS covering all known MCP spec versions - Responds with client's requested version if supported, falls back to latest - Logs client info and negotiated version for diagnostics - 7 new unit tests covering all negotiation scenarios MCP Gateway Output Channel: - Dedicated 'MCP Gateway' output channel via ILoggerService (logLevel: always) - Gateway service and sessions now use ILogger instead of ILogService - All gateway lifecycle events visible in Output panel Sessions Window MCP Integration: - Re-enable MCP Servers section in sessions management editor - Add MCP Servers to sessions sidebar toolbar with total count - Add MCP Servers link item in sessions tree view (navigates to editor) - Add MCP Servers to sessions overview view with count from IMcpService - Add chat.experimentalSessionsWindowOverride setting for sessions-specific extension behavior (overridden to true in sessions defaults) MCP List Widget Polish: - Add 'Built-in' group showing extension-provided servers (e.g. GitHub MCP) - Remove per-item server icons, aligning with other customization sections - Hide running/stopped status indicators in sessions window - Match item height (36px), padding, and font styling to other sections - Hide empty description lines to tighten layout Customizations UI Cleanup: - Remove git status badges and SCM service dependency from list widget - Remove per-item storage badge icons (workspace/user/extension) - Remove 'Developer: Customizations Debug' command (replaced by output channel) - Simplify sidebar counts to single total number (no category icon badges) - Remove group separator borders, use spacing only - Fix list container overflow (hidden -> auto) and add min-height: 0 for scroll - Fix layout() fallback from 100px to 0px with requestAnimationFrame re-measure Customizations Debug Output Channel: - New sessions-only 'Customizations Debug' output channel - Streams snapshot on every change: summary table + search paths + file details - Includes MCP server listing with connection states Hooks Count Fix: - Toolbar hook counts now match management editor (per-hook, not per-file) - Uses IFileService to parse hook JSON files and count individual hooks The MCP gateway now negotiates the protocol version with connecting clients instead of hardcoding 2025-11-25. This fixes compatibility with clients using older @modelcontextprotocol/sdk versions that do not support the latest protocol version.
9b9156c to
b24d559
Compare
- Fix stale MCP count in overview: use autorun to watch mcpService.servers - Guard rAF layout callbacks against widget disposal - Make built-in MCP items non-interactive (no pointer cursor, no hover) - Fix _logSnapshot dropping events: re-run if dirty during snapshot - Add CSS for mcp-builtin-readonly items
osortega
approved these changes
Mar 3, 2026
OS-ruineves
added a commit
to OutSystems/vscode
that referenced
this pull request
Apr 13, 2026
* Fix Guardian errors in sanity tests stage (microsoft#298662) * fix(json.schemaDownload.trustedDomains): avoid always update json.sch… (microsoft#298423) fix(json.schemaDownload.trustedDomains): avoid always update json.schemaDownload.trustedDomains Signed-off-by: loongtao.zhang <loongtao.zhang@outlook.com> * style(quick-input): replace fixed border-radius with variable for consistency * style(suggest-widget): replace fixed border-radius with variable for consistency * style(quick-input): replace fixed border-radius with variable for consistency * feat: add support for Copilot user agents and related functionality (microsoft#298610) * feat: add support for Copilot user agents and related functionality * Update comments * Updates * Sessions - fix tree rendering in the changes view (microsoft#298663) * style(chat-input): replace fixed border-radius with variable for consistency * style(notifications): update border and border-radius for consistency across notification elements * style(menu): replace fixed border-radius with CSS variable for consistency style(find-widget): unify border-radius with CSS variable for consistency style(inline-chat-gutter-menu): update border-radius to use CSS variable for consistency * style(dialog): replace fixed border-radius with CSS variable for consistency * style(dialog): remove fixed border-radius for consistency with theme variables * style(hover): update border-radius to use theme variable for consistency * style(keybindings): restore border-radius for defineKeybindingWidget consistency * style(dropdown, debug-toolbar): update border-radius to use theme variable for consistency * style(action-widget): remove border-radius for consistency with theme variables * style(parameter-hints): update border-radius to use theme variable for consistency * style(notebook): update border-radius to use theme variable for consistency * style(notebook): update action-item border-radius for consistency with theme variable * style(notebook): add border-radius to cell title toolbar for consistency with theme variable * style(inline-chat): update border-radius to use theme variable for consistency * style(titlebar): update border-radius to use theme variable for consistency * style(dialog): update border-radius for modal block shadow to use theme variable * style(debug-hover): add border-radius to debug hover widget for consistency with theme variable * Fix macOS sidebar traffic light spacer rendering with custom titlebar (microsoft#298669) * Add more logging to sanity test runner (microsoft#298664) * style(chat): remove unnecessary border-radius from chat editor and notifications for consistency * style(dropdown): remove unnecessary whitespace for cleaner code * style(defineKeybindingWidget): remove border-radius for consistency with theme styles * style(notifications): update border-radius for last notification item to use theme variable * style(notifications): update box-shadow to use theme variable for consistency * fix(terminal): update background color handling in terminal editor * make sure action are disabled when cloud is picked * sessions - allow to run sub-app when using cli (microsoft#298685) * sessions - allow to run sub-app when using cli * ccr * sessions - resolve items again when trust changes (microsoft#298687) * fix continuous auth dialogs in cloud session (microsoft#298689) * make it more stable (microsoft#298691) * Fix typos in user-facing localized strings (microsoft#297892) - Fix "Overriden" -> "Overridden" in terminal cwd picker description - Fix "requried" -> "required" in notebook renderer messaging description Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * Sessions - resize body when collapse/expand the tree (microsoft#298698) * update hover and background colors in quick input for dark and light themes * update breadcrumbPicker and notificationCenterHeader background colors for improved theme consistency * update quick input title background color for improved theme aesthetics * remove background color mixing for suggest widget and title bar hover effect * 💄 * chat - confirm from toast should not force reveal session (microsoft#298693) * chat - confirm from toast should not force reveal session * ccr * sessions - when applying changes, offer action to open (microsoft#298718) * feat - add open folder action to applyToParentRepo * feat - add query parameters to `open` action * remove test * Enhance sync functionality with loading state and improved UI feedback (microsoft#298699) * include debug extension host env in shell env (microsoft#241078) (microsoft#298276) * include debug extension host env in shell env (microsoft#241078) * Use terminalEnvironment.mergeEnvironments for platform-specific considerations Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Clone the shell env to avoid mutation of a shared object --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add chat tip for /fork conversation feature (microsoft#298084) * Align `js/ts.suggest.completeJSDocs` with other names Fixes microsoft#298734 Aligning this to use the id `js/ts.suggest.jsdoc.enabled` because we have another setting in the `#js/ts.suggest.jsdoc.*` scope * fix setting repo uri for new session (microsoft#298735) * Simplify chat input toolbar responsive behavior (microsoft#298467) * Reduce chat input label hide threshold from 650 to 400 * Collapse chat input picker buttons to 22x22 icons at narrow widths When the chat input is narrow (<250px), hide chevrons on mode, session target, model, and workspace pickers. Mode and session target pickers collapse to centered 22x22 icon-only buttons matching the add-context button size. Update actionMinWidth to 22 and toolbar gap to 4px. * Simplify chat input toolbar responsive behavior * Apply initial hideChevrons state in render() * fix setting active session for new session (microsoft#298742) * Bump minor version to 1.111 (microsoft#298150) * weight and maintain specific order for foundational tips (microsoft#298745) * when in question carousel, do not allow delete to undo requests (microsoft#298752) fixes microsoft#294109 * Fix chat terminal flicker during streaming (microsoft#298598) * chat: add plugin details editor with reactive action updates (microsoft#298370) * chat: add plugin details editor with reactive action updates - Implements a new AgentPluginEditor details pane that displays plugin information, readme, and action buttons for both installed plugins and marketplace items - Adds reactive action button updates: when a plugin is enabled/disabled, installed/uninstalled, buttons update in real-time without re-rendering the entire editor - Makes the marketplace name a clickable link to the GitHub repository (when githubRepo is available) - Adds proper CSS classes to action buttons (install, enable, disable, uninstall) so they render correctly in the header - Handles state transitions: marketplace items automatically become installed items when installed, and vice versa - Supports readme rendering from local files, remote repositories, and GitHub blob URLs (converting to raw.githubusercontent.com for proper fetching) Fixes microsoft#297246 (Commit message generated by Copilot) * pr comments * test * merge * fix circular dep * chore: bump distro (microsoft#298761) lm: fix mcpServerDefinitions proposal validation for packed extensions Updates distro hash to include a fix for mcpServerDefinitions API proposal validation when extensions are installed as VSIX. Extensions can now properly declare and use vscode.lm.startMcpGateway without validation errors. - Fixes validation logic for packed extension API proposal declarations - Enables mcpServerDefinitions to be properly recognized in extension package.json enabledApiProposals - Resolves failure when calling vscode.lm.startMcpGateway on installed VSIX extensions Fixes microsoft#298643 (Commit message generated by Copilot) * Dialog Notification when MCP server start fails in sandbox mode. (microsoft#297797) * changes for showing start up errors in a dialog * changes for showing start up errors in a dialog * changes for showing start up errors in a dialog * changes for showing start up errors in a dialog * changes * changes * changes * migrating to event from taillog * changes for runtime errors * refactoring changes * refactoring changes * refactoring changes * changes * replace `/create-instructions` tip with `/init` one (microsoft#298764) fix microsoft#298759 * Port github extension to use esbuild Had to make same fixes as with microsoft#296355. We can't pull in const enums from a d.ts file like this * hide tip widget for session if a tip is dismissed or actioned (microsoft#298766) fixes microsoft#297682 * chat: make sendChatRequest extensionIdentifier parameter optional (microsoft#298767) * chat: make sendChatRequest extensionIdentifier parameter optional Makes the 'from' parameter optional (ExtensionIdentifier | undefined) in the sendChatRequest method chain across ILanguageModelsService, RPC protocol, and implementations. This allows internal VS Code calls to pass undefined instead of instantiating invalid ExtensionIdentifier('core') identifiers. - Updates ILanguageModelsService.sendChatRequest signature - Updates ILanguageModelChatProvider.sendChatRequest signature - Updates ExtHostLanguageModelsShape protocol - Updates ExtHostLanguageModels \ implementation - Removes new ExtensionIdentifier('core') from 5 internal callers - Passes undefined as requestInitiator when from is absent - Bumps vscode.proposed.chatProvider API version to 5 - Updates test mocks to accept optional from parameter Refs microsoft#290436 (Commit message generated by Copilot) * keep api as old version for now * Update src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions - revert too annoying toasts display (microsoft#298771) * removes dependency * sessions - restore sessions window when all windows closed (microsoft#298793) * Port github-authentication extension to use esbuild * Update extensions/github-authentication/esbuild.browser.mts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions - wording (microsoft#298799) * fix - update notification messages to use 'session' * fix - update toast action label to 'Open Session' * retain input in question carousel (microsoft#298795) * retain input state for chat questions * better approach * chat: deduplicate global auto-approve warning across windows (microsoft#298787) * chat: deduplicate global auto-approve warning across windows Add CancellationToken support to IDialogService.prompt() and implement cross-window deduplication for the global auto-approve confirmation dialog. When \chat.tools.global.autoApprove\ is enabled, the opt-in warning previously appeared in every window because each window independently checked the APPLICATION-scoped storage flag and showed the dialog without coordination. Changes: - Add <token?: CancellationToken> to IBaseDialogOptions, allowing dialogs to be programmatically dismissed via cancellation - Update BrowserDialogHandler.doShow() to register token cancellation and dispose the dialog when the token fires - In LanguageModelToolsService._checkGlobalAutoApprove(), use CancellationTokenSource + storageService.onDidChangeValue listener to detect when another window stores the opt-in flag and cancel the dialog - Apply the same pattern to the /autoApprove slash command handler - Within-window deduplication: pending promise cached in _pendingGlobalAutoApproveCheck prevents duplicate dialogs from multiple simultaneous tool invocations After opt-in is stored by any window, other windows detect the storage change via the token listener and cancel their dialogs. The prompt then resolves as if approved, avoiding duplicate user interaction. Fixes microsoft#292150 (Commit message generated by Copilot) * pr comments * Add Cmd+W keybinding for new chat session in session management (microsoft#298807) * Add IsNewChatSessionContext to sessions management service import and register Cmd+W keybinding for new session * Add secondary keybinding for opening new session with Cmd+W in non-empty state * Enhance Cmd+W keybinding condition to require non-empty active editor group * Fix Cmd+W keybinding condition to check for visible editors instead of empty editor group * [Terminal Sandbox]Wrapping the command in single quotes and escaping it to prevent any shell injection issues. (microsoft#298790) * wrapping the command in single quotes and escaping it to prevent any shell injection issues * Update src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * only show tip widget if there's exactly one chat session in the foreground (microsoft#298772) fixes microsoft#297759 * Avoid treating .copilot/agents as target of GithubCopiilot (microsoft#298706) * Avoid treating .copilot/agents as target of GithubCopiilot * Remove test * chat: reduce TextModel creation during chat editing replay (microsoft#298820) Replaces full TextModel instantiation with lightweight ITextBuffer (PieceTree) in _applyTextEditsToContent to reduce memory overhead and initialization cost when replaying text edits. Now maintains a single buffer across consecutive edit operations instead of creating and disposing a model for each edit. Additionally caches finalized diff stats in _finalizedDiffCache to avoid redundant model creation and diff computation when code block pills scroll back into view. When the observable chain is rebuilt for a pill that was previously visible, a constObservable returns the cached IEditSessionEntryDiff instead of rebuilding the entire model reference chain and computing the diff again. - Replace TextModel with createTextBuffer/ITextBuffer in replay loop - Remove unused IInstantiationService and IModelService dependencies - Add _finalizedDiffCache for caching computed diff stats - Return constObservable for cached finalized diffs - Remove Date.now() temp URI generation and model creation overhead Fixes microsoft#290274 (Commit message generated by Copilot) * feat(chat): add support for hand-off prompts in chat sessions (microsoft#298818) * Fix skill delete behaviour (microsoft#298814) * Remove remaining webpack references for building extensions All extensions now should be fully ported over to use esbuild instead of webpack * Use Dark Dimmed tokens for syntax highlighting and diff colors * chat: Use ref-counted model collection for tool confirmation inputs (microsoft#298829) * chat: Use ref-counted model collection for tool confirmation inputs Fixes duplicate model error when ToolConfirmationSubPart re-renders with the same toolCallId. Models keyed by URI are now managed via a ref-counted ReferenceCollection (InlineTextModelCollection) on IChatContentPartRenderContext, so multiple SubPart instances can safely share the same model. The model is only disposed when the last reference is released, preventing the 'Cannot add model because it already exists!' error during list re-rendering or parallel tool calls. - Add InlineTextModelCollection class wrapping ReferenceCollection<ITextModel> to handle ref-counted model lifecycle keyed by URI - Add inlineTextModels field to IChatContentPartRenderContext - Wire InlineTextModelCollection into chatListRenderer, passing to all context sites - Update chatToolConfirmationSubPart to use context.inlineTextModels.acquire() instead of modelService.createModel() - Remove unused IModelService injection from chatToolConfirmationSubPart Fixes microsoft#294345 (Commit message generated by Copilot) * ci failure * Browser: better focus transfering (microsoft#298819) * Browser: better focus transfering * fix * Sessions window: GH file system provider fixes * TODO * Update distro (microsoft#298841) * Browser: support hard reload (microsoft#298840) * Review comments * sessions: mcp protocol negotiation, gateway output channel, and customization ui improvements (microsoft#298852) * sessions: always show Logs panel in sessions window The Logs/Output panel was previously gated behind dev mode only. Make it always visible so MCP gateway negotiation logs and other output channels are accessible for debugging. * sessions: mcp protocol negotiation, gateway output channel, and customizations UI improvements MCP Gateway Protocol Negotiation: - Gateway now negotiates protocol version with clients instead of hardcoding '2025-11-25', fixing compatibility with older SDK versions - Adds MCP_SUPPORTED_PROTOCOL_VERSIONS covering all known MCP spec versions - Responds with client's requested version if supported, falls back to latest - Logs client info and negotiated version for diagnostics - 7 new unit tests covering all negotiation scenarios MCP Gateway Output Channel: - Dedicated 'MCP Gateway' output channel via ILoggerService (logLevel: always) - Gateway service and sessions now use ILogger instead of ILogService - All gateway lifecycle events visible in Output panel Sessions Window MCP Integration: - Re-enable MCP Servers section in sessions management editor - Add MCP Servers to sessions sidebar toolbar with total count - Add MCP Servers link item in sessions tree view (navigates to editor) - Add MCP Servers to sessions overview view with count from IMcpService - Add chat.experimentalSessionsWindowOverride setting for sessions-specific extension behavior (overridden to true in sessions defaults) MCP List Widget Polish: - Add 'Built-in' group showing extension-provided servers (e.g. GitHub MCP) - Remove per-item server icons, aligning with other customization sections - Hide running/stopped status indicators in sessions window - Match item height (36px), padding, and font styling to other sections - Hide empty description lines to tighten layout Customizations UI Cleanup: - Remove git status badges and SCM service dependency from list widget - Remove per-item storage badge icons (workspace/user/extension) - Remove 'Developer: Customizations Debug' command (replaced by output channel) - Simplify sidebar counts to single total number (no category icon badges) - Remove group separator borders, use spacing only - Fix list container overflow (hidden -> auto) and add min-height: 0 for scroll - Fix layout() fallback from 100px to 0px with requestAnimationFrame re-measure Customizations Debug Output Channel: - New sessions-only 'Customizations Debug' output channel - Streams snapshot on every change: summary table + search paths + file details - Includes MCP server listing with connection states Hooks Count Fix: - Toolbar hook counts now match management editor (per-hook, not per-file) - Uses IFileService to parse hook JSON files and count individual hooks The MCP gateway now negotiates the protocol version with connecting clients instead of hardcoding 2025-11-25. This fixes compatibility with clients using older @modelcontextprotocol/sdk versions that do not support the latest protocol version. * address PR review feedback - Fix stale MCP count in overview: use autorun to watch mcpService.servers - Guard rAF layout callbacks against widget disposal - Make built-in MCP items non-interactive (no pointer cursor, no hover) - Fix _logSnapshot dropping events: re-run if dirty during snapshot - Add CSS for mcp-builtin-readonly items * Add scrollbar to chat input * Check language model session target (microsoft#298862) * Revert "Remove remaining webpack references for building extensions" This reverts commit 3d7cf10. * sessions - disable implicit context entirely (microsoft#298884) * Enhance source map handling in NLS plugin and related components - Introduced adjustments for source maps in the NLS plugin to ensure accurate mapping after placeholder replacements. - Implemented deferred processing for source maps to handle edits more effectively, preserving unmapped segments. - Updated tests to validate column mappings and ensure correctness in both minified and non-minified builds. - Improved documentation to reflect changes in source map generation and adjustments. * Refactor theme color usage in AuxiliaryBarPart and PanelPart to utili… (microsoft#298896) Refactor theme color usage in AuxiliaryBarPart and PanelPart to utilize sessionsSidebarBorder * Hide debug slash command in Sessions (microsoft#298897) * fix: support protocol handler for subapp on macOS (microsoft#298877) * show logs by default (microsoft#298916) * sessions - enable terminal auto approve (microsoft#298917) * refactor: update box-shadow styles across various components to use new shadow variables - Replaced hardcoded box-shadow values with new CSS variables for consistency and improved theming. - Updated styles in postEditWidget, findOptionsWidget, findWidget, floatingMenu, hover, parameterHints, peekViewWidget, renameWidget, stickyScroll, suggest, actionWidget, hover, quickInput, agentFeedback components, and more. - Introduced new shadow variables: --vscode-shadow-sm, --vscode-shadow-md, --vscode-shadow-lg, --vscode-shadow-xl, and --vscode-shadow-hover for better control over shadow effects. Co-authored-by: Copilot <copilot@github.com> * agent sessions approval row * refactor: reorganize shadow variables in theme styles for consistency Co-authored-by: Copilot <copilot@github.com> * sessions - always prefer session label (microsoft#298926) * sessions - always prefer session label * Update src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: remove redundant overflow styles and apply box-shadow to notifications list container * refactor: remove overflow styles from notifications and clean up input box styles * fix sessions title bar (microsoft#298932) * fix title alignment * fix sessions title bar * Revert "Port github extension to use esbuild" (microsoft#298920) * Hiding and showing of terminals * Enhance task entry interface and add tests for command arguments (microsoft#298935) * Enhance task entry interface to support command arguments for different platforms * Add tests for runTask to validate command and argument handling * Agent sessions approval row (microsoft#298933) * Initial plan * fix: update test expectation for legacy terminal tool data to expect 'sh' language id Co-authored-by: benibenj <44439583+benibenj@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: benibenj <44439583+benibenj@users.noreply.github.com> * refactor: enhance box-shadow styling for menu container based on shadow color Co-authored-by: Copilot <copilot@github.com> * refactor: add box-shadow styling to rename widget for improved visibility * Updates component explorer * update distro (microsoft#298931) * Update editor widget background colors in 2026 Light theme * Add padding to statusbar left and right items for improved layout * Refactor statusbar padding for improved layout and item visibility Co-authored-by: Copilot <copilot@github.com> * Remove padding adjustments for first and last visible statusbar items * sessions - updates to selfhost setup (microsoft#298943) * sessions - updates to selfhost setup * document more hooks * Git - expose random name generation for branches (microsoft#298938) * configures dependabot to automatically update component explorer * sessions - indicate isolation level in viewer (microsoft#298955) * feat - add isolation icon support in agent sessions * refactor - remove isolation icon from agent sessions * refactor - remove isolation icon styles from CSS * sessions: fix separator in windows (microsoft#298961) * Update grammars (microsoft#298962) * Enhance source map handling in build tasks for CI environments * improves npm cache logic * fix: explicitly set volume size for dmg (microsoft#298918) * sessions - context menu on title for session actions (microsoft#298968) * sessions - context menu on title for session actions * Update src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * ccr * ccr --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * f5 run action keybinding and command handler * - remember draft state in new chat (microsoft#298983) - move changes action to title * sessions - improve session hover title rendering and persistence (microsoft#298950) * fix - add title rendering for session hover * fix - update hover title rendering logic * fix - update hover persistence for session rendering * fix - update hover setup for agent sessions * fix - update hover handling in `agentSessions` * Session window: apply patch to local * sessions - disable background throttling (microsoft#298985) * sessions - disable background throttling * ccr * . * refactor: remove unused agent feedback line decoration contribution a… (microsoft#298996) refactor: remove unused agent feedback line decoration contribution and associated styles * Indicate when all sessions are filtered hidden (fix microsoft#296581) (microsoft#298979) * Indicate when all sessions are filtered hidden (fix microsoft#296581) * . * Update src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * . --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Bump actions/upload-artifact from 4 to 7 (microsoft#298952) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * sessions - default settings tweaks (microsoft#299008) * chore: run npm audit fix (microsoft#298839) * mcp: add support for ui/download-file requests (microsoft#298838) * mcp: add support for ui/download-file requests - Adds McpUiDownloadFileRequest and McpUiDownloadFileResult types to modelContextProtocolApps.ts for MCP apps to request file downloads - Introduces IChatResponseResourceFileSystemProvider interface with an associate() method to store arbitrary data in the chat response filesystem and track it by session for cleanup - Extracts ChatResourceGroupWidget as a reusable component for rendering resource groups with save/download actions, used by both ChatToolOutputContentSubPart and MCP app downloads - Adds _handleDownloadFile() in ChatMcpAppModel to process download requests, supporting both inline EmbeddedResource and ResourceLink types from the MCP protocol - Adds download resource container in ChatMcpAppSubPart that renders downloaded resources as attachment pills with toolbar actions - Registers IChatResponseResourceFileSystemProvider as a singleton service Fixes microsoft#298836 (Commit message generated by Copilot) * mcp: add support for ui/download-file requests - Adds McpUiDownloadFileRequest and McpUiDownloadFileResult types - Introduces IChatResponseResourceFileSystemProvider interface - Extracts ChatResourceGroupWidget as reusable component - Adds _handleDownloadFile in ChatMcpAppModel - Adds download container in ChatMcpAppSubPart - Registers IChatResponseResourceFileSystemProvider singleton Fixes microsoft#298836 (Commit message generated by Copilot) * pr comments * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix cut off corner border * docs: fix duplicated wording in proposed API comment (microsoft#298522) docs: fix duplicated wording in proposed API comment\n\nSigned-off-by: Rohan Santhosh <rohan@example.com> * support multiple questions coming in for chat (microsoft#299006) fix microsoft#297408 * Support displaying hooks by target, compat refactor (microsoft#298798) * Reapply 8e445ca Switching to a slightly older postcss version to avoid the official build issue * Polish question carousel (microsoft#298377) * Polish question carousel: keyboard nav, badge styling, focus outlines * chat: prioritize selected single-select answer over freeform draft * Enhance question carousel with tab navigation and review functionality * Polish question carousel: stack title/desc, plain numbers, multiline Q:/A: summary, Cmd+Enter submit * Polish question carousel titles and execute controls * Address PR feedback: guard checkmark on actual answers, restore queue/steer, deduplicate format helper, fix JSDoc * Fix carousel tests: update selectors for tab-bar UI * Fix remaining carousel tests from main merge * Add ARIA tabpanel pattern and clear tab indicators on dispose * Adjust tab bar padding-left to 4px for multi-question carousels * Fix CI: non-null assertion and remove unused constants * fix: show steer/queue submenu during question carousel when text is typed - Cancel button now hides when input has text during question carousel (matches behavior during regular in-progress requests) - Queue/steer submenu now appears during question carousel and tool confirmation states, since requestInProgress is false in those states - Removed unused requestInProgressWithoutInput and pendingToolCall vars * Add very basic documentation of built-in extensions * Update extensions/CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update extensions/CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update extensions/CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update extensions/CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chat: add approval management UI to tool picker (microsoft#299031) Adds support for managing tool confirmation preferences directly from the tool picker. This allows users to approve tools and external paths at the workspace level, reducing friction when using tools that require confirmation. - Adds 'Manage Approval' button to tools that support confirmation - Integrates ILanguageModelToolsConfirmationService with tool picker - Adds workspace-level allowlist persistence for external paths - Extends ActionableButton type to support keepOpen behavior - Implements workspace folder selection and allowlist management - Adds ObservableMemento for persistent storage of approved paths Fixes https://github.com/microsoft/vscode-internalbacklog/issues/6805 * dialogs: prevent custom dialogs from overflowing screen vertically (microsoft#299048) Adds max-height: 90vh to the dialog box to prevent it from exceeding the viewport height, matching the existing max-width: 90vw constraint. The message content area now scrolls when it exceeds available space: - Added align-self: stretch to .dialog-message-container in horizontal layout so it fills the row height and triggers overflow-y scrolling - Added min-height: 0 to .dialog-message-container in vertical layout to allow flex shrinking and overflow-y scrolling - Changed .dialog-message-container overflow from 'hidden' to 'overflow-y: auto; overflow-x: hidden' to enable vertical scrolling Buttons, toolbar, and footer remain visible. Only message content scrolls. Fixes microsoft#296528 (Commit message generated by Copilot) * chat: support relative paths in plugin locations (microsoft#299059) * chat: support relative paths in plugin locations - Changes chat.pluginLocations to support home-relative (~/) and workspace-relative (./) paths instead of absolute paths - Adds path normalization and validation in agentPluginServiceImpl - Updates constants and contribution for plugin path handling - Ensures settings are shareable across machines by avoiding absolute paths Fixes microsoft#297365 (Commit message generated by Copilot) * comment * fix chat-input-container padding (microsoft#299054) * sessions: add "github.copilot.chat.githubMcpServer.enabled" to config… (microsoft#299030) sessions: add "github.copilot.chat.githubMcpServer.enabled" to config override * Fix MCP tool validation warning for schemas without properties (microsoft#299035) Per the MCP spec, the 'properties' field in tool inputSchema is optional, with 'type' being the only required field. However, JSON Schema Draft 7 validation requires 'properties' for object types, causing spurious warnings like 'Tool foo failed validation: schema must have a properties object'. Fix by normalizing the inputSchema to include an empty properties object when not present. Fixes microsoft#251723 * chat: add manage action gear icon to installed agent plugins (microsoft#299052) * chat: add manage action gear icon to installed agent plugins Adds a ManagePluginAction that displays a gear icon in the plugin list for installed plugins. Clicking the gear icon shows a context menu with management options (enable/disable, open folder, open README, uninstall), making it consistent with how extensions and MCP servers display their management UI. - Adds ManagePluginAction class that provides dropdown menu with management actions for installed plugins - Adds ManagePluginActionViewItem to render the action as a clickable gear icon with context menu - Updates AgentPluginRenderer to include the gear icon in the action bar for installed plugins - Context menu displays enable/disable, open folder, open README, and uninstall options Fixes microsoft#298461 (Commit message generated by Copilot) * chat: clean up manage plugin action to follow MCP pattern - Extract shared getInstalledPluginContextMenuActionGroups() to deduplicate action construction between gear menu and context menu - Restructure ManagePluginAction with createActionViewItem() pattern matching MCP/extensions DropDownAction approach - Add onHide disposal for context menu actions - Remove redundant getDomNodePagePosition import * Make sure we specify a tsconfig.browser.json for browser ext * fix compile error in mcpGatewayToolBrokerChannel test * chat: combine multiple pending steering messages into single request (microsoft#299061) * chat: combine multiple pending steering messages into single request When Copilot is running a tool, sending multiple steering messages only sends the first one. The chatbot waits indefinitely for the remaining messages. This fix combines all consecutive pending steering messages into a single request by: - Adding dequeueAllSteeringRequests() to ChatModel to dequeue all consecutive steering messages at the front of the queue - Refactoring processNextPendingRequest() to handle both steering and queued requests through a unified flow that: - Combines multiple steering message texts with \n\n separator - Merges attachments from all steering messages - Re-parses the combined text - Sends as a single request to the agent Fixes microsoft#298324 (Commit message generated by Copilot) * comments * McpGateway extensive logging (microsoft#299043) * McpGateway extensive logging * update * update * fix: invalidate _startupGrace when cacheState regresses * fix: use per-entry resolved tracking instead of autorun for _startupGrace invalidation * Use settings icon instead of tools icon in chat input (microsoft#299068) * tests * fix chat tip issue (microsoft#299070) fix microsoft#299036 * constrain and make chat questions scrollable (microsoft#298786) * add play button in prompt config dialog (microsoft#297715) * fix merge error * Using merge strategy * Rename * fix: passing js-flags to utility process (microsoft#299069) * Fix /hooks slash command from blocking chat (microsoft#299084) * Disable slash commands for background (microsoft#299085) * refactor: update getCliUserSubfolder to clarify prompts exclusion (microsoft#299089) * Don't show Used n references when opening an old session (microsoft#299092) * Don't show Used n references when opening an old session Alternate fix for microsoft#297152 * Don't show Used n references when opening an old session Alternate fix for microsoft#297152 * api: fix memory leaks in MainThreadManagedSockets (microsoft#299093) * api: fix memory leaks in MainThreadManagedSockets Refactors MainThreadManagedSockets to properly manage disposables and prevent memory leaks. Uses DisposableMap for registrations and DisposableStore to collect socket disposal listeners. - Changes _registrations from Map<number, IDisposable> to DisposableMap to leverage automatic disposal when clearing entries. - Collects Event.once listeners for socket disposal in a DisposableStore to ensure they are properly disposed of when the factory is unregistered. - Minor whitespace fix on closeRemote method signature. Refs microsoft#293200 (Commit message generated by Copilot) * Better * Review comments * Clean up * Commit customization files to main repo for worktree persistence (microsoft#299094) * Commit customization files to main repo for worktree persistence Customization files (agents, skills, instructions, prompts, hooks) are now always committed to the main repository so they persist across worktrees. When a worktree session is active, the file is also copied and committed there so the running session picks it up immediately. - Rewrite SessionsAICustomizationWorkspaceService.commitFiles() with dual-commit logic (main repo + worktree) - Add deleteFiles() to IAICustomizationWorkspaceService interface - Wire delete action to commit removals to git - Show friendly warning when main repo commit fails from a worktree * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions: suggest slash commands on new session page (microsoft#299098) * feat: add dynamic customization slash commands to sessions new-chat page Add individual prompt/skill files as slash commands in the sessions window's new-chat input, matching what the customizations view shows. - Add getFilteredPromptSlashCommands() to IAICustomizationWorkspaceService - Core: passthrough to IPromptsService - Sessions: filters via applyStorageSourceFilter() per prompt type - Add second completion provider in SlashCommandHandler for dynamic prompt/skill slash commands alongside existing static ones - Update decorations to recognize and highlight dynamic prompt commands - Subscribe to onDidChangeSlashCommands for cache refresh - Fix regex in tryExecuteSlashCommand to support Unicode prompt names Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat: expand prompt slash commands into CLI-friendly references When a user types /my-prompt in the sessions new-chat input, expand it before sending to: 'Use the prompt file located at [name](uri).' so the CLI agent can locate and process the prompt file. - Add tryExpandPromptSlashCommand() to SlashCommandHandler - Call it in _send() before session.setQuery() to rewrite the query Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refactor canResolveChatSession to accept session type (microsoft#299112) refactor: update canResolveChatSession method to accept session type instead of URI * Don't depend on sessionResource in a few places (microsoft#299110) * Don't depend on sessionResource in a few places Removes some antipaterns and unused variables. * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions - AI customizations for selfhost (microsoft#299053) * sessions - AI customizations for selfhost * more * Update .github/hooks/hooks.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update .github/skills/sessions/SKILL.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * modal - focus editor on title click (microsoft#299038) Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com> * sessions - allow to open preview from markdown files (microsoft#299047) * sessions - allow to open preview from markdown files * Update src/vs/sessions/contrib/markdownPreview/browser/markdownPreview.contribution.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions - tweaks to empty message (microsoft#299034) * sessions - fix close action showing up in modal editors when tabbed (microsoft#299041) * feat: enhance chat session option updates (microsoft#299109) * Ensure to update ChatInputPart state before updating viewmodel (microsoft#299119) * Add /troubleshoot command for access to debug logs (microsoft#299024) * modal - improve handling of Escape key and expand use of modal editors to more kinds (microsoft#299060) * modal - improve handling of Escape key and expand use of modal editors to more kinds * Update src/vs/workbench/browser/parts/editor/editorCommands.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * eng - explain fallback for how to check for compilation issues fast in CLI envs (microsoft#299117) * eng - explain fallback for how to check for compilation issues fast in CLI envs * Update .github/copilot-instructions.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update .github/copilot-instructions.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * . --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Avoid unnecesary updates to model in new background agent sessions (microsoft#299121) * sessions - indicate in layout that status bar is hidden (microsoft#299131) * sessions - move scrollbar to the right for chat (microsoft#299134) * fix - update precondition for `OpenSessionWorktreeInVSCode` (microsoft#299140) * Git - tweak copilot worktree folder detection (microsoft#299147) * Git - tweak copilot worktree folder detection * Pull request feedback * Apply OutSystems customizations on top of latest upstream - Add customIcon field to CompletionItem interface (languages.ts, was modes.ts) - Add custom icon rendering logic in suggestWidgetRenderer.ts (moved to browser/ subfolder) - Add OS Azure Pipelines build/deploy pipeline for monaco-editor-core * Use windows-latest image in OS pipeline * review PR to accomodate with ms changes * review lock file * revert changes to package.json * Commit automatically generated monaco d.ts file * review pipeline yml * Remove workflows * Alpha version for testing package * Bundle the icon font * bump testing version * Remove alpha from version --------- Signed-off-by: loongtao.zhang <loongtao.zhang@outlook.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com> Co-authored-by: cathaysia <ample-zit-false@duck.com> Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com> Co-authored-by: Don Jayamanne <don.jayamanne@outlook.com> Co-authored-by: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Co-authored-by: Benjamin Christopher Simmonds <44439583+benibenj@users.noreply.github.com> Co-authored-by: BeniBenj <besimmonds@microsoft.com> Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> Co-authored-by: Lee Murray <lemurra@microsoft.com> Co-authored-by: Sandeep Somavarapu <sasomava@microsoft.com> Co-authored-by: Kunal Bhujbal <156365067+kbhujbal@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Elie Richa <eliericha@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Co-authored-by: David Dossett <25163139+daviddossett@users.noreply.github.com> Co-authored-by: Ben Villalobos <bevillal@microsoft.com> Co-authored-by: Megan Rogge <merogge@microsoft.com> Co-authored-by: John Sanchirico <59657471+sanchirico@users.noreply.github.com> Co-authored-by: Connor Peet <copeet@microsoft.com> Co-authored-by: dileepyavan <52841896+dileepyavan@users.noreply.github.com> Co-authored-by: Henning Dieterichs <hdieterichs@microsoft.com> Co-authored-by: Paul <paul_wang347@hotmail.com> Co-authored-by: Kyle Cutler <67761731+kycutler@users.noreply.github.com> Co-authored-by: Osvaldo Ortega <osortega@microsoft.com> Co-authored-by: Osvaldo Ortega <48293249+osortega@users.noreply.github.com> Co-authored-by: Josh Spicer <23246594+joshspicer@users.noreply.github.com> Co-authored-by: Rob Lourens <roblourens@gmail.com> Co-authored-by: Johannes <johannes.rieken@gmail.com> Co-authored-by: Robo <hop2deep@gmail.com> Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Christof Marti <chrmarti@microsoft.com> Co-authored-by: Lee Murray <mrleemurray@gmail.com> Co-authored-by: Alex Ross <38270282+alexr00@users.noreply.github.com> Co-authored-by: Pierce Boggan <piboggan@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com> Co-authored-by: Rohan Santhosh <rohan.santhoshkumar@gmail.com> Co-authored-by: Justin Chen <54879025+justschen@users.noreply.github.com> Co-authored-by: Connor Peet <connor@peet.io> Co-authored-by: Martin Aeschlimann <martinae@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Tyler James Leonhardt <2644648+TylerLeonhardt@users.noreply.github.com> Co-authored-by: Rui Neves <rui.neves@outsystems.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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
MCP Gateway Protocol Negotiation:
hardcoding '2025-11-25', fixing compatibility with older SDK versions
MCP Gateway Output Channel:
Sessions Window MCP Integration:
extension behavior (overridden to true in sessions defaults)
MCP List Widget Polish:
Customizations UI Cleanup:
Customizations Debug Output Channel:
Hooks Count Fix:
The MCP gateway now negotiates the protocol version with connecting
clients instead of hardcoding 2025-11-25. This fixes compatibility
with clients using older @modelcontextprotocol/sdk versions that
do not support the latest protocol version.