Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Configurable ChatNew to Visual Studio Code? Get it now.
Configurable Chat

Configurable Chat

bpcarson

| (0) | Free
A configurable, provider-agnostic chat assistant for VS Code for the Web.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Configurable Chat for VS Code Web

A browser-compatible VS Code extension that adds a configurable chat view. It supports GitHub Copilot through VS Code's built-in account and consent flow, OpenAI-compatible and Anthropic APIs, and an optional local LiteRT runtime for Google Gemma-compatible model packages. Assistant responses render Markdown, including lists, links, and fenced code blocks.

Run locally

  1. Run npm install.
  2. Run npm run watch.
  3. Launch the Run Extension configuration from VS Code. For a browser host, use the web extension development host supplied by VS Code.

The Chat view appears in the Activity Bar. Use the gear icon in the Chat view header, or the Configurable Chat: Open Settings command, to configure the provider, model, profiles, base URLs, system prompt, context limits, skills, MCP servers, and inline completions in the regular VS Code Settings UI.

Press Enter or use the arrow in the lower-right of the prompt to send. During generation, the arrow becomes a stop icon. Use Shift+Enter for a newline and /clear to clear the conversation. The bottom row also provides a model-profile selector, reasoning-effort selector for compatible OpenAI-style models, and a + menu for active-editor context, additional files, tool discovery, and agent permission mode.

Browser UI tests

Run npm run test:e2e to build the extension, download and serve a stable VS Code for Web build locally with @vscode/test-web, and exercise it in Chromium with Playwright. The suite opens the extension from the Activity Bar, exercises the /help command, verifies the composer model/context controls, and captures the complete VS Code Web window.

GitHub Actions uploads screenshots of both the normal composer and the open context/agent-permissions menu, plus failure screenshots, traces, videos, and the Playwright HTML report as the chat-for-web-playwright-* artifact. The test never signs into GitHub and does not require provider credentials.

The extension ships with editable OpenAI profiles luna, terra, and sol, plus Claude Opus 5 and Sonnet 5. Named model profiles can be added, changed, or removed with configurableChat.profiles:

[
	{
		"id": "terra",
		"label": "terra",
		"provider": "openai-compatible",
		"model": "gpt-5.6-terra",
		"reasoningEffort": "medium"
	},
	{
		"id": "claude",
		"label": "Claude",
		"provider": "anthropic",
		"model": "claude-sonnet-4-5",
		"baseUrl": "https://api.anthropic.com/v1"
	}
]

Set configurableChat.defaultProfile to the profile used by chat and inline completion. API keys are stored per profile when one is selected, with provider-level keys retained as fallbacks. When profiles are empty, the original provider and model settings remain in effect.

Providers

  • GitHub Copilot: set configurableChat.provider to copilot and the model to auto (or make a Copilot profile the default), then run /connect or send a message. VS Code handles GitHub sign-in and asks for one-time consent before the extension can use Copilot models. No API key is stored by this extension. Requests use the signed-in user's existing Copilot model access and quota.
  • OpenAI-compatible: the default provider sends Chat Completions requests to configurableChat.baseUrl. It works with OpenAI and any compatible gateway. Store its key with /connect or Configurable Chat: Configure Credentials; it is held in VS Code Secret Storage instead of workspace settings.
  • Anthropic: select anthropic, set configurableChat.model to a Claude model ID, and store a separate Anthropic key with /connect or Configurable Chat: Configure Credentials. Requests use Anthropic's browser-enabled Messages API.
  • LiteRT: select litert, then set configurableChat.model to the model ID exposed by your LiteRT model distribution, such as the desired Google Gemma package. The model is downloaded and executed in the browser host, so its availability and hardware requirements depend on that distribution and the user's browser.

The + menu can attach the active editor or one or more selected files, up to the configured context limit, alongside each prompt. It also exposes the tools currently available to the agent.

Tool activity

Agent tool calls appear inline as collapsible cards. Each card shows its current waiting, running, completed, denied, or failed state. Expand a card to inspect the tool source, JSON arguments, returned context or result, execution time, and errors. Large results are truncated only in the chat display; the complete result is still provided to the agent. Verbose JSON tracing remains available through Output > Configurable Chat when tracing is enabled.

Workspace instructions

The root AGENTS.md in every workspace folder is loaded automatically on each message. If an editor is active, the extension also loads nested AGENTS.md files from the workspace root down through that file's ancestor directories. Files are added root-first, so the nearest nested instructions are the most specific. The combined size is limited by configurableChat.instructions.maxCharacters.

Agent Skills

The extension discovers Agent Skills from .agents/skills and _agents/skills in each workspace folder. Search paths are configurable with configurableChat.skillsPaths; when names collide, the first configured path wins.

Each skill must contain a SKILL.md with name and description YAML frontmatter followed by Markdown instructions. Use /skills [query] to refresh and list skills, /skill <name> to activate one for subsequent turns, and /skill off to deactivate it. /skill <name> <prompt> activates it and sends a prompt immediately. Skill summaries are disclosed to the model, while full instructions are loaded only for the active skill.

Other commands are /connect, /clear, /stop, /attach, /detach, /model, and /help.

Inline Code Completion

Inline completion is available for text editors and notebook cells through VS Code's native ghost-text interface. It is disabled by default to avoid unexpected model usage. Enable it with Configurable Chat: Toggle Inline Completions or configurableChat.completion.enabled.

Completions reuse the configured provider and model. Remote API providers use their stored key, while GitHub Copilot uses VS Code's account consent flow, but use an independent system prompt and bounded prefix/suffix context. VS Code cancellation is forwarded to the provider whenever a completion becomes stale. The prompt and context limits are configurable under configurableChat.completion.

MCP Servers

Remote MCP tools are supported through the official Model Context Protocol SDK and Streamable HTTP transport. Configure servers with configurableChat.mcpServers:

[
	{
		"name": "deepwiki",
		"url": "https://mcp.deepwiki.com/mcp",
		"enabled": true
	}
]

Use /mcp to connect or retry and show server status, /tools [query] to list discovered tools, and /tool <server/tool> <json> to invoke a tool manually. Enabled tools are also disclosed to the model for a bounded tool-use loop. Agent actions are controlled by configurableChat.toolApprovalMode: Ask displays Allow Once before workspace file edits and remote MCP calls; Auto permits them without confirmation. Built-in read-only discovery, search, reading, and Markdown tools always run automatically. Tool results are returned to the model as untrusted context.

Every agent turn receives the available tool catalog. OpenAI-compatible providers use native function/tool calls with meaningful stable names and keep tool_choice set to auto, so the model decides when evidence or an action is needed. Native assistant tool calls and matching tool results are preserved in the conversation sent back to the provider. When Chat Completions rejects reasoning-effort function tools and directs the client to Responses, the same agent run continues through the Responses API without dropping the selected reasoning effort or returned reasoning items. Providers without native integration use a textual tool-call envelope as a fallback.

All tools discovered from enabled MCP servers are available to the bounded tool-use loop. Use VS Code Settings to add, remove, or disable MCP servers.

VS Code Web cannot start local stdio MCP servers. Endpoints must use HTTPS Streamable HTTP and provide CORS headers that allow the browser host. The initial integration supports unauthenticated endpoints; OAuth and secret-backed custom headers remain future work.

Agent tracing

Set configurableChat.trace.enabled to write verbose JSON events to Output > Configurable Chat. Events include the provider turn and tool-selection mode, provider responses, tool arguments, tool results, and errors. API keys are never added to trace events.

Set configurableChat.trace.saveToWorkspace to also write the current session as JSONL under .configurable-chat/traces/ in the first workspace folder. Both destinations can contain prompts, AGENTS.md content, and source returned by tools; keep tracing disabled when that content should not be retained. configurableChat.trace.maxCharacters bounds each string field.

Parity Roadmap

The official jupyterlite/ai project under refs/ai is the behavioral reference. Work is prioritized as follows:

  1. Skills and /skills
  2. Inline code completion (initial provider complete; notebook-wide context remains)
  3. MCP integration (initial remote Streamable HTTP client complete; OAuth remains)
  4. Settings-only model and provider configuration (complete)
  5. Browser retrieval tools
  6. Diff and review workflows
  7. Conversation save and restore
  8. Common slash commands
  9. Context usage display
  10. Configurable custom providers
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft