Skip to content

[pull] main from microsoft:main#1385

Merged
pull[bot] merged 42 commits into
code:mainfrom
microsoft:main
Jun 18, 2026
Merged

[pull] main from microsoft:main#1385
pull[bot] merged 42 commits into
code:mainfrom
microsoft:main

Conversation

@pull

@pull pull Bot commented Jun 18, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

mrleemurray and others added 30 commits June 18, 2026 10:11
…proved layout

Co-authored-by: Copilot <copilot@github.com>
…proved accessibility

Co-authored-by: Copilot <copilot@github.com>
…prove layout responsiveness

Co-authored-by: Copilot <copilot@github.com>
…nsistency

Co-authored-by: Copilot <copilot@github.com>
…r tab styles for improved layout and consistency
…proved layout consistency

Co-authored-by: Copilot <copilot@github.com>
…ow scope for improved visual integration

Co-authored-by: Copilot <copilot@github.com>
…fecting module handling

Co-authored-by: Copilot <copilot@github.com>
PR #320997 began forwarding COPILOT_INTEGRATION_ID into the shared
CopilotApiService's CAPIClient constructor. In packaged builds the
vscode-capi mixin sets that constant to 'vscode-chat' (and OSS builds use
'code-oss'); both are reserved by @vscode/copilot-api, whose CAPIClient
constructor throws "Integration ID … is reserved and cannot be used".
Because the client is built before any request, the throw happened during
endpoint discovery, independent of the per-request suppression flag — so
codex and claude model refresh failed with an empty catalog in every
packaged build (and OSS dev), which surfaced as the Codex smoke test
timing out on the insider pipeline.

The explicit integration-id argument is only consulted by the library
when an HMAC secret is also supplied (it never is here), so passing it
accomplished nothing except the crash. The correct wire id is derived by
the library itself from the license / SKU / build state: a licensed prod
build yields 'vscode-chat', the no-auth SKU yields 'vscode-nl', and
everything else defaults to 'code-oss'. Drop the dead argument (and the
getIntegrationId seam) so the library derives the id; the license
argument that actually identifies prod traffic is unchanged.

With the id now derived and sent on every request, the per-request
suppressIntegrationId escape hatch is no longer needed anywhere, so
remove it entirely: the option, its plumbing through models()/messages()/
responses(), and the call-site opt-ins in the codex and claude agents and
their proxy services.

Verified locally (agents window, OSS dev): codex and claude refresh their
catalogs (codex 6 /responses models incl. gpt-5.5, claude 7, copilot 17)
with no reserved-id error; a real codex turn (responses) and a real
claude turn (messages) both complete end-to-end against live CAPI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* track tool used

* reduce comment
…gration-id

agentHost: stop sending an explicit Copilot integration id to CAPI
* AgentHost - show changeset operations in groups

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Ensure that the running actions appear in a separate group

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Update hover color for Light 2026 theme
…ts Window and skip the Codex smoke test too (#321983)

* Skip the second reply for the Copilot CLI smoke test also in the Agents Window

* Skip also the Codex smoke test
Refactor title bar update placement for improved layout consistency

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
* Fix cost calc + context size compaction

* Address comments
Improve style overrides for visual consistency and accessibility
benibenj and others added 12 commits June 18, 2026 20:59
* improved reveal unreview comments

* fixes
remove autoApproveUnsandboxed commands
Edit mode is now hidden for everyone, so the chat.editMode.hidden
setting and its DeprecatedEditModeHidden policy are no longer needed.
This removes the setting registration, policy, exported policy data
entry, and the settings layout reference. The custom Edit mode file in
the built-in Copilot extension (and its provider registration) is
removed as well. The mode picker no longer special-cases a custom
`edit` mode by name for its icon or built-in grouping; the legacy
built-in Edit mode (shown when agent mode is disabled by policy) keeps
its own icon.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* policy: server-delivered managed settings win over native MDM

Managed settings can arrive from two channels: the server `managed_settings`
endpoint and native MDM (Windows registry / macOS plist). Previously the two
were merged with native MDM winning. This changes the precedence so the two
layers are never merged: at any point in time there is a single authoritative
source. The server is harder to bypass than local MDM/file policies, so when
the server delivers managed settings it wins outright and native MDM is ignored
entirely. Native MDM applies only when the server provides no managed settings.

Client-side merging still happens within the winning layer (e.g. enabledPlugins,
extraKnownMarketplaces).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* policy: move managed-settings precedence rationale into add-policy skill

Trim the verbose inline comment in AccountPolicyService.getPolicyData() down to
a one-line pointer; the full precedence rationale lives in the managed-settings
section of the add-policy skill doc.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* policy: drop code snippet from managed-settings precedence doc

Keep the precedence explanation as prose; the code lives in
AccountPolicyService.getPolicyData().

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* policy: add skill learning — prefer behavior/contract prose over copy-pasted code

Skills should document behavior and business-logic expectations and reserve
code blocks for the author-facing API contract, rather than reproducing
internal implementation that rots when the source changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…#321996)

Show 'Add to Comment' before 'Edit' in the agent feedback item action bar, and relabel the 'Convert to Agent Feedback' action to 'Accept'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* policy: add dev mock server for copilot_internal policy endpoints

Adds scripts/mock-policy-server, a standalone dev tool (npm run
mock-policy-server) that mocks the Copilot policy endpoints
DefaultAccountService calls: entitlements (/copilot_internal/user), token
(/copilot_internal/v2/token), MCP registry (/copilot/mcp_registry) and
managed settings (/copilot_internal/managed_settings).

A small web GUI lets devs pick presets or edit each JSON response, and
Wire/Unwire buttons point product.overrides.json at the local server
(preserving the rest of defaultChatAgent, since bootstrap-meta merges
overrides shallowly). The managed-settings JSON schema is loaded from
--schema/MANAGED_SETTINGS_SCHEMA, defaulting to
./copilot-agent-runtime/schema/managed-settings-schema.json relative to
the app cwd; web URLs and file URIs are accepted, and the GUI warns about
keys not declared in the schema.

The three browser/shared .js files are added to
.eslint-allowed-javascript-files since the GUI loads them directly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* policy: address mock-policy-server review feedback

- Scope permissive CORS to the mocked GET endpoints only; keep /api/*
  same-origin so a website can't drive /api/wire and rewrite
  product.overrides.json (CSRF).
- Coerce an empty editor body to {} instead of "" so mocked responses
  stay JSON objects.
- Build the endpoint meta line with textContent/DOM nodes instead of
  innerHTML.
- Drop the misused tablist/tab ARIA roles; the nav now has an aria-label
  and the active item uses aria-current.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* policy: document mock policy server in add-policy skill

Add local-testing.md to the add-policy skill with basic steps for using
the mock policy server (scripts/mock-policy-server) to exercise the
account/managed-settings flow locally, and link it from SKILL.md and
github-managed-settings.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* policy: polish mock server GUI — schema validation, wiring backup, localStorage persistence

* policy: auto-save, rename wiring to product.overrides.json, copy path button

* mock-policy-server: convert server.js to TypeScript; add raw response diagnostics

- Convert server.js → server.ts (runs via --experimental-strip-types)
- Add endpoints.d.ts type declarations for the UMD endpoints module
- Add managedSettingsRawResponse to IDefaultAccountProvider/IDefaultAccountService
- Show raw response in Developer: Sync Account Policy output
- Remove server.js from eslint allowed-javascript-files

* mock-policy-server: convert all JS to TypeScript

- endpoints.js → endpoints.ts with proper interfaces (replaces .d.ts)
- public/app.js → public/app.ts with full type annotations
- Server uses module.stripTypeScriptTypes() to serve .ts as plain JS
  to the browser — no build step needed
- Remove all mock-policy-server entries from .eslint-allowed-javascript-files

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* make sure pickers reflect current selection in action list

* address comments
Remove delegate picker from agents window
@pull pull Bot locked and limited conversation to collaborators Jun 18, 2026
@pull pull Bot added the ⤵️ pull label Jun 18, 2026
@pull pull Bot merged commit 204f6e1 into code:main Jun 18, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.