copilot, the GitHub Copilot command line tool. Version 1.0.41 or later.code, Visual Studio Code, for the GitHub Copilot Chat extension inside it.
langwatch copilotorlangwatch codestarts the tool and sets up the connection on the first run. Use it on a machine you work on.langwatch instrument copilotorlangwatch instrument codewrites the same setup and exits. Use it on a server, or when the telemetry must go to a team project.
Before you start
- Install the GitHub Copilot command line tool, Visual Studio Code, or both.
- Install the LangWatch command line tool:
npm install -g langwatch - Create an account at app.langwatch.ai, or run your own instance with
npx @langwatch/server.
Run Copilot through the wrapper
LangWatch remembers the answer, so later runs do not ask again. Everything else is unchanged:
langwatch copilot accepts the same flags and the same subcommands as copilot, and it returns the same exit code.
For Copilot Chat inside Visual Studio Code, start the editor the same way:
Set up a machine without starting the tool
langwatch instrument copilot writes the connection and exits. A plain copilot run on that machine then sends its telemetry to LangWatch. This is the setup for a server that holds many agents, for a machine image, or for a configuration management run.
~/.zshrc, ~/.bashrc, or ~/.config/fish/config.fish. Open a new terminal after the command, or read the start file again, so the function is in place.
The shell function needs zsh, bash or fish. On Windows, start the tool with
langwatch copilot or langwatch code each time instead.code, LangWatch also removes the same settings from the Visual Studio Code integrated terminal configuration. The editor keeps the key, and the terminals inside it do not.
Choose where the telemetry goes
Pass one scope flag, and one only.
Replace
copilot with code for the Visual Studio Code extension. The two are separate, so you can send the command line tool to a team project and keep the editor on your personal workspace.
Send the telemetry to a team project
traces:create permission on the project. See Roles and permissions.
The wrapper accepts the same flags. This pins the project and then starts Copilot:
--project and --personal are LangWatch flags. LangWatch removes them from the command line before Copilot reads it, so they never reach the agent.
Set up a machine that never logs in
--key takes an ingest key (ik-lw-…). It needs no login and contacts no server, which makes it the option for a shared machine, a build agent, or a base image.
LANGWATCH_INGEST_KEY environment variable:
Move a tool back to your personal workspace
Remove the setup
The GitHub Copilot app
The standalone GitHub Copilot app is a separate surface with its own command:--tokens-only to collect the usage numbers and no content.
What you get in LangWatch
Open your personal page at/me, or open the project you pinned Copilot to.
- Sessions: one row per Copilot session, with the context it carried and how long it worked.
- Traces: one trace per turn, with the model, the tokens and the timing of each step.
- Content: the prompt of each turn and the response of the model.
Content and privacy
The setup turns onOTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT, which is what puts the prompt and the response on the wire. Without it a trace carries the tokens, the model and the timing, and no text.
Set OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false in your own environment to keep the content off. LangWatch never overrides that value, and it reports that the traces carry usage only.
Troubleshooting
Nothing arrives in LangWatch
Nothing arrives in LangWatch
Open a new terminal. The
copilot and code functions are read from the shell start file when a shell begins, so a terminal that was already open does not have them.Then check the Copilot version with copilot --version. Reporting needs 1.0.41 or later.The traces stopped after a previous telemetry setup
The traces stopped after a previous telemetry setup
An earlier setup that wrote Copilot telemetry to a local file leaves
COPILOT_OTEL_EXPORTER_TYPE=file in your environment. Copilot then writes everything to that file and sends nothing. Remove the variable from your shell start file, or set it to otlp-http.Copilot Chat in Visual Studio Code reports nothing
Copilot Chat in Visual Studio Code reports nothing
Start the editor with
langwatch code, or run langwatch instrument code and then open a new terminal before you start code. The extension reads the settings when the editor starts, so an editor that was already open keeps its old configuration.The traces have tokens but no text
The traces have tokens but no text
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT is false in your environment. Remove it, or set it to true, and start the tool again.The telemetry goes to the wrong workspace
The telemetry goes to the wrong workspace
Run
langwatch instrument copilot --project <id-or-slug> to move it to a team project, or langwatch instrument copilot --personal to move it back to your own.Authentication errors
Authentication errors
Check that the key is live and that the header reads
Authorization=Bearer <key>. An ingest key can write traces and nothing else, so a key that works for ingestion still fails on other endpoints.On a machine with a login, run langwatch login --device again to refresh the session.Manual OpenTelemetry setup
Use this when you cannot install the LangWatch command line tool. The variables below are the oneslangwatch instrument copilot writes for you.
GitHub Copilot CLI
ik-lw-…), which can create traces and nothing else. Keep a full project API key (sk-lw-…) out of the configuration of a coding agent: it can read and change your project data, and a coding agent has no use for that.
Copilot reports spans and metrics, and no separate log records, so there is no logs exporter to set. It sends over HTTP only: a grpc protocol value is accepted and then ignored.
Copilot Chat in Visual Studio Code
Same block, without the exporter type, and with the service name of the extension:COPILOT_OTEL_ENABLED takes precedence over the github.copilot.chat.otel.enabled setting of the extension, so the editor reports even with an empty settings file.
For a self-hosted instance, replace the endpoint with the address of your instance followed by /api/otel. Copilot appends /v1/traces and /v1/metrics on its own. Never write the per-signal path yourself.