Skip to content

[pull] main from microsoft:main - #1657

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

[pull] main from microsoft:main#1657
pull[bot] merged 18 commits into
code:mainfrom
microsoft:main

Conversation

@pull

@pull pull Bot commented Sep 2, 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 : )

benibenj and others added 18 commits September 1, 2026 22:27
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
chat: limit file completion search results

Cap file completion searches at 100 results in both the workbench and Agents Window to avoid materializing excessively large suggestion lists. (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: sync linked skill files

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

* agentHost: sync complete skill directories

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

Copilot-Session: d60c8636-9aaa-42ee-b94f-e7daba0c32aa

* agentHost: hash synced files as binary

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

Copilot-Session: d60c8636-9aaa-42ee-b94f-e7daba0c32aa

* test: compare synced origins by URI value

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

Copilot-Session: d60c8636-9aaa-42ee-b94f-e7daba0c32aa

* Address skill sync review feedback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 54febce8-3c95-4100-bf37-0e38cca467d1

* Harden synced skill directory traversal

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 54febce8-3c95-4100-bf37-0e38cca467d1

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d60c8636-9aaa-42ee-b94f-e7daba0c32aa
Copilot-Session: 54febce8-3c95-4100-bf37-0e38cca467d1
* sessions: refine single-pane details behavior

Keep the side-pane boundary stable when toggling docked details, align new-session editor closing with existing sessions, and reveal details when Empty Files opens. Also order the details action before maximize and allow workspace-backed draft sessions to open Changes.

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

* sessions: preserve hidden details after Empty Files

Reveal docked Details only when Empty Files becomes active or visible, rather than on unrelated reactive updates, and clarify the last-editor close contract.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Show execution subagent turns remaining

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

Copilot-Session: 62f6758b-a71d-4533-8f3d-9028975772bf
* sessions: preserve background layouts per color scheme

Store and restore dark and light Agents chat background image layouts independently. Keep layout persistence machine-local alongside the corresponding image settings and cover theme switching and preview restoration.

Fixes #333690

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

* sessions: restore active background layout after preview

Restore the configured layout for the color scheme that is active when the background layout picker is cancelled. This avoids applying a stale preview if automatic theme detection switches schemes while the picker is open.

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

* sessions: simplify background layout preview restoration

Keep cancellation tied to the layout captured when the picker opens instead of exposing configuration restoration through the background service.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
chat: skip redundant customization location picker

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
agentHost: disable flaky Codex plugin discovery E2E (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep the last complete all-folder summary when any repository diff is unavailable instead of publishing and persisting a partial aggregate.\n\nRefs #332694

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* remote tunnels: unify agent window access

Use one Remote Tunnel Access state for the editor and Agents window.

- Route the Agents window toggle through the Remote Tunnel commands.
- Use GitHub authentication without extra pickers or service installation.
- Keep tunnel rename UI and synchronize tunnel status across both surfaces.
- Remove separate Agent Host tunnel hosting services and process modes.
- Preserve web discovery with a browser-safe Remote Tunnel service.

(Commit message generated by Copilot)

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

* remote tunnels: fix agent window initialization

Prevent early command execution and false connection notifications in the Agents window.

- Register the titlebar action after Remote Tunnel commands are available.
- Seed the initial sharing state before enabling transition notifications.
- Add tests for initial snapshots and status events during initialization.

(Commit message generated by Copilot)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Agent Host changes for osortega/agents/sandbox-permission-prompt-review

* Address review on sandbox write permission rendering

Translate the write permission's invocationMessage, not just the
confirmation message. AgentSessionApprovalModel reads
invocationMessage for non-terminal approvals, so the sessions list
showed the host's generic "Edit file" while the confirmation card
showed the file. Both now derive from the same value.

Normalize a Windows host path before formatting the link. URI.file
only rewrites separators when the client runs Windows, so a Windows
host paired with a non-Windows client collapsed C:\repo\file.ts into
a single-segment basename and an unresolvable URI.

Revert the chatToolConfirmationSubPart change. It surfaced the raw
input for plain-string confirmations, but that editor is writable
while agent-host approval dispatch never sends editedToolInput, so
edits were silently discarded. Translating the message removes the
need for it, and this no longer touches shared rendering code.

Also stop emitting the raw input for writes: it repeated the file the
message already names.

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

* Drop the write permission adaptation

The write path restated the host's file name as a markdown link so the
confirmation card and sessions list would show a file pill. That
duplicates information a host can supply directly, so it would have
become dead code rather than a lasting fix. Tracked separately with
the agent host team.

The command path stays. It is not compensating for a host deviation:
the Agent Host Protocol has no field that identifies a pending tool
call as a shell command, so `_meta.toolKind` (a VS Code-private hint a
remote host has no reason to set) is the only signal, and without the
fallback a sandbox command approval shows the agent's intention
instead of the command being approved.

Reverts the getEditFileMessage extraction, the write branch and its
Windows path normalization, the write fields on the permission meta
reader, and the three write tests.

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

---------

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

* agentHost: do not revoke shared credentials when a client has no token

The agent host keeps one credential for each protected resource, and all connected clients share
it. A client that starts before its authentication provider is ready resolves no token and sends
an empty token. An empty token means revocation. A new window therefore removed a credential that
another window supplied. All local providers lost the credential and stopped advertising models.

The host also stayed silent about the loss. It published an empty model list and waited. Nothing
told the other clients to supply a token again, so the model picker stayed empty until the user
reloaded the window.

- Replace the token lookup result with three states: resolved, signed out, and unavailable. The
  authentication pass now sends no `authenticate` request unless it resolves a token. This needs
  no protocol change and is correct against an unchanged host.
- Drive revocation from an explicit session removal instead of an empty read. An absent token
  cannot show the difference between "not loaded yet" and "signed out".
- Re-resolve the credential after a session removal. A provider can hold more than one account,
  so the removal of one account must not revoke a credential that another account still supplies.
- Retry authentication when an authentication provider registers, so a deferred token is sent as
  soon as the provider is ready.
- Set `authenticationRequired` when the Copilot agent loses its GitHub credential. This is the
  only moment the agent knows for certain that it is unauthenticated. The resulting SDK failure is
  a local `InvalidArg` and not a 401, so it never reached the existing 401 path.
- Move the authentication listeners to the connection store. They were registered for each agent,
  which made one duplicate listener pair for every registered agent.

The `auth/required` notification and the client recovery path already existed, and the recovery
path already clears the token cache. The host now raises that notification, so a client that still
holds a valid token repairs the shared state without a window reload.

Validated against a live agent host with two protocol clients. A client that sends an empty token
and disconnects makes the host raise `auth/required` after 3ms. The remaining client answers it,
and the model count returns from 0 to 23 after 1.76 seconds, with no reload.

Fixes #332020

(Commit message generated by Copilot)

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

* agentHost: narrow credential revocation to the removed session

Applies review feedback on the shared-credential revocation path.

- Reconcile only the resources that a removed session could satisfy. One provider commonly serves
  several resources with different scope sets, and a resource the removed session never covered
  must not be re-evaluated against this client's view. Another client can be the one that supplies
  its credential.
- Keep the Copilot authentication requirement raised when a second revocation arrives while the
  agent is already tokenless. `authenticate` cleared the requirement before `_applyGitHubToken`,
  which returns early for an unchanged token, so a duplicate revocation silenced the recovery
  notification. The host forwards every revocation to every provider, so duplicates are normal.
- Send the empty revocation token to remote hosts without a connection token transform. The cloud
  sandbox customization replaces an unsealed token with the current sealed token, which turned a
  sign-out into a re-authentication and left the sandbox with a credential the user had revoked.

(Commit message generated by Copilot)

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

* agentHost: report a revoked Copilot credential as expired

The 
equired reason means the client has not authenticated yet. A cleared
credential was valid before, which is what the �xpired reason describes, and
it matches the reason the session auth-rejection path already reports.

(Commit message generated by Copilot)

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

---------

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

* Agent Host changes for osortega/agents/vscode-sandbox-vs-copilot-analysis

* Address review feedback on sandbox model enrichment

Wait for a pending sandbox model catalog before the first turn. A freshly
connected sandbox publishes its models asynchronously, so an empty snapshot
is "not yet" rather than "no": resolve via `desiredModelResolution` and await
`onDidChangeModels` while it reports `pending`, falling back to the agent
host's default only on `unavailable` or after a bound. The identifier is now
built from the snapshot's `modelTarget` so resolution matches how sandbox
models are actually published.

Republish on any Copilot catalogue change instead of fingerprinting a subset
of the enriched fields, which silently swallowed a CAPI price refresh that
left ids and token limits untouched. Filtering the event by vendor is enough
to prevent a republish loop: a host's own vendor is always a session-type id.

Forward `ConfigPropertySchema.readOnly` again, and give it a declared home on
`ILanguageModelConfigurationSchema` so a host-declared immutable option can no
longer be dropped silently.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Highlight generic tool output by content type

Use tool result MIME types to select the generic output editor language, with Agent Host JSON classification for object-shaped text output. Preserve separate editors for adjacent outputs with different languages. (Written by Copilot)

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

* Normalize tool output MIME whitespace

Trim the normalized media-type token so valid MIME values with surrounding whitespace still select the expected editor language. Cover leading whitespace and whitespace before parameters. (Written by Copilot)

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

---------

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

* Improve perf of legacy Copilot CLI session listing & migration

* Feedback updates
* Add Agent Host prompt overrides

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

* Improve prompt override setting

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

* Fix YAML prompt override edge cases

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Sep 2, 2026
@pull pull Bot added the ⤵️ pull label Sep 2, 2026
@pull
pull Bot merged commit f87494c into code:main Sep 2, 2026
11 of 26 checks passed
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.