Skip to content

sessions: gate Copilot CLI/Claude agent-host preferences on chat.agentHost.enabled#323567

Merged
sandy081 merged 1 commit into
mainfrom
agents/disable-settings-on-enable
Jun 29, 2026
Merged

sessions: gate Copilot CLI/Claude agent-host preferences on chat.agentHost.enabled#323567
sandy081 merged 1 commit into
mainfrom
agents/disable-settings-on-enable

Conversation

@sandy081

Copy link
Copy Markdown
Member

What

Make chat.agentHost.enabled the master gate for two agent-host preference settings consumed by the Copilot Chat sessions provider in the Agents window:

  • chat.agents.copilotCli.hideExtensionHost
  • chat.agents.claude.preferAgentHost

When chat.agentHost.enabled is off, these two settings are no longer respected (treated as false).

Why

Both settings tell the Copilot Chat sessions provider to step aside so the agent host can surface its own entry in its place:

  • hideExtensionHost hides the Extension Host Copilot CLI so only the Agent Host Copilot CLI shows.
  • preferAgentHost (Claude) makes this provider yield so the agent host's Claude registration shows instead.

But when the agent host is disabled it never registers those replacement entries. Honoring the preferences in that state would make the Copilot CLI / Claude entries disappear entirely from the picker. Gating them on chat.agentHost.enabled keeps the entries visible until the agent host is actually enabled to take over.

Changes

  • copilotChatSessionsProvider.ts: _isClaudeAvailable() and _isCopilotCliAvailable() now also check chat.agentHost.enabled (via a small shared _isAgentHostEnabled() helper). Availability is computed live from configuration; the cached fields were removed and the config-change handler simply re-collects/re-sorts session types when any relevant setting changes.
  • agentHost.config.contribution.ts / chat.shared.contribution.ts: updated the two setting descriptions to note they require #chat.agentHost.enabled#.
  • Added unit tests covering that each preference is ignored while the agent host is disabled, and that toggling chat.agentHost.enabled live-applies the gate.

Notes for reviewers

  • This is a read-time override: the user's stored values are untouched, just ignored while the master is off.
  • chat.agentHost.defaultSessionsProvider was already gated on chat.agentHost.enabled (the local agent host provider only registers when enabled), so no change was needed there.

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

…tHost.enabled

The `chat.agents.copilotCli.hideExtensionHost` and
`chat.agents.claude.preferAgentHost` settings tell the Copilot Chat sessions
provider to step aside so the agent host can surface its own Copilot CLI / Claude
entries. When `chat.agentHost.enabled` is off the agent host never registers
those entries, so honoring the preferences would make the entries disappear
entirely. Gate both on `chat.agentHost.enabled` so they are only respected when
the agent host is actually enabled, and document the requirement on the settings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 29, 2026 17:56
@sandy081 sandy081 self-assigned this Jun 29, 2026
@sandy081 sandy081 enabled auto-merge (squash) June 29, 2026 17:56
@sandy081 sandy081 added the ~release-cherry-pick Trigger: cherry-pick this PR to the latest release branch label Jun 29, 2026
@sandy081 sandy081 added this to the 1.127.0 milestone Jun 29, 2026
@vs-code-engineering

Copy link
Copy Markdown
Contributor

This PR will be automatically cherry-picked to release/1.127 when merged.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR makes chat.agentHost.enabled the master gate for two agent-host preference settings used by the Copilot Chat sessions provider in the Agents window, preventing Copilot CLI / Claude entries from disappearing when the agent host is disabled.

Changes:

  • Gated Claude and Copilot CLI availability in CopilotChatSessionsProvider on chat.agentHost.enabled, ignoring the two “yield/hide” preferences while the agent host is off.
  • Updated settings UI descriptions to explicitly state the preferences require chat.agentHost.enabled.
  • Added/updated unit tests around the new gating behavior and live config toggling.
Show a summary per file
File Description
src/vs/workbench/contrib/chat/browser/chat.shared.contribution.ts Updates Claude “prefer agent host” setting description to note the chat.agentHost.enabled requirement.
src/vs/platform/agentHost/common/agentHost.config.contribution.ts Updates Copilot CLI “hide extension host” setting description to note the chat.agentHost.enabled requirement.
src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsProvider.ts Applies the master gate in runtime availability checks and updates config-change handling.
src/vs/sessions/contrib/providers/copilotChatSessions/test/browser/copilotChatSessionsProvider.test.ts Adds tests for gate behavior when disabled and for live-updating when the master gate toggles.

Review details

  • Files reviewed: 4/4 changed files
  • Comments generated: 2
  • Review effort level: Low

@sandy081 sandy081 merged commit 7a3a960 into main Jun 29, 2026
30 checks passed
@sandy081 sandy081 deleted the agents/disable-settings-on-enable branch June 29, 2026 18:11
@vs-code-engineering vs-code-engineering Bot added release-cherry-pick Automated cherry-pick between release and main branches and removed ~release-cherry-pick Trigger: cherry-pick this PR to the latest release branch labels Jun 29, 2026
This was referenced Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-cherry-pick Automated cherry-pick between release and main branches

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants