The VS Code agent host is a process not a panel
August 25, 2026
The VS Code agent host is a dedicated process. Copilot, Claude, and Codex run there over the Agent Host Protocol. The chat panel is a client of that process, not the place the session lives.
The wrong model is the sidebar as the agent. That is the old extension-host world, where the loop sat next to Copilot Chat and died with the window. This walkthrough turns the host on, picks a harnessharnessThe surrounding tooling and control logic that runs a model in a loop, deciding how it reads files, calls tools, and hands off work, separate from the model itself.See also execution subagent, tasks primitive that actually sits on it, and proves a second window attaches to the same session.
What you need first#
Pin the build. The 1.130 notes shipped 22 July 2026. The dedicated process showed up a week earlier in 1.129. Use 1.130 or later so Claude and Codex worktrees exist on the host.
Desktop VS Code. The local host does not run in the web workbench. vscode.dev can be a client of a remote host. It is not the process on your laptop.
You also need credentials the selected harness accepts. Copilot wants GitHub. Codex on the host is experimental and off by default.
- VS Code 1.130 or later (Help, About)
- Desktop editor, not the web workbench as the host
- GitHub Copilot, Claude, or Codex credentials
- A Git repo with at least one commit if you will tick New Worktree
Turn the host process on#

Language servers already taught this shape. The editor is a client. The server is a process. The Agent Host Protocol is the same idea for agent sessions. Flip the wrong switch and you still have a pretty panel with a hollow back.
1. Enable chat.agentHost.enabled#
Open Settings and search agent host. Enable chat.agentHost.enabled. The 1.130 notes still name that id as the opt-in, then tell you to pick a harness from the dropdown.
The public AI settings table lists a pile of host siblings and still skips this master switch. Search anyway. If the row is grey, managed policy can own it. Confirm with whoever ships org settings before treating it as a missing extension.
{
"chat.agentHost.enabled": true
}2. Reload and read the harness dropdown#
Enablement is fixed at startup. Reload the window. Open Chat, start a new chat, then open the Session Target control.
CheckpointcheckpointA saved snapshot of a model's weights at a specific point in training or fine-tuning, the exact file that gets tested, released, or further modified.See also abliteration, frontier model. Copilot is in that list as a host harness. Local is still the extension host. Do not pick Local and call the job done. If the list looks unchanged, the toggle never stuck. Reload once more before you debug Claude.
Start a session on the host#

Copilot is the boring first harness, and that is the point. The harness docs put it on the Agent Host on your machine. Local stays in the extension host on purpose.
3. Pick Copilot as the Session Target#
Choose Copilot. The 1.130 notes say the host's Copilot agent is powered by the Copilot SDK, so behavior is aligned with Copilot CLI and the standalone Copilot app. Aligned, not a promise that every CLI flag exists in the panel.
Want Claude instead? Current defaults already prefer the host (chat.agents.claude.preferAgentHost and chat.agentHost.claudeAgent.enabled both true, both experimental). If Claude is missing from the list, flip those and restart the host process. Codex waits behind chat.agentHost.codexAgent.enabled, which still defaults to false.
4. Send a prompt and find the session in the list#
Type something cheap. List the files in this folder. Submit.
Checkpoint. The sessions list grows a row with a status and a harness name. That row is the session. The transcript is a view of it. If the row never appears, you are still on Local, or the host process did not come up after the reload.
Attach a second window#

This is the proof the title is betting on. One process. Two clients. Same session.
5. Open the Agents window#
Hit Open in Agents in the title bar, run Chat: Open Agents Window from the Command Palette, or start it from a terminal.
code --agentsThe Agents window is a dedicated client with a sessions list, a chat area, and a Changes panel. The Agents window docs say it shares sessions with the Chat view. It is still not the host.
6. Select the same session from the list#
Find the row you just started. Click it. The transcript should match. Type in one surface and watch the other. The architecture docs say the client gets an initial state snapshot, then ordered actions. That is how both windows stay in sync.
Now close the original editor window. The architecture docs say agent sessions are not tied to the lifetime of the window for their workspace. While the Agent Host remains running, an active turn can continue without a connected client. Reopen the Agents window or another editor. The row is still there.
Cursor shrinking while the terminal eats the IDE is adoption. CLI-shaped seats took the work. This is the editor growing a process so a CLI-shaped harness can live inside VS Code without dying when you close a pane. MCP went stateless is the other way a session slips out of the place you were staring at.
Give Claude and Codex a worktree#

Worktree isolation used to be a Copilot perk. 1.130 opened it to every harness on the host. If you only ever run Copilot, you can skip this step and still have the two-window proof. If you run Claude in parallel features, this is the 1.130 reason to care.
7. Check New Worktree on a Claude or Codex host session#
In the Agents window, New session. Session Target Claude (or Codex after the experimental flag). Check New Worktree. Pick the base branch. Send the prompt.
Checkpoint. Files and Changes point at a separate folder. The 1.130 notes say Claude and Codex sessions also run in a Git worktree, so you can spin parallel sessions in the same workspace regardless of harness.
The checkbox lives in the Agents window. Chat view sessions always use the current workspace. The harness docs say the repo needs a commit, and a new worktree starts from committed files. Uncommitted files and gitignored .env files stay behind unless you copy them in.
Worktree sessions use Bypass Approvals because the edits are off to the side. The same harness page says worktree isolation does not restrict commands or network access. Sandbox is a different switch.
When the host is off#

The failure is quiet, which is the whole insult. Chat still opens. Copilot still talks. You think you have the host because you have a panel. Host-only features just never show up. 1.130 says some features might only be available when an agent runs on it. There is no toast.
The architecture table is the checklist. Shared multi-window sessions, multiple chats per session, quick chats, and remote hosting exist only on the Agent Host. Assisted permissions in the picker is the same family. New Worktree for Claude and Codex is the same family. You will hit this if chat.agentHost.enabled never flipped, or if you reloaded before the setting saved.
- Claude missing. Flip
chat.agents.claude.preferAgentHostandchat.agentHost.claudeAgent.enabled, then restart the host process. - Codex off.
chat.agentHost.codexAgent.enableddefaults to false. The Chat view also wantschat.editor.codex.preferAgentHost. - Web workbench. Local host is a non-web process. The browser Agents window is a client of a remote host.
- Host (Local) does nothing. Issue 311308 reported that entry showing while the setting was disabled. Clicking it did not do much either. Reload after the real toggle.
- MCP vanished. The host reads
.mcp.jsonand~/.copilot/mcp-config.json. It does not read.vscode/mcp.jsonunless VS Code forwarded it. Interactive${input:...}servers do not forward. - Open tunnel. If the tunnel allows anonymous access, anyone who finds the URL can start sessions. Ugly if auto-approval is on.
A standalone host is optional for the two-window proof. When you want one, code agent host starts a server on localhost with a connection token. --tunnel exposes it through a dev tunnel. The architecture docs put that command next to remote sessions. Skip it until the Agents window already shows the session you started in the editor.
What you have now#
chat.agentHost.enabled is on. The Session Target lists Copilot or Claude on the host. The Agents window shows the same session you started in the editor. Optional, a Claude or Codex worktree sits beside the main tree.
The panel is still there. Treat it like an LSP client. The language server was never the editor tab, and the agent host is never the chat sidebar. Close the sidebar if you want. The process is the thing that has to stay up.
Agent host process
Does closing the chat panel kill the agent session?
Not if it is running on the agent host. The architecture docs say the session is not tied to the window. Close the editor, leave the host running, and the turn can continue. Reopen from another window or from the Agents window sessions list.
asked on code.visualstudio.com ↗Why is Claude missing from the host harness list?
The 1.130 notes name chat.agents.claude.preferAgentHost as the extra switch for Claude on the host. The current settings table defaults it to true, and chat.agentHost.claudeAgent.enabled also defaults to true. If Claude still sits on the Copilot Chat extension, flip both, then restart the host process.
Why does Agent Host (Local) appear when the setting is off?
That was a real bug. GitHub issue 311308 reported the Agent Host (Local) entry showing while chat.agentHost.enabled was disabled, and clicking it did not do much. The gate is still that setting. If the harness dropdown looks host-shaped and nothing attaches, reload after the toggle. Enablement is fixed at startup.
Can Claude and Codex use New Worktree, or is that still Copilot-only?
On the host, 1.130 opened worktree isolation to Claude and Codex. The checkbox lives in the Agents window, not the Chat view. Codex still needs chat.agentHost.codexAgent.enabled first, because that one defaults to false.
Where did Assisted permissions go in the picker?
Assisted permissions is host-only. Enable chat.assistedPermissions.enabled. Stable defaults that to false. If the host is off, the picker never grows that row. The picker itself is a different walkthrough. This post only cares that the row is a host canary.
