github / github/copilot-cli

OTel: parallel task dispatch emits successful chat spans without response identity or usage

Open
#4,862 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

triage
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

Describe the bug

With metadata-only OpenTelemetry file export enabled, a prompt-mode run that dispatches two named subagents emits two chat spans that have successful status and a stop finish reason but omit all of:

  • gen_ai.response.id
  • gen_ai.response.model
  • gen_ai.usage.input_tokens
  • gen_ai.usage.output_tokens

This also occurs when the parent model is explicitly pinned, so it is not limited to --model auto.

The remaining parent and subagent chat spans in the same trace contain complete request/response model and usage fields.

Affected version

GitHub Copilot CLI 1.0.83 on macOS.

Steps to reproduce
  1. Enable the file exporter and force content capture off.
  2. Run prompt mode with streaming enabled and an explicitly pinned parent model.
  3. In one synthetic prompt, use the task tool twice with two named agent types and explicit models.
  4. Parse the resulting JSONL.

A representative trace contained one root invoke_agent, two execute_tool task spans, two nested named invoke_agent spans, and six chat spans. Every completed-response chat had the expected provider, request model, response model, response ID, and usage. Two root-level chats had request model, streaming=true, status code 0, and finish reason stop, but no response identity or usage.

Expected behavior

Each logical completed inference should contain independently reported response identity and usage when available. An abandoned, cancelled, routing, or retry attempt should not look like a successful completed chat: it should carry an explicit attempt/outcome classification or a non-success terminal status. Consumers must not synthesize gen_ai.response.model from the requested model.

Privacy

The reproduction used synthetic prompts with OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false. No prompt, response, repository, or credential content is included here.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the JSONL trace with metadata-only export and inspect the parallel task-dispatch path and root-level chat span emission. Done means each completed inference has response identity and usage when available, while abandoned or non-completed attempts are not recorded as successful chats.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
cli, observability
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.