MCPInstall

otel

OpenTelemetry guidance for VS Code agent experiences. Use when changing Agent Host telemetry, local Copilot Chat telemetry, provider-native spans or metrics, OTel settings and managed policy, trace persistence/export, or monitoring documentation.

Installs
125
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/microsoft/vscode --skill otel
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads otel automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

OpenTelemetry in VS Code

Start by identifying the execution surface. VS Code has separate OTel pipelines with different owners and configuration:

SurfaceProcess and producerConfigurationAuthoritative VS Code document
Agent Host sessions (Copilot, Claude, Codex)Provider-native telemetry routed by the Agent Host utility processchat.agentHost.otel.*src/vs/platform/agentHost/OTEL.md
Local Copilot ChatCopilot Chat extension host and IOTelServicegithub.copilot.chat.otel.*extensions/copilot/docs/monitoring/agent_monitoring.md

Do not combine these pipelines or assume that a setting for one configures another.

Current architecture

Agent Host is the current execution architecture for Copilot, Claude, and Codex agent sessions. It owns routing, optional trace interception and SQLite persistence, resource normalization, and cross-provider trace context. Each provider owns its native instrumentation.

The extension-host Copilot CLI source remains as a fallback when Agent Host is unavailable and to support legacy-session migration. It is normally hidden when Agent Host is available and is not the current Agent Host architecture. Do not use it as a model for new work.

Local Copilot Chat remains a separate user-visible extension-host surface. Its foreground chat, LLM, tool, hook, metric, and event instrumentation continues to use IOTelService under extensions/copilot/src/platform/otel/.

Runtime version discipline

Copilot's native OTel signal contract lives in github/copilot-agent-runtime, not in VS Code's TypeScript attribute constants. Before auditing or changing the integration:

  1. Read the versions of @github/copilot-sdk and @github/copilot from the root package-lock.json.
  2. Resolve the matching immutable runtime tag and commit.
  3. Read the runtime monitoring reference and implementation at that revision.
  4. Use runtime main only after confirming that the relevant files are unchanged from the bundled revision.

The runtime's docs/developer-docs/monitor.md is exhaustive for native Copilot spans, attributes, span events, metrics, protocols, environment variables, content capture, TLS, and managed settings. Read it at the revision corresponding to the bundled package and link to that immutable revision in investigation or review evidence rather than copying its signal tables into VS Code documentation.

Ownership map

Agent Host integration

src/vs/platform/agentHost/
├── OTEL.md
├── common/
│   ├── agentService.ts                         # setting IDs, env names, settings → env translation
│   └── otel/agentHostOTelService.ts            # service contract and synthetic span names
├── electron-main/electronAgentHostStarter.ts   # Electron spawn-time env binding
├── node/
│   ├── nodeAgentHostStarter.ts                  # server spawn-time env binding
│   ├── otel/agentHostOTelService.ts             # pass-through and DB-mode routing
│   ├── copilot/                                 # Copilot SDK configuration and trace context
│   ├── claude/                                  # Claude launch environment
│   └── codex/                                   # Codex launch overrides
└── test/node/otel/                              # pipeline integration tests

Shared transport and persistence live under:

src/vs/platform/otel/
├── common/                                      # normalized span data and shared attributes
└── node/
    ├── otlp/                                    # receiver, decoder, outbound forwarders
    └── sqlite/                                  # persistent span store

Agent Host supports two routing modes:

  • Pass-through: provider SDKs export directly to the configured destination.
  • DB mode: provider traces use a private OTLP/HTTP JSON loopback, are decoded into SQLite, and may be forwarded to a compatible external destination. Provider logs and metrics bypass the trace loopback.

Read src/vs/platform/agentHost/OTEL.md before changing either mode.

Local Copilot Chat

extensions/copilot/src/platform/otel/
├── common/                                      # IOTelService, config, attributes, events, metrics
└── node/                                        # SDK implementation and exporters

extensions/copilot/src/extension/
├── prompt/node/chatMLFetcher.ts                 # chat spans
├── intents/node/toolCallingLoop.ts              # invoke_agent spans
├── tools/vscode-node/toolsService.ts            # execute_tool spans
├── chat/vscode-node/chatHookService.ts           # execute_hook spans
├── byok/vscode-node/                            # BYOK chat spans
└── trajectory/vscode-node/                      # Agent Debug Log conversion

For extension-emitted attributes, use constants from extensions/copilot/src/platform/otel/common/genAiAttributes.ts. Those constants are not authoritative for provider-native Agent Host telemetry.

Configuration checklist

When changing Agent Host configuration:

  1. Update the setting registration in common/agentHostStarter.config.contribution.ts.
  2. Update setting IDs, environment names, and buildAgentHostOTelEnv() in common/agentService.ts.
  3. Update readAgentHostOTelEnv() or provider launch translation as applicable.
  4. Preserve precedence deliberately: enterprise managed policy, inherited environment, and local settings are separate channels.
  5. Update src/vs/platform/agentHost/OTEL.md.
  6. Add focused translation and integration tests.
  7. Invoke the policy-and-managed-settings skill for any enterprise control.

When changing local Copilot Chat configuration:

  1. Update extensions/copilot/package.json.
  2. Update resolveOTelConfig() in extensions/copilot/src/platform/otel/common/otelConfig.ts.
  3. Update agent_monitoring.md.
  4. Add focused configuration tests.

Never add a new VS Code setting merely to mirror a new runtime-owned managed setting. Follow the runtime-managed-settings ownership rules.

Signal and routing checklist

For Agent Host provider-native signals:

  1. Make the signal change in the provider/runtime repository that owns it.
  2. Update that provider's authoritative signal reference.
  3. Update VS Code only when routing, normalization, persistence, parent context, or host-produced metadata changes.
  4. Confirm pass-through and DB mode behavior separately.
  5. Confirm whether the signal is a trace, metric, or log. Only traces enter the Agent Host loopback and SQLite store.
  6. Test the exact bundled provider version.

For host-produced spans:

  • Keep names and attributes in common/otel/agentHostOTelService.ts or shared platform constants.
  • Preserve service.namespace=vscode.agent-host while retaining distinct provider service names.
  • Treat titles, prompts, responses, tool arguments, file paths, commands, and raw server names as sensitive content.
  • Gate sensitive content on the effective content-capture policy and apply explicit bounds where required.
  • Propagate W3C traceparent and tracestate through the provider's supported boundary.

For local Copilot Chat signals:

  • Depend on IOTelService, not directly on an OTel SDK from consumers.
  • Use standard gen_ai.* keys when they exist.
  • Put new Copilot-specific attributes under github.copilot.*; do not add new copilot_chat.* keys.
  • Preserve documented legacy keys when existing consumers require dual emission.
  • Decide explicitly whether a new operation is exportable.
  • Keep Agent Debug Log-only records out of user OTLP and SQLite export.
  • Pass free-form content through truncateForOTel with the configured maximum.

Provider boundaries

Do not claim one protocol matrix for every Agent Host provider:

  • Copilot runtime owns its native OTLP/HTTP JSON/protobuf behavior and does not support OTLP/gRPC.
  • Claude receives OTel configuration through its launch environment.
  • Codex receives launch-time otel.* overrides.
  • Agent Host's DB loopback is always OTLP/HTTP JSON.
  • External protobuf and gRPC traces cannot be transcoded by Agent Host and therefore remain local in DB mode.

Check the provider launch code and bundled provider version before documenting support.

Documentation rules

  • Keep current Agent Host architecture and data flow in src/vs/platform/agentHost/OTEL.md.
  • Keep local extension-host usage in extensions/copilot/docs/monitoring/agent_monitoring.md.
  • Keep exhaustive native Copilot signals in the runtime repository.
  • Keep this skill procedural. Do not duplicate complete settings, environment-variable, attribute, event, or metric tables here.
  • Use immutable commit permalinks when citing cross-repository evidence in issues and pull requests. Avoid version-specific links in evergreen guidance unless the update process owns keeping them current.
  • If executable source and documentation disagree, verify with tests and call out the discrepancy rather than silently selecting one.

Validation

Choose the smallest checks that cover the change.

Agent Host examples:

./scripts/test.sh --grep "AgentHostOTel\|agent host.*OTel"
./scripts/test-integration.sh --run src/vs/platform/agentHost/test/node/otel/agentHostOTelService.integrationTest.ts

Local Copilot Chat examples, from extensions/copilot/:

npx tsc --noEmit --project tsconfig.json
npm test -- --grep "OTel"

For documentation-only changes, verify:

  • every relative link resolves;
  • setting and command IDs exist in source;
  • environment-variable names match translation and parsing code;
  • provider/runtime claims match the bundled versions;
  • Mermaid diagrams render;
  • no current document directs contributors to deprecated extension-host CLI architecture.

Anti-patterns

  • Treating deprecated extension-host Copilot CLI code as the current architecture.
  • Copying the runtime's exhaustive signal catalog into VS Code docs.
  • Assuming runtime main matches the package bundled by VS Code.
  • Describing Agent Host and local Copilot Chat settings as interchangeable.
  • Sending metrics or logs through the trace-only Agent Host loopback.
  • Claiming all providers support the same OTLP protocols.
  • Emitting sensitive content without the effective capture-content gate.
  • Using raw attribute strings where the owning component provides constants.
  • Adding debug-only spans under an exportable operation without an explicit non-export contract.

FAQ

What does the otel skill do?

OpenTelemetry guidance for VS Code agent experiences. Use when changing Agent Host telemetry, local Copilot Chat telemetry, provider-native spans or metrics, OTel settings and managed policy, trace persistence/export, or monitoring documentation.

How do I install otel?

Run npx skills add https://github.com/microsoft/vscode --skill otel in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/otel/ (personal) or .claude/skills/otel/ (project).

Which AI agents can use otel?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is otel safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains otel?

It is published by microsoft in microsoft/vscode, and it is an official skill from the maker of the technology it covers. It has 125 recorded installs.

More from microsoft/vscode

View all →

memory-leak-audit

microsoft/vscode

Audit code for memory leaks and disposable issues. Use when reviewing event listeners, DOM handlers, lifecycle callbacks, or fixing leak reports. Covers addDisposableListener, Event.once, MutableDisposable, DisposableStore, and onWillDispose patterns.

OfficialSecurity3.2K installs

azure-pipelines

microsoft/vscode

Use when validating Azure DevOps pipeline changes for the VS Code build. Covers queueing builds, checking build status, viewing logs, and iterating on pipeline YAML changes without waiting for full CI runs.

OfficialDevOps & Cloud3.2K installs

accessibility

microsoft/vscode

Primary accessibility skill for VS Code. REQUIRED for new feature and contribution work, and also applies to updates of existing UI. Covers accessibility help dialogs, accessible views, verbosity settings, signals, ARIA announcements, keyboard navigation, and ARIA labels/roles.

OfficialFrontend & Design3.2K installs

sessions

microsoft/vscode

Core principles and workflow router for changes to the Agents Window under src/vs/sessions.

OfficialProductivity & Automation3.1K installs

author-contributions

microsoft/vscode

Identify all files a specific author contributed to on a branch vs its upstream, tracing code through renames. Use when asked who edited what, what code an author contributed, or to audit authorship before a merge. This skill should be run as a subagent — it performs many git operations and returns a concise table.

OfficialAI & Agents3K installs

update-screenshots

microsoft/vscode

Update the committed blocks-ci screenshot hashes after the "Screenshots & Tests" check fails, or investigate a screenshot diff reported on a PR. Use when asked to update, accept, or refresh component screenshot baselines from CI. This skill should be run as a subagent.

OfficialDevOps & Cloud3K installs

Popular devops & cloud skills

View category →

microsoft-foundry

microsoft/azure-skills

Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure

OfficialDevOps & Cloud579.1K installs

azure-diagnostics

microsoft/azure-skills

Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.

OfficialDevOps & Cloud569.8K installs

azure-prepare

microsoft/azure-skills

Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.

OfficialDevOps & Cloud569K installs

azure-ai

microsoft/azure-skills

Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.

OfficialDevOps & Cloud568.8K installs

azure-deploy

microsoft/azure-skills

Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.

OfficialDevOps & Cloud568.6K installs

azure-validate

microsoft/azure-skills

Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.

OfficialDevOps & Cloud568K installs