cclients.dev

Search clients.dev

Search clients and configuration surfaces

All clients

Visual Studio Code

Editor

Microsoft

Microsoft's code editor with GitHub Copilot chat and agent mode built in — configured via .vscode/mcp.json, settings.json, instructions files, prompt files, skills, and hooks.

MCP

Supported

Configure MCP servers in mcp.json under the servers key (not mcpServers). Supports stdio, Streamable HTTP, and legacy SSE, plus an MCP server gallery in the Extensions view and optional sandboxing for local servers.

Verified 2026-07-12Docs
Transportsstdiohttpsse
Authheaders

Config files

PathScopeFormatKey
.vscode/mcp.json

Check into source control to share servers with your team.

Projectjsonservers
<VS Code profile>/mcp.json

Open with the MCP: Open User Configuration command; lives in the VS Code user-profile folder (e.g. ~/Library/Application Support/Code/User/mcp.json on macOS). Each profile can have its own servers.

Globaljsonservers

Fields

FieldTypeDescription
type"stdio" | "http" | "sse"Server transport. stdio for local command servers, http (Streamable HTTP) or sse (legacy) for remote servers.
commandstringCommand to start a local (stdio) server.
argsstring[]Arguments passed to the command.
envrecord<string, string>Environment variables for the server. Avoid hardcoding secrets; use input variables or environment files.
urlstringEndpoint URL for a remote server.
headersrecord<string, string>HTTP headers for a remote server.
sandboxEnabledbooleanRun a local stdio server in an isolated sandbox (macOS and Linux). Tool calls from sandboxed servers are auto-approved.

Capabilities

ToolsSupported
PromptsSupported
ResourcesSupported
SamplingSupported
AppsSupported

Examples

Remote and local servers
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp"
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@microsoft/mcp-server-playwright"]
    }
  }
}
Sandboxed local server
{
  "servers": {
    "myServer": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@example/mcp-server"],
      "sandboxEnabled": true
    }
  },
  "sandbox": {
    "filesystem": { "allowWrite": ["${workspaceFolder}"] },
    "network": { "allowedDomains": ["api.example.com"] }
  }
}
  • Servers live under the servers key (not mcpServers).
  • Servers can also be installed from the MCP gallery (search @mcp in the Extensions view), added via MCP: Add Server, or via the code --add-mcp CLI flag.
  • MCP servers can be configured in devcontainer.json under customizations.vscode.mcp.servers.
  • chat.mcp.discovery.enabled can auto-discover MCP configs from other apps (e.g. Claude Desktop).
  • New or changed servers require an explicit trust confirmation before they start.
  • On macOS and Linux, local stdio servers can be sandboxed with sandboxEnabled plus a top-level sandbox object (filesystem/network rules).

Skills

Supported

SKILL.md Agent Skills (open standard) loaded on demand from project and personal skill folders, including Claude- and .agents-compatible locations. Skills double as slash commands in chat.

Verified 2026-07-12Docs
Invoke/skill-name

Config files

PathScopeFormatKey
.github/skills/<name>/SKILL.md
Projectmarkdown
.claude/skills/<name>/SKILL.md

Claude-compatible project location.

Projectmarkdown
.agents/skills/<name>/SKILL.md

Cross-agent project location.

Projectmarkdown
~/.copilot/skills/<name>/SKILL.md
Globalmarkdown
~/.claude/skills/<name>/SKILL.md

Claude-compatible personal location.

Globalmarkdown
~/.agents/skills/<name>/SKILL.md

Cross-agent personal location.

Globalmarkdown

Fields

FieldTypeDescription
name*stringUnique identifier. Lowercase letters, numbers, and hyphens only; must match the parent directory name; max 64 characters.
description*stringWhat the skill does and when to use it (drives automatic loading). Max 1024 characters.
argument-hintstringHint shown in the chat input when the skill is invoked as a slash command.
user-invocablebooleanWhether the skill appears in the / menu. Default true.
disable-model-invocationbooleanWhen true, the agent cannot auto-load the skill; it must be invoked via slash command. Default false.
context"fork"Experimental. Run the skill in a dedicated subagent context; only the final result returns to the parent agent. Requires github.copilot.chat.skillTool.enabled.

Examples

SKILL.md
---
name: webapp-testing
description: Guide for testing web applications using Playwright. Use this when asked to create or run browser-based tests.
---

# Web Application Testing with Playwright

1. Review the [test template](./test-template.js) for the standard test structure
2. Create a new test file in the `tests/` directory
3. Use role-based locators and add assertions
  • Enabled via chat.useAgentSkills (default true); extra locations via chat.agentSkillsLocations.
  • Progressive loading: only name/description at startup, the SKILL.md body when activated, and bundled files only when referenced.
  • Extensions can contribute skills via the chatSkills contribution point in package.json.
  • In monorepos, chat.useCustomizationsInParentRepositories discovers skills from the parent repository root.

Rules

Supported

Always-on instructions via .github/copilot-instructions.md, AGENTS.md, and CLAUDE.md, plus file-based *.instructions.md files that apply conditionally via applyTo glob patterns.

Verified 2026-07-12Docs

Config files

PathScopeFormatKey
.github/copilot-instructions.md

Single always-on file applied to all chat requests in the workspace.

Projectmarkdown
AGENTS.md

Always-on, cross-agent instructions in the workspace root; subfolder AGENTS.md files are experimental.

Projectmarkdown
CLAUDE.md

Claude-compatible always-on instructions (also .claude/CLAUDE.md and CLAUDE.local.md).

Projectmarkdown
.github/instructions/**/*.instructions.md

File-based instructions applied via applyTo glob or semantic match of the description.

Projectmarkdown
.claude/rules/*.md

Claude Rules format; uses a paths glob array instead of applyTo.

Projectmarkdown
~/.copilot/instructions/*.instructions.md

Personal instruction files; user-profile instructions can also live in VS Code user data and sync via Settings Sync.

Globalmarkdown

Fields

FieldTypeDescription
namestringDisplay name shown in the UI (.instructions.md frontmatter). Defaults to the file name.
descriptionstringShort description shown on hover in the Chat view; also used for semantic matching.
applyTostringGlob pattern (relative to the workspace root) that auto-applies the instructions to matching files. Use ** for all files; omit to require manual attachment.

Examples

Path-scoped instructions file
---
name: 'Python Standards'
description: 'Coding conventions for Python files'
applyTo: '**/*.py'
---
# Python coding standards
- Follow the PEP 8 style guide.
- Use type hints for all function signatures.
  • AGENTS.md support is controlled by chat.useAgentsMdFile (default true); nested AGENTS.md in subfolders is experimental (chat.useNestedAgentsMdFiles).
  • CLAUDE.md support (workspace root, .claude/CLAUDE.md, ~/.claude/CLAUDE.md, CLAUDE.local.md) is controlled by chat.useClaudeMdFile.
  • .claude/rules instruction files use a paths array (Claude Rules format) instead of applyTo.
  • GitHub organization-level instructions are discovered when github.copilot.chat.organizationInstructions.enabled is set.
  • Priority when instructions conflict: personal (user) > repository > organization.
  • Extra locations configurable via chat.instructionsFilesLocations; instruction folders are searched recursively.
  • Custom instructions are not used for inline completions as you type.

Hooks

Supported

Preview: JSON hook files run shell commands at agent lifecycle events. Hooks receive event JSON on stdin and can return JSON on stdout to block tools, decide permissions, or inject context.

Verified 2026-07-12Docs
EventsSessionStartUserPromptSubmitPreToolUsePostToolUsePreCompactSubagentStartSubagentStopStop

Config files

PathScopeFormatKey
.github/hooks/*.json
Projectjsonhooks
.claude/settings.json

Claude Code compatibility (also .claude/settings.local.json).

Projectjsonhooks
~/.copilot/hooks/*.json
Globaljsonhooks
~/.claude/settings.json

Claude Code compatibility. Workspace hooks take precedence over user hooks for the same event.

Globaljsonhooks

Fields

FieldTypeDescription
type*"command"Hook handler type.
command*stringShell command to run. Receives event JSON on stdin; may write JSON to stdout.
cwdstringWorking directory for the command.
envrecord<string, string>Environment variables for the command.
timeoutnumberTimeout in seconds. Default 30.
windows | linux | osxstringOS-specific command overrides, selected by the extension host platform.

Examples

Format after edits
{
  "hooks": {
    "PostToolUse": [
      {
        "type": "command",
        "command": "npx prettier --write ."
      }
    ]
  }
}
Block dangerous commands (PreToolUse output)
{
  "hookSpecificOutput": {
    "permissionDecision": "deny",
    "permissionDecisionReason": "Destructive command blocked by security policy"
  }
}
  • Preview feature; the configuration format may change.
  • Same hook format as Claude Code and Copilot CLI. Claude Code configs are read but matcher values are ignored (hooks run for all tools); Copilot CLI camelCase event names and bash/powershell fields are converted.
  • Exit code 0 parses stdout as JSON; exit code 2 blocks and shows stderr to the model; other codes are non-blocking warnings.
  • PreToolUse hooks can return hookSpecificOutput.permissionDecision (allow/deny/ask); SessionStart hooks can return additionalContext.
  • Extra locations via chat.hookFilesLocations; agent-scoped hooks in .agent.md frontmatter require chat.useCustomAgentHooks.
  • Organizations can disable hooks via enterprise policy.

Commands

Supported

Prompt files (.prompt.md) are reusable Markdown prompts invoked as slash commands in chat, with YAML frontmatter for agent, model, and tool selection.

Verified 2026-07-12Docs
Invoke/prompt-name

Config files

PathScopeFormatKey
.github/prompts/<name>.prompt.md
Projectmarkdown
<VS Code profile>/prompts/<name>.prompt.md

User prompt files live in VS Code user data (per profile); create them via the Chat: New Prompt File command.

Globalmarkdown

Fields

FieldTypeDescription
descriptionstringShort description of the prompt.
namestringSlash-command name. Defaults to the file name.
argument-hintstringHint text shown in the chat input field.
agentstringAgent used to run the prompt: ask, agent, plan, or a custom agent name.
modelstringLanguage model used when running the prompt. Defaults to the currently selected model.
toolsstring[]Tool or tool-set names available to this prompt. Use '<server>/*' to include all tools of an MCP server; unavailable tools are ignored.

Examples

Prompt file
---
agent: 'agent'
description: 'Generate a new React form component'
tools: ['search/codebase', 'vscode/askQuestions']
---
Your goal is to generate a new React form component based on our templates.

* Use `react-hook-form` for form state management
* Always define TypeScript types for your form data
  • Agent skills also appear as slash commands alongside prompt files.
  • Extra workspace locations via chat.promptFilesLocations; user prompt files sync via Settings Sync.
  • Bodies support Markdown links to workspace files, #tool: references, and ${input:variableName} placeholders.
  • Custom agents (.github/agents/*.agent.md, formerly chat modes) are a separate mechanism; a prompt file can target one via the agent frontmatter field.
  • Generate prompt files with /create-prompt or the Agent Customizations editor.

Settings

Supported

Agent behavior is configured in settings.json via chat.* and github.copilot.* keys: agent mode, tool approvals, sandboxing, MCP access, and discovery locations for instructions, prompts, skills, and hooks.

Verified 2026-07-12Docs

Config files

PathScopeFormatKey
.vscode/settings.json
Projectjsonc
<VS Code profile>/settings.json

e.g. ~/Library/Application Support/Code/User/settings.json on macOS.

Globaljsonc

Fields

FieldTypeDescription
chat.agent.enabledbooleanEnable or disable agent mode. Default true; can be managed at the organization level.
chat.agent.maxRequestsnumberMaximum number of requests the agent can make per turn. Default 25.
chat.tools.terminal.autoApproverecord<string, boolean>Which terminal commands are auto-approved in agent mode; supports /regex/ keys. Dangerous commands (rm, curl, chmod, ...) default to false.
chat.tools.edits.autoApproverecord<string, boolean>Glob patterns for files that require approval before edits are applied.
chat.tools.global.autoApprovebooleanAuto-approve all tools (disables critical security protections). Default false; org-manageable.
chat.mcp.accessbooleanManage which MCP servers can be used. Org-manageable.
chat.mcp.discovery.enabledbooleanAuto-discover MCP server configuration from other applications. Default false.
chat.mcp.serverSamplingobjectWhich models are exposed to MCP servers for sampling.
chat.useAgentsMdFilebooleanUse AGENTS.md files as always-on chat context. Default true.
chat.useClaudeMdFilebooleanUse CLAUDE.md files as always-on custom instructions. Default true.
chat.instructionsFilesLocationsrecord<string, boolean>Folders searched (recursively) for *.instructions.md files. Default includes .github/instructions.
chat.promptFilesLocationsrecord<string, boolean>Folders searched for .prompt.md files. Default includes .github/prompts.
chat.useAgentSkillsbooleanEnable Agent Skills support. Default true.
chat.agentSkillsLocationsrecord<string, boolean>Folders searched for skills. Defaults include .github/skills, .claude/skills, ~/.copilot/skills, ~/.claude/skills.
chat.hookFilesLocationsrecord<string, boolean>Preview. Additional hook file locations (folders of *.json or individual files).
chat.agent.sandbox.enabled"off" | "on" | "allowNetwork"Preview. Sandboxing for agent terminal commands (macOS/Linux). Sandboxed commands are auto-approved. Org-manageable.
github.copilot.enablerecord<string, boolean>Enable or disable inline suggestions per language.
github.copilot.chat.codeGeneration.useInstructionFilesbooleanAutomatically add .github/copilot-instructions.md to chat requests. Default true.
chat.disableAIFeaturesbooleanDisable and hide all built-in AI features and the Copilot extensions.

Examples

Agent-related settings
{
  "chat.agent.maxRequests": 50,
  "chat.tools.terminal.autoApprove": {
    "npm test": true,
    "/^git (status|diff)/": true
  },
  "chat.useAgentsMdFile": true,
  "chat.instructionsFilesLocations": {
    ".github/instructions": true
  }
}
  • Standard VS Code settings precedence applies: user settings, then workspace .vscode/settings.json.
  • Several agent settings (e.g. chat.agent.enabled, chat.mcp.access, chat.tools.global.autoApprove) can be managed centrally by organization policy.
  • settings.json supports comments (JSONC).