Commit Graph
5301 Commits
Author SHA1 Message Date
70136ec59e Add Kimi K3 prompt support (#327313)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-24 19:04:22 +00:00
RoboandGitHub b9ebf999d3 fix: prefer unpacked node_modules for native binaries (#327302) 2026-07-24 16:39:12 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a56e8b93a8 Bump shell-quote from 1.8.4 to 1.10.0 in /extensions/copilot/chat-lib (#327236)
Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.4 to 1.10.0.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.4...v1.10.0)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.10.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-23 22:17:11 -07:00
Anthony KimandGitHub f9aad8156e Bump Copilot SDK to 1.0.8 and Copilot to 1.0.73 (#327165)
Bump Copilot SDK to 1.0.8

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

Copilot-Session: 5083fb1f-34d7-44bf-82a1-c4582e57683b
2026-07-24 02:29:26 +00:00
Dileep YavanmandhaandGitHub d5d0f468f4 Fix apply_patch prompt instructions (#327223)
Document apply_patch explanation input
2026-07-24 02:26:29 +00:00
PaulandGitHub 4224780376 Update edit permissions (#327199) 2026-07-23 21:00:49 +00:00
c6b3beee5e Add tool search to Copilot agent host (#326213)
* Add tool search to Copilot agent host

* Address review: alias-aware tool-search gating, drop transient candidates, cover prompt branch

- Compute the tool-search capability decision from the family-aliased model in
  both the launcher and CopilotAgentSession so an aliased preview model is no
  longer rejected and the two stay in agreement.
- Strip the transient tool-search candidate corpus from the completed tool
  call's _meta so repeated searches don't bloat synchronized session state or
  persist across reconnects.
- Add active/inactive + composition tests for the tool-search prompt line at
  both the unit and prompt-registry layers, plus a model-family alias
  regression test for tool-search gating.

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

* Remove obsolete tool-search start barrier

* Address tool-search review feedback

* Use the extension's existing tool-embedding cache for Agent Host search

* Address review: keep server tools eager, harden tool-search candidate corpus

- Force server-provided SDK tools to defer:'never' so they stay eager and are
  not deferred behind tool_search.
- Default missing candidate descriptions to '' when building the tool-search
  corpus, so the all-or-nothing metadata reader never drops a valid corpus.
- Drop the unused inputSchema field from the tool-search candidate corpus
  (name + description are all the embeddings ranker consumes).
- Use the client-facing tool name in the custom-tool auto-approve membership
  check so a deferred tool_search runtime name resolves correctly.
- Remove a redundant conjunct in _clientToolName already implied by
  _isToolSearchActive().

* 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>

* Temporarily disable GPT tool search

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-23 18:06:31 +00:00
Logan RamosandGitHub f9257d2048 Make websockets model aware (#327160) 2026-07-23 17:40:02 +00:00
Martin AeschlimannandGitHub 396ff629f0 revert prompt changes from #325259 (#326984) 2026-07-23 08:56:51 +00:00
24be8b3cb4 chore: npm audit fix (#326903)
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
2026-07-22 09:23:06 -07:00
Raymond ZhaoandGitHub af1fe47634 chore: reference new vault (#325690) 2026-07-22 00:12:42 +00:00
Logan RamosandGitHub bc38398417 Make sub agents implemented as tools render as subagents (#326867) 2026-07-21 19:40:57 +00:00
Martin AeschlimannandGitHub c17b98c14f Notebook tools added without being enabled by the user (#326780) 2026-07-21 08:53:32 +00:00
648d169d92 Bump github/copilot 1.0.72 (#326704)
* Bump github/copilot 1.0.72

* need to exclude webview

* Try skipping notification/tools/list_changed

* Capture tool list changes in agent host e2e snapshot

* Filter machine-dependent tools/list_changed notification from AHP snapshots

* Add glob patterns for Copilot Win32 built-in plugins in gulpfile tasks

* Update glob patterns for Copilot Win32 built-in plugins in gulpfile tasks

---------

Co-authored-by: Don Jayamanne <don.jayamanne@outlook.com>
2026-07-21 17:36:26 +10:00
b78f57dc9a Show all cloud sessions in the agents window regardless of active repo (#326747)
* Show all cloud sessions in the agents window regardless of active repo

The v2 Task backend scoped the cloud session list to the active
workspace's repositories, so the agents window only showed sessions
for the currently selected repo. Use the global user-scoped list when
in the agents window, matching the v1 Jobs backend behavior.

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

* Use agents-window scope for cloud session background refresh and polling

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-21 04:55:23 +00:00
Dileep YavanmandhaandGitHub 0c926e1fbe Add low verbosity for GPT-5.6 responses (#326733) 2026-07-20 23:44:18 +00:00
395f76c043 NES: split open-tab vs related-file neighbor context (#326626)
Two behavior-preserving improvements to the xtab (NES) neighboring-files context, both keyed on distinguishing open-tab neighbors from language-service "related" files:

1. Related-file snippets omit line numbers in the prompt (matching NES's own language-context path); open-tab snippets keep them.
2. New neighborFiles.includeRelatedFiles option (default true) can disable the related-files context; when off, the related-files/LSP work is skipped entirely.

Provenance is tagged once at the source: getNeighborFilesAndTraits stamps isFromRelatedFile on each related doc via isRelatedNeighboringFileType(type), getSimilarSnippets propagates it (and the source uri) onto every snippet and guarantees both on its return type, and SimilarFilesContextService reads the flag directly. Defaults are unchanged, so this is a no-op until the new exp key is flipped.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1bb7414b-49be-41eb-b86b-bc8d7a319268
2026-07-20 23:41:18 +00:00
Dirk BäumerandGitHub 085b6a1465 Merge pull request #326648 from microsoft/dbaeumer/compact-wildebeest-plum
Change the default max result to 100
2026-07-20 22:00:26 +02:00
Dirk Baeumer c08cf69cd3 Update default in code. 2026-07-20 20:40:50 +02:00
Piyush MadanandGitHub aa25cee349 Merge branch 'main' into piyushmadan/subagent_orchestration 2026-07-20 10:46:58 -07:00
Vijay UpadyaandGitHub 42a4c3c771 Revert "Forward CAPI assignment context to VS Code core telemetry" (#326675)
Revert "Forward CAPI assignment context to VS Code core telemetry (#326273)"

This reverts commit edcd2a2524.
2026-07-20 17:19:28 +00:00
Dirk Baeumer 0282a9fe84 Change the default max result to 100 2026-07-20 17:47:25 +02:00
ulugbeknaandCopilot App f8098a2c45 Localize Copilot setting deprecation message
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: cef33ee6-84ab-4cb7-8975-c2a562f4cf46
2026-07-20 17:20:51 +02:00
ulugbeknaandCopilot App 72afc86ae6 Use schema deprecation messages for Copilot settings
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: cef33ee6-84ab-4cb7-8975-c2a562f4cf46
2026-07-20 17:01:02 +02:00
ae0e51e824 nes: fix: NES cached suggestion not shown after rebasing over user indentation (#326537)
* Fix NES cached suggestion not shown after rebasing over user indentation

When a cached NES suggestion is a line-based insertion that restates the
line's indentation (e.g. predicting "    return [" on an empty body line)
and the user tabs to indent that line, tryRebaseCacheEntry served the raw,
non-minimized edit whose range spans the indentation the user already
typed. That edit is not a clean at-cursor insertion, so the core
inline-completions renderer drops it and the cached suggestion is silently
not shown.

Minimize the served rebased edit via removeCommonSuffixAndPrefix so the
indentation the user already typed is stripped, yielding a clean at-cursor
insertion that renders as ghost text. This is semantically neutral (same
apply() result on the current document) and idempotent for the downstream
isRejectedNextEdit check. Minimizing is done at the cache serving layer
rather than in editRebase, which intentionally keeps the full line edit for
response/telemetry fidelity.

Adds a regression test covering the empty-line + tab scenario.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 02c9dab3-1534-4b24-86c1-410c66e9d550

* Salvage NES suggestion on rebaseFailed for indentation mismatch

The previous commit minimized the served edit in the rebase *success*
branch, but that path already renders as ghost text, so the change was a
semantic no-op and its test modeled an artificial success path.

The real bug is in the rebase *failure* path: strict rebase matches
indentation literally, so when the user re-types a line's leading
whitespace differently than the model predicted (e.g. pressing Tab to
insert a tab character, or a different number of spaces, on an empty body
line), the whole suggestion is silently dropped and nothing is shown.

Salvage that case in the cache layer: on `rebaseFailed`, re-anchor the
model's still-valid content as a clean at-cursor insertion that respects
the indentation the user actually typed. This mirrors the reconciliation
the engine already performs when the indentation matches, is a faithful
representation of the model's intent (so it upholds the display layer's
soundness invariant), and only fires when the suggestion would otherwise
be dropped.

Revert the no-op minimization and replace the misleading regression test
with a faithful one covering the tab-character drop scenario (which fails
without this salvage).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 02c9dab3-1534-4b24-86c1-410c66e9d550

* Gate NES indentation-mismatch salvage behind a setting

Put the rebaseFailed re-anchoring behavior behind a new team-internal,
experiment-based setting `chat.advanced.inlineEdits.reanchorContentOnIndentationMismatch`
(default off) so it can be rolled out or disabled independently.

Thread the flag through `NesRebaseConfigs` (built in `_getNesRebaseConfigs`)
and gate the `tryReanchorContentAfterIndentation` salvage call on it. Add a
regression test asserting the suggestion is dropped when the setting is
disabled, alongside the existing salvage test with it enabled.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 02c9dab3-1534-4b24-86c1-410c66e9d550

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-20 16:24:20 +05:00
vs-code-engineering[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
f8e9f993cc Bump version to 1.131.0 (#326568)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-20 10:04:21 +00:00
Vijay UpadyaandGitHub be161a6b32 Apply gemini prompt update to all except gemini-3-flash and gemini-2.5 (#324830)
* apply prompt update to all gemini-3

* Update filter

* update prompt
2026-07-19 05:19:29 +00:00
d21f774aa8 agentHost: reduce extension host session scanning (#326461)
* agentHost: reduce extension host session scanning

Skip shared Copilot CLI JSONL watching when Agent Host is the default provider for the current window. Mark Agent Host SDK sessions with a distinct client name and replace legacy per-session ownership stats with one directory index.

(Written by Copilot)

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

* agentHost: test Copilot client identity

Capture SDK create and resume configs to ensure Agent Host always emits the client name consumed by extension-host ownership filtering.

(Written by Copilot)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-18 20:44:59 +00:00
edcd2a2524 Forward CAPI assignment context to VS Code core telemetry (#326273)
* Forward CAPI assignment context to VS Code core telemetry

Add a proposed API scode.env.setTelemetryExperimentProperty that
allows trusted built-in extensions to set experiment properties on
VS Code's core telemetry pipeline.

The Copilot extension uses this to forward capi.assignmentcontext
(received via X-Copilot-Experiment and x-copilot-api-exp-assignment-context
response headers from CAPI) so that it appears on all VS Code telemetry
events, not just the Copilot extension's own events.

Flow:
1. CAPI responds with experiment headers
2. Copilot extension extracts them into serverExperiments
3. TelemetryService.setSharedProperty('capi.assignmentcontext', value)
4. Override forwards to vscode.env.setTelemetryExperimentProperty()
5. MainThreadTelemetry calls ITelemetryService.setExperimentProperty()
6. Property appears on all subsequent VS Code telemetry events

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

* fix: resolve CI failures - eslint and Copilot typecheck

- Remove 'VS Code' from proposed API JSDoc (eslint vscode-dts-vscode-in-comments rule)
- Use type assertion for proposed API call in Copilot extension to avoid
  TS2339 since the extension's tsconfig doesn't include proposed .d.ts files

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

* fix: replace 'as any' with typed Record cast for eslint compliance

- Use Record<string, unknown> instead of 'as any' to satisfy no-explicit-any
- Narrow API JSDoc to per-window scope (matching existing TAS pattern)

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

* Few updates

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Vijay Upadya <41652029+vijayupadya@users.noreply.github.com>
2026-07-18 07:46:03 +00:00
ce0b319a4d Add assignment context to websocket path (#326267)
* Add assignment context header to WebSocket connections

Override createResponsesWebSocket in BaseCAPIClientService to inject the
X-Copilot-Client-Exp-Assignment-Context header, matching the behavior
already present in makeRequest for HTTP calls.

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

* Add unit tests for createResponsesWebSocket assignment context header

Tests verify:
- Header is injected when abExpContext is set
- Headers object is created when none exists
- Headers are not modified when abExpContext is unset

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

* Remove new capiClient websocket test file

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-17 23:51:17 -07:00
Piyush Madan 53c4578b25 Add getEndpoint non-proxy resolution tests for search subagent 2026-07-18 01:55:49 +00:00
b12476e6af Fix new cloud session disappearing and misgrouping after commit (#326230)
* Fix new cloud session disappearing and misgrouping after commit

The Agents window (vs/sessions) drove a new cloud (RemoteNewSession) agent
session through the wrong commit path, causing it to disappear ~5s after
delegating, and then group under "Unknown" / flip its repo label once it did
appear. Three related fixes:

1. Wait for the committed resource on cloud sessions. A cloud session commits
   a new resource mid-request (untitled -> /task/<id>), like Copilot CLI, so
   _sendFirstChat now routes RemoteNewSession through _waitForCommittedSession
   instead of waiting on the stale untitled resource (which timed out and
   removed the session). The wait is also deferred (skips the response-complete
   race, longer timeout) because the cloud commit is delayed by a confirmation
   round-trip and network delegation.

2. Attach owner/name metadata to PR-less task cards so a freshly created task
   groups under its repo instead of "Unknown"/"Other" until a PR resolves.
   Repo identity is hoisted from PullArtifactRef.repo to CloudSessionData.repo
   (a task has a repo regardless of a pull artifact); resolvePullArtifact now
   takes repo as an explicit argument.

3. Consolidate the repo label. Both the new-session workspace and the committed
   session adapter now derive an owner/repo label via a shared
   githubRemoteRepoLabel helper, so a cloud session stays in the same group
   before and after commit (no more microsoft/vscode -> vscode flip).

Adds a regression test for the cloud commit-swap.

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

* Comments

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-17 20:27:25 +00:00
Piyush Madan d59600cc66 Resolve search subagent model by exact id before family fallback 2026-07-17 17:39:52 +00:00
Piyush Madan d643e27e53 Remove informational trace logs in execution subagent getEndpoint 2026-07-17 17:15:24 +00:00
85313ccbab Fix deprecation warnings for internal Copilot settings (#326336)
Fix deprecation warnings for registered Copilot settings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-17 12:33:38 +00:00
vritant24andCopilot 4c8eb023b4 Fail closed by default and gate tokenizer path for cache_control sentinel
Address review: convertToApiChatMessage now defaults to not emitting the
cache_control sentinel (fail closed), and ExtensionContributedChatTokenizer
mirrors the request path so provideTokenCount never leaks it to non-cache-aware
providers. Condense comments per review.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-17 11:34:12 +05:30
d04bf18273 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-17 11:28:33 +05:30
vritant24andCopilot f3eeb6d04d Don't leak internal cache_control sentinel to BYOK providers that can't consume it
The host injects an Anthropic cache-breakpoint (cache_control data part) into
tool results for every non-messages endpoint, including third-party providers
(Ollama, custom) that can't recognize it and serialize it verbatim into their
upstream request. Gate emission in convertToApiChatMessage so the sentinel only
reaches vendors whose converters handle it (anthropic, gemini, openrouter).

Fixes #313920

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-17 11:18:01 +05:30
Henning DieterichsandHenning Dieterichs d5e96dc67c Fix deterministic Copilot telemetry extraction 2026-07-16 18:33:31 +02:00
a2d1376cfb Preserve BYOK state after conversation summaries (#325905)
* Preserve BYOK state after conversation summaries

Track summary generations for BYOK markers and omit stale markers after local summarization.

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

* Update stateful marker snapshots

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-15 17:07:10 -07:00
Christof MartiandGitHub af7386688d Check for expected content (#325100) 2026-07-15 11:28:04 +00:00
Vijay UpadyaandGitHub dba8c3aace Default BYOK utility model to GitHub Copilot (#325907)
* Default BYOK utility model to GitHub Copilot

* check sign in

* update err msg

* Feedback updates
2026-07-15 06:44:19 +00:00
Vijay UpadyaandGitHub 8ed5139862 Telemetry: Chunk diffsJSON across multiple telemetry columns to avoid truncation (#325903)
* Chunk diffsJSON across multiple telemetry columns to avoid  truncation

* feedback update
2026-07-15 06:26:04 +00:00
PaulandGitHub ed5555018b Support additional capabilities for grok based on benchmark (#325858) 2026-07-15 06:25:12 +00:00
Raymond ZhaoandGitHub 19e37d7dd4 chore: bump colliding package versions and morgan (#325868) 2026-07-14 22:56:30 +00:00
Kyle CutlerandGitHub a07fb2914c MSRC Fixes (#325847) 2026-07-14 11:54:29 -07:00
Anisha AgarwalandGitHub aad013aeec Remove gating for search subagent with GPT/Anthropic (#325806)
removed is gpt or anthropic enabled check for search subagent
2026-07-14 17:58:13 +00:00
d4bfecdaa8 chat: normalize tool call IDs across model switches (#325813)
* chat: normalize tool call IDs across model switches

Kimi requires function-indexed tool call IDs, while Anthropic accepts only a restricted character set. Normalize outbound request copies for each provider without mutating stored conversation history.

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

* chat: avoid collisions in normalized tool call IDs

Reserve valid IDs before allocating sanitized Anthropic IDs, then reuse the request-scoped mapping for matching tool results.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-14 17:11:45 +00:00
Dirk BäumerandGitHub 7e4e91cab4 Adapt to TypeScript 7 (#325757)
* Adapt TypeScript 7

* Ensure that we always call TS7 from spawnTsgo

* Fix package lock file

* tsc - tsc6

* More tsc -> tsc6

* More TSGO conversion

* More moves from tsgo -> tsc

* Fix tsgo resolving in extension folder

* Call TS7 compiler directly

* Update package-lock.json

* Remove tsc:version again
2026-07-14 12:34:04 +02:00
Vritant BhardwajandGitHub d8749b4212 Merge pull request #325735 from microsoft/mixed-ant 2026-07-14 00:26:31 -07:00